Azure Cosmos DB belge veritabanını kullanmaXamarin.Forms
Azure Cosmos DB belge veritabanı, sorunsuz ölçek ve genel çoğaltma gerektiren uygulamalar için hızlı, yüksek oranda kullanılabilir ve ölçeklenebilir bir veritabanı hizmeti sunan JSON belgelerine düşük gecikmeli erişim sağlayan bir nosql veritabanıdır. bu makalede, bir Azure Cosmos DB belge veritabanını uygulamayla bütünleştirmek için Azure Cosmos DB .NET Standard istemci kitaplığının nasıl kullanılacağı açıklanmaktadır Xamarin.Forms .
Microsoft Azure Cosmos DB videosu
bir Azure Cosmos DB belge veritabanı hesabı, bir Azure aboneliği kullanılarak sağlanabilir. Her veritabanı hesabının sıfır veya daha fazla veritabanı olabilir. Azure Cosmos DB bir belge veritabanı, belge koleksiyonları ve kullanıcılar için bir mantıksal kapsayıcıdır.
Azure Cosmos DB belge veritabanı, sıfır veya daha fazla belge koleksiyonu içerebilir. Her belge koleksiyonu farklı bir performans düzeyine sahip olabilir ve sık erişilen koleksiyonlar için daha fazla aktarım hızı ve seyrek erişilen koleksiyonlar için daha az aktarım hızı sağlar.
Her belge koleksiyonu sıfır veya daha fazla JSON belgesinden oluşur. Bir koleksiyondaki belgeler şemadan muaf olduğundan aynı yapının veya alanların paylaşılması gerekmez. belgeler bir belge koleksiyonuna eklendikçe Cosmos DB otomatik olarak dizinlenebilir ve sorgulanabilecek hale gelir.
Geliştirme amacıyla bir belge veritabanı, öykünücü aracılığıyla da tüketilebilir. Öykünücü kullanarak, uygulamalar Azure aboneliği oluşturmadan veya herhangi bir ücret ödemeden yerel olarak geliştirilebilir ve test edilebilir. öykünücü hakkında daha fazla bilgi için, Azure Cosmos DB Emulator yerel olarak geliştirmekonusuna bakın.
bu makale ve buna eşlik eden örnek uygulama, görevlerin Azure Cosmos DB belge veritabanında depolandığı bir yapılacaklar listesi uygulamasını gösterir. Örnek uygulama hakkında daha fazla bilgi için bkz. örneği anlama.
Azure Cosmos DB hakkında daha fazla bilgi için Azure Cosmos DB belgelerinebakın.
Not
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Kurulum
Azure Cosmos DB belge veritabanını uygulamayla tümleştirme işlemi Xamarin.Forms aşağıdaki gibidir:
- Cosmos DB hesabı oluşturun. daha fazla bilgi için bkz. Azure Cosmos DB hesabı oluşturma.
- Azure Cosmos DB .NET Standard istemci kitaplığı NuGet paketini çözümdeki platform projelerine ekleyin .
usingMicrosoft.Azure.DocumentsMicrosoft.Azure.Documents.ClientMicrosoft.Azure.Documents.LinqCosmos DB hesabına erişecek sınıflara, ve ad alanları için yönergeler ekleyin.
bu adımları gerçekleştirdikten sonra, Azure Cosmos DB .NET Standard istemci kitaplığı, istekleri yapılandırmak ve belge veritabanına karşı yürütmek için kullanılabilir.
Not
Azure Cosmos DB .NET Standard istemci kitaplığı, taşınabilir bir sınıf kitaplığı (PCL) projesinde değil yalnızca platform projelerine yüklenebilir. bu nedenle, örnek uygulama, kod yinelemeyi önlemek için paylaşılan bir erişim Project (SAP). ancak, DependencyService sınıfı, platforma özgü projelerde yer alan Azure Cosmos DB .NET Standard istemci kitaplığı kodunu çağırmak için bir PCL projesinde kullanılabilir.
Azure Cosmos DB hesabını kullanma
DocumentClienttürü, Azure Cosmos DB hesabına erişmek için kullanılan uç noktayı, kimlik bilgilerini ve bağlantı ilkesini kapsüller ve hesap için istekleri yapılandırmak ve yürütmek için kullanılır. Aşağıdaki kod örneği, bu sınıfın bir örneğinin nasıl oluşturulacağını gösterir:
DocumentClient client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey);
oluşturucuya Cosmos DB urı ve birincil anahtar sağlanmalıdır DocumentClient . Bunlar Azure portalından elde edilebilir. daha fazla bilgi için bkz. Azure Cosmos DB hesaba Bağlan.
Veritabanı Oluşturma
Belge veritabanı, belge koleksiyonları ve kullanıcıları için mantıksal bir kapsayıcıdır ve Azure portalında veya yöntemi kullanılarak programlı bir şekilde oluşturulabilir DocumentClient.CreateDatabaseIfNotExistsAsync :
public async Task CreateDatabase(string databaseName)
{
...
await client.CreateDatabaseIfNotExistsAsync(new Database
{
Id = databaseName
});
...
}
CreateDatabaseIfNotExistsAsyncYöntemi Database , bir nesneyi Database özelliği olarak veritabanı adını belirten nesne ile bağımsız değişken olarak belirtir Id . CreateDatabaseIfNotExistsAsyncBu yöntem, yoksa veritabanını oluşturur veya zaten varsa veritabanını döndürür. Ancak, örnek uygulama, yöntemi tarafından döndürülen tüm verileri yoksayar CreateDatabaseIfNotExistsAsync .
Not
CreateDatabaseIfNotExistsAsyncYöntemi bir nesnesi döndürür Task<ResourceResponse<Database>> ve yanıtın durum kodu bir veritabanının oluşturulup oluşturulmayacağını veya var olan bir veritabanının döndürülüp döndürülmediğini tespit edilebilir.
Belge koleksiyonu oluşturma
Belge koleksiyonu, JSON belgeleri için bir kapsayıcıdır ve Azure portalında veya yöntemi kullanılarak programlı bir şekilde oluşturulabilir DocumentClient.CreateDocumentCollectionIfNotExistsAsync :
public async Task CreateDocumentCollection(string databaseName, string collectionName)
{
...
// Create collection with 400 RU/s
await client.CreateDocumentCollectionIfNotExistsAsync(
UriFactory.CreateDatabaseUri(databaseName),
new DocumentCollection
{
Id = collectionName
},
new RequestOptions
{
OfferThroughput = 400
});
...
}
CreateDocumentCollectionIfNotExistsAsyncYöntemi iki zorunlu bağımsız değişken gerektirir: bir veritabanı adı Uri , ve bir DocumentCollection nesnesi. DocumentCollectionNesnesi, adı özelliği ile belirtilen bir belge koleksiyonunu temsil eder Id . CreateDocumentCollectionIfNotExistsAsyncBu yöntem, yoksa belge koleksiyonunu oluşturur veya zaten varsa belge koleksiyonunu döndürür. Ancak, örnek uygulama, yöntemi tarafından döndürülen tüm verileri yoksayar CreateDocumentCollectionIfNotExistsAsync .
Not
CreateDocumentCollectionIfNotExistsAsyncYöntemi bir nesnesi döndürür Task<ResourceResponse<DocumentCollection>> ve yanıtın durum kodu bir belge koleksiyonunun oluşturulup oluşturulmadığını veya var olan bir belge koleksiyonu döndürülüp döndürülmediğini tespit edilebilir.
isteğe bağlı olarak, CreateDocumentCollectionIfNotExistsAsync yöntemi, RequestOptions Cosmos DB hesabına verilen istekler için belirtime seçenekleri kapsülleyen bir nesne de belirtebilir. RequestOptions.OfferThroughputÖzelliği, belge koleksiyonunun performans düzeyini tanımlamak için kullanılır ve örnek uygulamada, saniye başına 400 istek birimi olarak ayarlanır. Bu değer, koleksiyonun sık veya seyrek erişimli olmasına bağlı olarak arttırılmalıdır veya azaltılır.
Önemli
CreateDocumentCollectionIfNotExistsAsyncYöntemin, fiyatlandırma etkilerine sahip olan ayrılmış bir işleme ile yeni bir koleksiyon oluşturacağını unutmayın.
Belge koleksiyonu belgeleri alınıyor
Belge koleksiyonu içeriği bir belge sorgusu oluşturularak yürütülerek alınabilir. Yöntemiyle bir belge sorgusu oluşturulur DocumentClient.CreateDocumentQuery :
public async Task<List<TodoItem>> GetTodoItemsAsync()
{
...
var query = client.CreateDocumentQuery<TodoItem>(collectionLink)
.AsDocumentQuery();
while (query.HasMoreResults)
{
Items.AddRange(await query.ExecuteNextAsync<TodoItem>());
}
...
}
Bu sorgu, belirtilen koleksiyondaki tüm belgeleri zaman uyumsuz olarak alır ve belgeleri bir List<TodoItem> görüntülenmek üzere bir koleksiyona koyar.
CreateDocumentQuery<T>Yöntemi, Uri belgeler için Sorgulanacak koleksiyonu temsil eden bir bağımsız değişken belirtir. Bu örnekte, değişkeni, collectionLinkUri belgeleri alınacak belge koleksiyonunu temsil eden sınıfını belirten sınıf düzeyi bir alandır:
Uri collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
CreateDocumentQuery<T>Yöntemi, zaman uyumlu olarak yürütülen bir sorgu oluşturur ve bir nesne döndürür IQueryable<T> . Ancak, AsDocumentQuery yöntemi IQueryable<T> nesneyi IDocumentQuery<T> zaman uyumsuz olarak yürütülebilecek bir nesneye dönüştürür. Zaman uyumsuz sorgu, IDocumentQuery<T>.ExecuteNextAsyncIDocumentQuery<T>.HasMoreResults sorgudan döndürülen ek sonuçların olup olmadığını gösteren özelliği içeren, belge veritabanının sonuç sayfasını alan yöntemiyle yürütülür.
WhereBelge koleksiyonuna karşı sorguya filtreleme koşulu uygulayan sorguya bir yan tümce eklenerek, belgeler filtrelenmiş sunucu tarafında yer alabilir:
var query = client.CreateDocumentQuery<TodoItem>(collectionLink)
.Where(f => f.Done != true)
.AsDocumentQuery();
Bu sorgu, özelliği eşit olan koleksiyondaki tüm belgeleri alır Donefalse .
Belge koleksiyonuna belge ekleme
Belgeler Kullanıcı tanımlı JSON içeridir ve bu yöntemle bir belge koleksiyonuna eklenebilir DocumentClient.CreateDocumentAsync :
public async Task SaveTodoItemAsync(TodoItem item, bool isNewItem = false)
{
...
await client.CreateDocumentAsync(collectionLink, item);
...
}
CreateDocumentAsyncYöntemi, Uri belgenin ekleneceği koleksiyonu temsil eden bir bağımsız değişkeni ve object eklenecek belgeyi temsil eden bir bağımsız değişkeni belirtir.
Belge koleksiyonundaki bir belgeyi değiştirme
Belgeler, yöntemi ile bir belge koleksiyonunda değiştirilebilir DocumentClient.ReplaceDocumentAsync :
public async Task SaveTodoItemAsync(TodoItem item, bool isNewItem = false)
{
...
await client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(Constants.DatabaseName, Constants.CollectionName, item.Id), item);
...
}
ReplaceDocumentAsyncYöntemi Uri , koleksiyondaki belgeyi temsil eden bir bağımsız değişkeni ve object güncelleştirilmiş belge verilerini temsil eden bir bağımsız değişkeni belirtir.
Belge koleksiyonundan belge silme
Bir belge, yöntemiyle bir belge koleksiyonundan silinebilir DocumentClient.DeleteDocumentAsync :
public async Task DeleteTodoItemAsync(string id)
{
...
await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(Constants.DatabaseName, Constants.CollectionName, id));
...
}
DeleteDocumentAsyncYöntemi, Uri koleksiyonda silinmesi gereken belgeyi temsil eden bir bağımsız değişken belirtir.
Belge koleksiyonunu silme
Bir belge koleksiyonu, yöntemiyle bir veritabanından silinebilir DocumentClient.DeleteDocumentCollectionAsync :
await client.DeleteDocumentCollectionAsync(collectionLink);
DeleteDocumentCollectionAsyncYöntemi, Uri Silinecek belge koleksiyonunu temsil eden bir bağımsız değişken belirtir. Bu yöntemi çağırmak, koleksiyonda depolanan belgeleri de silecektir.
Bir veritabanını silme
bir veritabanı, yöntemi ile bir Cosmos DB veritabanı hesabından silinebilir DocumentClient.DeleteDatabaesAsync :
await client.DeleteDatabaseAsync(UriFactory.CreateDatabaseUri(Constants.DatabaseName));
DeleteDatabaseAsyncYöntemi, Uri Silinecek veritabanını temsil eden bir bağımsız değişken belirtir. Bu yöntemi çağırmak, veritabanında depolanan belge koleksiyonlarını ve belge koleksiyonlarında depolanan belgeleri de silecektir.
Özet
bu makalede Azure Cosmos DB belge veritabanını uygulamayla bütünleştirmek için Azure Cosmos DB .NET Standard istemci kitaplığı 'nın nasıl kullanılacağı açıklanmaktadır Xamarin.Forms . Azure Cosmos DB belge veritabanı, sorunsuz ölçek ve genel çoğaltma gerektiren uygulamalar için hızlı, yüksek oranda kullanılabilir ve ölçeklenebilir bir veritabanı hizmeti sunan JSON belgelerine düşük gecikmeli erişim sağlayan bir nosql veritabanıdır.
Örneği indirin