原文地址:https://blog.xamarin.com/write-apps-using-mongodb-xamarin/git
在設計應用時,最重要的決定之一就是要使用什麼類型的數據庫。github
不久以前,這種選擇僅限於像 SQL server 這樣的關係型數據庫。然而,如今 NoSql 數據庫出現了,好處是容許應用程序同時處理大量結構和和非結構化數據,可以容易的將數據建模爲對象和大規模跨服務器。mongodb
MongoDB 是一個 NoSQL 數據庫,以二進制 JSON 格式存儲文檔,已經在 Node.js 社區流行了一段時間。Azure Cosmos DB 是一個徹底管理的雲數據庫。只需點擊幾下就能夠配置一個與 MongoDB 100% 兼容的數據庫。數據庫
雖然 MongoDB 是由於 Node.js 解決方案而流行,但對於 .NET 驅動也是一個徹底支持和維護的。驅動程序是 .NET Standard 的實現,這意味着它與多個平臺兼容,包括 Xamarin。服務器
本文將向你展現如何使用 MongoDB 建立你的第一個 Xamarin 應用!咱們會使用 LINQ 查詢,插入和刪除數據。在文章結束時,你會有須要建立 MongoDB 給力的 Xamarin 應用的信息。app
你能夠在這個 GitHub 倉庫找到全部示例的代碼。異步
設置環境async
爲了教學目的,咱們的 MongoDB 將託管在 Azure Cosmos DB。函數
首先,獲取 Azure Cosmos DB 實例設置和準備使用,跟着 Azure Cosmos DB 文檔頁的說明。若是你尚未設置,經過這個鏈接建立一個 Azure 免費帳號。測試
MongoDB.NET 庫容許 Xamarin 應用和 MongoDB 通訊。經過 Visual Studio 或者 Visual Studio for Mac 的 NuGet 包管理搜索 MongoDB.NET 驅動並添加到你的你全部的項目。
鏈接 MongoDB
接下來,咱們的應用須要鏈接到 MongoDB。使用 MongoClient 對象獲得 IMongoDatabase 的引用。而後使用 IMongoDatabase 對象得到 IMongoCollection<T> 類的引用。(請參閱示例項目的鏈接代碼的例子。)
瞭解鏈接過程,有助於理解 MongoDB 如何排列數據。
上面建立的 Azure Cosmos DB 帳號時第一級組織。帳號下面有一個或多個數據庫(databases)。而後一個或更多的集合(collections)構成了數據庫。最後一級,文檔(documents)存在於集合中。
爲了讀寫文檔,咱們的應用將使用 IMongoCollection<T> 類。其中泛型時咱們的模型或者是文檔的強類型表現。
查詢數據
咱們使用 IMongoCollection<T> 查詢集合中的文檔。在移動應用中,異步查詢是很是重要的,能夠避免阻塞 UI 線程並提供更好的用戶體驗。.NET的一個偉大的特性是 LINQ 查詢。LINQ 幫助開發者以易於理解的語法編寫複雜的查詢語句,幸運的是,MongoDB 驅動徹底支持 LINQ 查詢。
返回集合中每一個文檔的代碼以下所示:
public async Task<List<ToDoItem>> GetAllItems() { var allItems = await ToDoItemsCollection .Find(new BsonDocument()) .ToListAsync(); return allItems; }
上面要注意的是在 Find 函數中是 BsonDocument。指示一個空過濾器並須要返回任何文檔。
AsQueryable() 擴展提供了支持 LINQ 擴展的接口,能夠利用過濾器、skip 和 take 等語句。
寫入數據
MongoDB.NET 庫也提供了一個簡單的異步數據修改 API。
像這樣插入數據:
public async Task InsertItem(ToDoItem item) { await ToDoItemsCollection.InsertOneAsync(item); }
使用下面的代碼更新整個文檔:
public async Task UpdateItem(ToDoItem item) { await ToDoItemsCollection.ReplaceOneAsync(tdi => tdi.Id == item.Id, item); }
當用於裝飾類和屬性時 MongoDB 驅動定義了特性來提供附加信息。例如 [BsonId] 特性指定類中的哪一個屬性應該用作主鍵或者標識 instance/document。
總結
MongoDB 時一個衆所周知並普遍使用的文檔數據庫。Azure Cosmos DB 和 .NET MongoDB 驅動的結合使 Xamarin 應用成爲一個可行的解決方案,這對 .NET 移動開發者來講時比較熟悉的。
想了解更多 MongoDB 的內容,請參閱這裏。閱讀更多關於 Cosmos DB 上 MongoDB 的信息在這裏。這裏提供了示例程序的測試驅動。