想象一下,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连接起来:
点击(此处)折叠或打开我们的模型是StoreInfo,代表MyTea公司的商店详细信息。
- //copy details from your Keys section here
- public static readonly string EndpointUri = "https://my-tea-company.documents.azure.com:443/";
- public static readonly string PrimaryKey = "SKAF9lv43HeXicHgH-----------2yiFff7HPBOyFV0A==";
- public static readonly string DatabaseName = "my-tea-company";
- public static readonly string CollectionName = "my-tea-company";
StoreInfoManager是围绕IDocumentDBService的辅助类。 这个类帮助我们对我们的数据执行CRUD操作。 DocumentDBService类实现了IDocumentDBService,并使用Constants.cs文件中提供的详细信息来执行这些CRUD操作。
点击(此处)折叠或打开
- class DocumentDBService : IDocumentDBService
- {
- DocumentClient client;
- Uri collectionLink;
- public DocumentDBService()
- {
- client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey);
- collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
- }
- ...
- }
开始全球化
在MyTea公司使用Azure Cosmos DB和Xamarin部署其应用程序之后,他们在西雅图华盛顿州看到了巨大的机会。 他们决定在那里开设一家商店,并通过现有应用开始为客户服务。 几乎没有更改,应用程序可以配置为在该地理区域中为用户提供服务。 首先,他们需要将商店和产品数据复制到新的Azure地区,这可以从Azure Portal完成。
一旦数据被复制,使用ConnectionPolicy最近的Azure Regions可以设置为PreferredLocations,以保持低延迟。
点击(此处)折叠或打开
- public DocumentDBService()
- {
- ConnectionPolicy connectionPolicy = new ConnectionPolicy();
- connectionPolicy.PreferredLocations.Add(LocationNames.WestUS);
- client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey, connectionPolicy);
- collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
- }
通过进行两个简单的更改,整个解决方案可在全新的区域中使用。 明天,如果MyTeaCompany想在欧洲开设一家商店,他们可以通过几次点击来扩大他们对该地区的影响力。
结论
Azure Cosmos DB可以轻松构建全球分布式,可扩展,高可用性和低延迟的数据解决方案,可以轻松地与Xamarin手机应用程序集成。 您可以在查看本文中描述的完整样本,并可在找到Azure Cosmos DB的文档。您还可以在我们的文档数据库中存储数据指南,了解更多信息。