využití databáze dokumentů Azure Cosmos DB vXamarin.Forms
Azure Cosmos DB databáze dokumentů je databáze NoSQL, která poskytuje přístup s nízkou latencí k dokumentům JSON, nabízí rychlou, vysoce dostupnou a škálovatelnou databázovou službu pro aplikace, které vyžadují bezproblémové škálování a globální replikaci. v tomto článku se dozvíte, jak pomocí klientské knihovny Azure Cosmos DB .NET Standard integrovat do aplikace Azure Cosmos DB databázi dokumentů Xamarin.Forms .
video Cosmos DB Microsoft Azure
účet databáze dokumentů Azure Cosmos DB se dá zřídit pomocí předplatného Azure. Každý databázový účet může mít nula nebo více databází. databáze dokumentů v Azure Cosmos DB je logický kontejner pro kolekce dokumentů a uživatele.
databáze dokumentu Azure Cosmos DB může obsahovat nula nebo více kolekcí dokumentů. Každá kolekce dokumentů může mít jinou úroveň výkonu, což umožňuje zadat větší propustnost pro často používané kolekce a menší propustnost pro zřídka používané kolekce.
Každá kolekce dokumentů se skládá z nuly nebo více dokumentů JSON. Dokumenty v kolekci jsou bez schématu, takže je nemusíte sdílet se stejnou strukturou nebo poli. když se do kolekce dokumentů přidají dokumenty, Cosmos DB je automaticky indexovat a budou k dispozici pro dotazování.
Pro účely vývoje lze databázi dokumentů také spotřebovat prostřednictvím emulátoru. Pomocí emulátoru se aplikace dají vyvíjet a testovat místně, aniž byste museli vytvářet předplatné Azure ani náklady. další informace o emulátoru naleznete v tématu vývoj místně pomocí Azure Cosmos DB Emulator.
tento článek a doprovodná ukázková aplikace znázorňuje aplikaci seznamu úkolů, kde jsou úkoly uložené v databázi dokumentů Azure Cosmos DB. Další informace o ukázkové aplikaci najdete v tématu Princip ukázky.
další informace o Azure Cosmos DB najdete v dokumentaci k Azure Cosmos DB.
Poznámka
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
Nastavení
postup pro integraci databáze dokumentů Azure Cosmos DB do Xamarin.Forms aplikace je následující:
- vytvořte účet Cosmos DB. další informace najdete v tématu vytvoření účtu Azure Cosmos DB.
- přidejte NuGet balíček .NET Standard klientské knihovny Azure Cosmos DB do projektů platforem v řešení.
- přidejte
usingdirektivy proMicrosoft.Azure.DocumentsMicrosoft.Azure.Documents.ClientMicrosoft.Azure.Documents.Linqobory názvů, a do tříd, které budou mít přístup k účtu Cosmos DB.
po provedení tohoto postupu lze pomocí klientské knihovny Azure Cosmos DB .NET Standard nakonfigurovat a spustit požadavky na databázi dokumentů.
Poznámka
klientská knihovna Azure Cosmos DB .NET Standard může být nainstalována pouze do projektů platforem a ne do přenositelného projektu knihovny tříd (PCL). ukázková aplikace proto představuje sdílený přístup Project (SAP), aby se předešlo duplicitám kódu. DependencyServicetřída však může být použita v projektu PCL k vyvolání Azure Cosmos DB .NET Standard kód klientské knihovny obsažené v projektech specifických pro platformu.
spotřebovává se Azure Cosmos DB účet.
DocumentClienttyp zapouzdřuje koncový bod, přihlašovací údaje a zásady připojení používané pro přístup k účtu Azure Cosmos DB a slouží ke konfiguraci a provádění požadavků na účet. Následující příklad kódu ukazuje, jak vytvořit instanci této třídy:
DocumentClient client = new DocumentClient(new Uri(Constants.EndpointUri), Constants.PrimaryKey);
k konstruktoru musí být poskytnutý Cosmos DB identifikátor Uri a primární klíč DocumentClient . Ty se dají získat na webu Azure Portal. další informace najdete v tématu Připojení k účtu Azure Cosmos DB.
Vytvoření databáze
Databáze dokumentů je logický kontejner pro kolekce dokumentů a uživatele a je možné ho vytvořit na webu Azure Portal nebo programově pomocí DocumentClient.CreateDatabaseIfNotExistsAsync metody:
public async Task CreateDatabase(string databaseName)
{
...
await client.CreateDatabaseIfNotExistsAsync(new Database
{
Id = databaseName
});
...
}
CreateDatabaseIfNotExistsAsyncMetoda Určuje Database objekt jako argument s objektem, který určuje Database název databáze jako Id vlastnost. CreateDatabaseIfNotExistsAsyncMetoda vytvoří databázi, pokud neexistuje, nebo vrátí databázi, pokud již existuje. Ukázková aplikace však ignoruje všechna data vrácená CreateDatabaseIfNotExistsAsync metodou.
Poznámka
CreateDatabaseIfNotExistsAsyncMetoda vrátí Task<ResourceResponse<Database>> objekt a stavový kód odpovědi lze zkontrolovat a zjistit, zda byla databáze vytvořena nebo byla vrácena existující databáze.
Vytvoření kolekce dokumentů
Kolekce dokumentů je kontejner pro dokumenty JSON a je možné ho vytvořit na webu Azure Portal nebo programově pomocí DocumentClient.CreateDocumentCollectionIfNotExistsAsync metody:
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
});
...
}
CreateDocumentCollectionIfNotExistsAsyncMetoda vyžaduje dva povinné argumenty – název databáze zadaný jako a Uri a DocumentCollection objekt. DocumentCollectionObjekt představuje kolekci dokumentů, jejíž název je zadán s Id vlastností. CreateDocumentCollectionIfNotExistsAsyncMetoda vytvoří kolekci dokumentů, pokud neexistuje, nebo kolekci dokumentů vrátí, pokud již existuje. Ukázková aplikace však ignoruje všechna data vrácená CreateDocumentCollectionIfNotExistsAsync metodou.
Poznámka
CreateDocumentCollectionIfNotExistsAsyncMetoda vrátí Task<ResourceResponse<DocumentCollection>> objekt a stavový kód odpovědi lze zkontrolovat a zjistit, zda byla kolekce dokumentů vytvořena nebo byla vrácena existující kolekce dokumentů.
volitelně CreateDocumentCollectionIfNotExistsAsync může metoda také určit RequestOptions objekt, který zapouzdřuje možnosti, které lze zadat pro žádosti vydané Cosmos DBmu účtu. Tato RequestOptions.OfferThroughput vlastnost slouží k definování úrovně výkonu kolekce dokumentů a v ukázkové aplikaci je nastavena na 400 jednotek žádostí za sekundu. Tato hodnota by se měla zvýšit nebo snížit v závislosti na tom, jestli bude kolekce často nebo zřídka dostupná.
Důležité
Všimněte si, že CreateDocumentCollectionIfNotExistsAsync Metoda vytvoří novou kolekci s vyhrazenou propustností, která bude mít dopad na ceny.
Načítání dokumentů kolekce dokumentů
Obsah kolekce dokumentů lze načíst vytvořením a spuštěním dotazu dokumentu. Vytvoří se dotaz na dokument s DocumentClient.CreateDocumentQuery metodou:
public async Task<List<TodoItem>> GetTodoItemsAsync()
{
...
var query = client.CreateDocumentQuery<TodoItem>(collectionLink)
.AsDocumentQuery();
while (query.HasMoreResults)
{
Items.AddRange(await query.ExecuteNextAsync<TodoItem>());
}
...
}
Tento dotaz asynchronně načte všechny dokumenty ze zadané kolekce a umístí dokumenty do List<TodoItem> kolekce k zobrazení.
CreateDocumentQuery<T>Metoda Určuje Uri argument reprezentující kolekci, na kterou by se měly dotazovat dokumenty. V tomto příkladu collectionLink je proměnná pole na úrovni třídy, které určuje Uri , který představuje kolekci dokumentů pro načtení dokumentů:
Uri collectionLink = UriFactory.CreateDocumentCollectionUri(Constants.DatabaseName, Constants.CollectionName);
CreateDocumentQuery<T>Metoda vytvoří dotaz, který je spuštěn synchronně, a vrátí IQueryable<T> objekt. AsDocumentQueryMetoda však převede IQueryable<T> objekt na IDocumentQuery<T> objekt, který lze spustit asynchronně. Asynchronní dotaz je proveden s IDocumentQuery<T>.ExecuteNextAsync metodou, která načte další stránku výsledků z databáze dokumentu s vlastností, která IDocumentQuery<T>.HasMoreResults Určuje, zda jsou z dotazu vráceny další výsledky.
Dokumenty lze filtrovat na straně serveru zahrnutím Where klauzule do dotazu, který pro dotaz na kolekci dokumentů používá predikát filtrování:
var query = client.CreateDocumentQuery<TodoItem>(collectionLink)
.Where(f => f.Done != true)
.AsDocumentQuery();
Tento dotaz načte všechny dokumenty z kolekce, jejichž Done vlastnost je rovna false .
Vložení dokumentu do kolekce dokumentů
Dokumenty jsou uživatelem definovaný obsah JSON a lze jej vložit do kolekce dokumentů pomocí DocumentClient.CreateDocumentAsync metody:
public async Task SaveTodoItemAsync(TodoItem item, bool isNewItem = false)
{
...
await client.CreateDocumentAsync(collectionLink, item);
...
}
CreateDocumentAsyncMetoda Určuje Uri argument reprezentující kolekci, do které má být vložen dokument, a object argument reprezentující dokument, který má být vložen.
Nahrazení dokumentu v kolekci dokumentů
Dokumenty lze v kolekci dokumentů nahradit DocumentClient.ReplaceDocumentAsync metodou:
public async Task SaveTodoItemAsync(TodoItem item, bool isNewItem = false)
{
...
await client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(Constants.DatabaseName, Constants.CollectionName, item.Id), item);
...
}
ReplaceDocumentAsyncMetoda Určuje Uri argument reprezentující dokument v kolekci, který by měl být nahrazen, a object argument, který představuje aktualizovaná data dokumentu.
Odstranění dokumentu z kolekce dokumentů
Dokument lze odstranit z kolekce dokumentů pomocí DocumentClient.DeleteDocumentAsync metody:
public async Task DeleteTodoItemAsync(string id)
{
...
await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(Constants.DatabaseName, Constants.CollectionName, id));
...
}
DeleteDocumentAsyncMetoda Určuje Uri argument reprezentující dokument v kolekci, který má být odstraněn.
Odstranění kolekce dokumentů
Kolekci dokumentů lze odstranit z databáze pomocí DocumentClient.DeleteDocumentCollectionAsync metody:
await client.DeleteDocumentCollectionAsync(collectionLink);
DeleteDocumentCollectionAsyncMetoda Určuje Uri argument reprezentující kolekci dokumentů, která má být odstraněna. Všimněte si, že při vyvolání této metody budou odstraněny také dokumenty uložené v kolekci.
Odstranění databáze
databázi je možné odstranit z Cosmos DB databázového účtu pomocí DocumentClient.DeleteDatabaesAsync metody:
await client.DeleteDatabaseAsync(UriFactory.CreateDatabaseUri(Constants.DatabaseName));
DeleteDatabaseAsyncMetoda Určuje Uri argument reprezentující databázi, která má být odstraněna. Všimněte si, že při vyvolání této metody dojde také k odstranění kolekcí dokumentů uložených v databázi a dokumentů uložených v kolekcích dokumentů.
Souhrn
tento článek vysvětluje, jak pomocí Azure Cosmos DB .NET Standard klientské knihovny integrovat Azure Cosmos DB databázi dokumentů do Xamarin.Forms aplikace. Azure Cosmos DB databáze dokumentů je databáze NoSQL, která poskytuje přístup s nízkou latencí k dokumentům JSON, nabízí rychlou, vysoce dostupnou a škálovatelnou databázovou službu pro aplikace, které vyžadují bezproblémové škálování a globální replikaci.
Stažení ukázky