Azure Blob存储 - Xamarin应用bet188地址的简单存储后端

用红色点的图像 - 旨在看起来很想

有些应用bet188地址需要相当多的内容,这是相当静态的,而是随着时间的推移而变化,然后该应用应该调整并向用户提供新内容。让我们假设我们想要一个为我们提供带引号和他们的作者的应用bet188地址。我们可以将引号添加到我们的应用bet188地址,但随时我们想要更新应用bet188地址,我们必须将我们的应用bet188地址重新部署到商店。这可以从不便那种需要技术专长更新应用bet188地址的不便,因为简单地纠正如逗号如此简单的事情。因此,很明显,在这些情况下,我们希望将内容与应用bet188地址本身分开。

托管内容不需要在服务器上运行任何逻辑。我们不需要任何其他服务比简单的文件共享。只有一个或两个关于安全等的额外要求。但后来更多。这正是什么 Azure Blob存储 can provide us with.

设置Blob存储

您必须拥有Azure帐户来创建Blob存储,步骤因此,您可以找到 这里。在Azure上创建一个Blob存储,在容器下,如果您还没有这样做,请创建一个容器,然后将数据上传到它。在此示例中,我们将上传单个JSON文件。

显示带有一个json文件的blobstorage容器

在真实应用bet188地址中,我们还可以提供包含视频和其他静态文件的多个其他文件。但是对于这个简单的演示,我们将坚持一个孤独的JSON文件。我们可以通过调用URL来访问内容:

使用邮递员获得申请

在公共服务器上有一些东西始终提出有关安全性和各种的问题。所以让我们看看它们。

安全

所以让我们从你开箱即用的东西开始。最简单的安全性是您的数据是公共的。喜欢在网站上,但为您的应用bet188地址。默认情况下,您可以限制对Blob存储的匿名访问,如下所示:

  • 只读容器:这将允许每个人在容器级别读取I.E.“查看目录”并列出内部的所有斑点。
  • 只读Blob:在这里,呼叫者将不得不知道他想要打开的斑点,并且仅限于读取Blob存储本身。
  • 没有读访问匿名访问:这将仅限访问对经过身份验证的派对的访问权限。

在我们的示例中,我们将坚持匿名Blob访问权限。但如果您有兴趣添加一些额外的安全性,请务必查看 Azure存储安全指南 这解释了使用Azure Active Directory(Azure AD)的共享键从共享键的不同身份验证方法来保护数据的访问。摘要意味着Blob Storage不仅可以快速方便地开始,而且也可以修改以添加一些严重的保护层。

客户端

欺负

在客户端上,我们将希望在我们的应用bet188地址中使用托管资源并使用它。您可以使用.NET标准库中的那种相当简单 JSON.NET. as follows:

string quotesJson;
using (var httpClient = new HttpClient())
{
    var response = await httpClient.GetAsync("//gnabberonlinestorage.blob.core.windows.net/alpha/quotes.json");
    quotesJson = await response.Content.ReadAsStringAsync();
}
_quotes = JsonConvert.DeserializeObject<List<QuoteInfo>>(quotesJson);

While the above sample works and will get us our data it is not really smart, it will always pull the entire file even if nothing has changed. Fortunately, Azure Blob Storage supports ETags which allows us to be smarter when creating the call, by adding the If-None-Match header to our request as follows:

public async Task Init()
{
    if (_quote != null) return;

    IsBusy = true;
    string quotesJson;
    using (var httpClient = new HttpClient())
    {
        if(!string.IsNullOrEmpty(CurrentEtagVersion)) httpClient.DefaultRequestHeaders.Add("If-None-Match", CurrentEtagVersion);
        var response = await httpClient.GetAsync("//gnabberonlinestorage.blob.core.windows.net/alpha/quotes.json");

        quotesJson = response.StatusCode == HttpStatusCode.NotModified
            ? ReadQuotesFromCache()
            : await response.Content.ReadAsStringAsync();

        UpdateLocalCache(response.Headers.ETag, quotesJson);
    }
    _quotes = JsonConvert.DeserializeObject<List<QuoteInfo>>(quotesJson);

    PickAndSetQuote();
    IsBusy = false;
}

如果本地和远程ETAG匹配,我们将不会收到任何带有呼叫的任何数据,让我们带来非常小的数据足迹。处理缓存的代码如下所示。请注意,用于访问首选项XAMARIN.ELSENCESSENCES:

public string CurrentEtagVersion => Preferences.Get(EtagKey, string.Empty);

private void UpdateLocalCache(EntityTagHeaderValue eTag, string quotesJson)
{
    // Only update the cache if we need to
    if (eTag == null || CurrentEtagVersion == eTag.Tag) return;
    Preferences.Set(EtagKey, eTag.Tag);
    File.WriteAllText(_quotesFilename, quotesJson);
}

private string ReadQuotesFromCache()
{
    if (!File.Exists(_quotesFilename)) return string.Empty;
    return File.ReadAllText(_quotesFilename);
}

我会用这个样本留下它,但由于我们已经将数据存储在本地缓存中,我们也可以考虑将此应用bet188地址完全脱机。使用我们已经使用的Xamarin Essentials,我们可以检查我们是否有网络连接以及什么样的连接。此信息允许我们决定我们是否想要/可以访问远程存储或相当加载初始缓存的数据。

您可以找到整个客户端示例代码 GitHub..

结论

在此帖子中,我们了解如何使用Azure Blob存储作为后端服务,以托管应用bet188地址的内容,而无需实现任何Web服务器。您可以将安全图层添加到存储中。跟踪后端的更改通过HTTP ETAG提供。

但这会花多少钱?可能少于你认为但是看看 Blob Storage. 定价以获得确切的号码。

Updated: