想象一下,MyTea公司是印度浦那当地着名的业务,从该市十个商店向该地区供应茶叶。 他们提供从大吉岭到阿萨姆邦和泰国到韩国的各种各样的茶。 他们决定他们希望把他们的业务提升到一个新的水平,并在互联网上创造一个全球性的存在。

今天,我们将看看如何在新的Xamarin手机应用程序中利用Azure Cosmos DB数据库解决方案,帮助他们在全球平台上利用更广泛的客户群。

构建Azure Cosmos DB解决方案

Azure Cosmos DB是针对您所有数据需求的可扩展的,全球可分配的解决方案。 它支持不同的模型,包括Graph,Table和DocumentDb,API可用于不同的技术,如.NET,Python和Java。 这使它成为MyTea公司所有数据需求的完美解决方案。

您可以使用Azure Cosmos DB模拟器在本地开发和测试应用程序。 然而,对于今天的博文,我们将使用我们的Microsoft Azure订阅。

创建一个Azure Cosmos DB帐户

前往Azure Portal,并使用“+”符号并导航到数据库> Azure Cosmos DB创建Azure Cosmos DB帐户。 一旦创建,点击“键”并注意细节,因为在将来的步骤将需要这些。

在创建集合时,决定分区密钥有助于跨服务器或分区跨越数据。 仔细选择您的请求单位(RUU)也很重要,这可能在预期的性能中起主要作用。 请求单位计算器上的指南是帮助您衡量您的要求的重要资源。

Xamarin.Forms手机应用

由于我们针对多个平台,Xamarin.Forms是MyTeaCompany的完美选择,使我们能够最大限度地提高代码共享,同时仍然能够使用每个平台的本机控件和功能。

创建一个Xamarin.Forms项目

在Visual Studio 2017中,通过选择新建项目...>跨平台>跨平台应用程序(Xamarin)>空白/共享项目来创建Xamarin.Forms解决方案。 我们将要将Microsoft.Azure.DocumentDB.Core NuGet包添加到项目中,以便使用负责与Cosmos DB服务进行通信的包。

定义端点常数

我们需要在Constants.cs文件中定义端点,以便将Xamarin.Forms应用程序与Cosmos DB连接起来:

 点击(此处)折叠或打开
		
  1. //copy details from your Keys section here
  2. public static readonly string EndpointUri = "https://my-tea-company.documents.azure.com:443/";
  3. public static readonly string PrimaryKey = "SKAF9lv43HeXicHgH-----------2yiFff7HPBOyFV0A==";
  4. public static readonly string DatabaseName = "my-tea-company";
  5. public static readonly string CollectionName = "my-tea-company";
我们的模型是StoreInfo,代表MyTea公司的商店详细信息。

StoreInfoManager是围绕IDocumentDBService的辅助类。 这个类帮助我们对我们的数据执行CRUD操作。 DocumentDBService类实现了IDocumentDBService,并使用Constants.cs文件中提供的详细信息来执行这些CRUD操作。

		
		

点击(此处)折叠或打开

  1. class DocumentDBService : IDocumentDBService
  2. {
  3.    DocumentClient client;
  4.    Uri collectionLink;
  5.    public DocumentDBService()
  6.    {
  7.       client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey);
  8.       collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
  9.    }
  10. ...
  11. }

开始全球化

在MyTea公司使用Azure Cosmos DB和Xamarin部署其应用程序之后,他们在西雅图华盛顿州看到了巨大的机会。 他们决定在那里开设一家商店,并通过现有应用开始为客户服务。 几乎没有更改,应用程序可以配置为在该地理区域中为用户提供服务。 首先,他们需要将商店和产品数据复制到新的Azure地区,这可以从Azure Portal完成。

一旦数据被复制,使用ConnectionPolicy最近的Azure Regions可以设置为PreferredLocations,以保持低延迟。

		
		

点击(此处)折叠或打开

  1. public DocumentDBService()
  2. {
  3.    ConnectionPolicy connectionPolicy = new ConnectionPolicy();
  4.    connectionPolicy.PreferredLocations.Add(LocationNames.WestUS);
  5.    client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey, connectionPolicy);
  6.    collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
  7. }

通过进行两个简单的更改,整个解决方案可在全新的区域中使用。 明天,如果MyTeaCompany想在欧洲开设一家商店,他们可以通过几次点击来扩大他们对该地区的影响力。

结论

Azure Cosmos DB可以轻松构建全球分布式,可扩展,高可用性和低延迟的数据解决方案,可以轻松地与Xamarin手机应用程序集成。 您可以在查看本文中描述的完整样本,并可在找到Azure Cosmos DB的文档。您还可以在我们的文档数据库中存储数据指南,了解更多信息。