想象一下,MyTea公司是印度浦那當地着名的業務,從該市十個商店向該地區供應茶葉。 他們提供從大吉嶺到阿薩姆邦和泰國到南韓的各種各樣的茶。 他們決定他們希望把他們的業務提升到一個新的水準,并在網際網路上創造一個全球性的存在。
今天,我們将看看如何在新的Xamarin手機應用程式中利用Azure Cosmos DB資料庫解決方案,幫助他們在全球平台上利用更廣泛的客戶群。
Azure Cosmos DB是針對您所有資料需求的可擴充的,全球可配置設定的解決方案。 它支援不同的模型,包括Graph,Table和DocumentDb,API可用于不同的技術,如.NET,Python和Java。 這使它成為MyTea公司所有資料需求的完美解決方案。
您可以使用Azure Cosmos DB模拟器在本地開發和測試應用程式。 然而,對于今天的博文,我們将使用我們的Microsoft Azure訂閱。
前往Azure Portal,并使用“+”符号并導航到資料庫> Azure Cosmos DB建立Azure Cosmos DB帳戶。 一旦建立,點選“鍵”并注意細節,因為在将來的步驟将需要這些。
在建立集合時,決定分區密鑰有助于跨伺服器或分區跨越資料。 仔細選擇您的請求機關(RUU)也很重要,這可能在預期的性能中起主要作用。 請求機關電腦上的指南是幫助您衡量您的要求的重要資源。

由于我們針對多個平台,Xamarin.Forms是MyTeaCompany的完美選擇,使我們能夠最大限度地提高代碼共享,同時仍然能夠使用每個平台的本機控件和功能。
在Visual Studio 2017中,通過選擇建立項目...>跨平台>跨平台應用程式(Xamarin)>空白/共享項目來建立Xamarin.Forms解決方案。 我們将要将Microsoft.Azure.DocumentDB.Core NuGet包添加到項目中,以便使用負責與Cosmos DB服務進行通信的包。
我們需要在Constants.cs檔案中定義端點,以便将Xamarin.Forms應用程式與Cosmos DB連接配接起來:
//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";
我們的模型是StoreInfo,代表MyTea公司的商店詳細資訊。
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想在歐洲開設一家商店,他們可以通過幾次點選來擴大他們對該地區的影響力。