2011-12-30 105 views
9

Windows 8 Metro應用程序應該如何連接到中央數據庫?Windows 8 Metro應用程序應該如何連接到中央數據庫?

  • 我讀過關於本地存儲的內容,但是我還沒有讀到關於連接到中央數據庫的任何信息。
  • 很顯然,這個架構設計決策需要支持斷開的場景。
  • WCF Web服務似乎有意義。
    • 但即使他們這樣做是有意義的,我們應該真正創造了所有的讀/寫操作分開的方法呢?
    • 或者是OData WCF服務的路要走嗎?
  • 看起來平板軟件架構應該能夠借鑑智能手機軟件架構(但我對這兩者都是新手)。
  • 微軟是否在其app samples中提出過任何建議?
+0

有,因爲你的任何改變發生已經發表了你的問題和答案?您能否建議參考(s)任何重大變化?謝謝。 – NoChance 2014-02-17 10:43:42

回答

13

看來,其他人都在問的Microsoft Developer Forums類似的問題。

這裏是我發現:

According to Tim Heuer

...你不能直接有一個SQL數據庫嵌入到你的應用程序,或使用 類似ADO.NET。這更像是一個異步/服務 基礎架構。所以如果你的數據是通過服務公開的,那麼當然你可以用這種方式連接。還有一些其他的輕質 方法,您可以使用本地存儲以及使用的東西像 Windows.Storage命名空間(這類似於 .NET獨立存儲)。

Morten Nielsen agrees

可以使用的HttpClient來從網上下載很多漂亮的事。 爲什麼不配置WCF服務將數據作爲JSON返回,並且 使用DataContractJsonSerializer來反序列化結果?

此外,Tim Heuer cautions

...請注意,雖然真棒,CodePlex上的SQLWinRT項目是一個 包裝與經典的SQLite引擎......它採用 的API,可以更好地溝通目前未通過商店驗證。


Generic Object Storage Helper for WinRTWinRTFile Based Database似乎有一些承諾。

Daniel Stolt raises some good points

這真棒,有建設的OData客戶和 其他REST客戶良好的支持 - 但這只是地址的在線情況。 Windows.Storage的「結構化」部分是一個非常有限的模型,實質上僅限於名稱/值對,除了大多數基本方案之外的其他所有方面都不足。是的,有當地的文件存儲,當然這是很好的 。 但是迫使每個應用程序開發人員在本地文件存儲上創建自己的 DBMS將不會削減它,尤其是 ,其中所有的System.Data都已從配置文件中刪除。如果本地的 文件存儲對於大多數設備應用程序來說已經足夠,那麼像現在的 SQLCE就沒有用了。而SQLCE顯然具有 的用途,並且對於偶爾連接的設備應用程序偶爾發揮了非常重要的作用。還需要與服務器端數據庫(如SQL Azure)進行同步,這主要是爲了能夠在設備之間漫遊數據。 WinRT中的漫遊存儲模式有 ,但它與上面提到的本地存儲共享相同的限制 ,並且在此之上的容量非常有限(目前爲30KB,如果提供內存的話)爲 。簡單地說, 除了最簡單的漫遊數據需求之外都不夠用。同樣, 強制每個應用程序開發人員設計和實施她自己的 同步解決方案非常糟糕。你可以做得更好來啓用 開發者。


很多人感到失望的是System.Data命名空間不支持WinRT中。

Richard Bethell said

我甚至不有這句話。這是驚人的。 當他們想迫使你抽象中間件爲 數據庫連接 - 我不同意,但我可以準確理解 的理由。我甚至可以看到像那樣發展的途徑。

但沒有System.Data ....在所有?你甚至不知道你對我們做了什麼 ?

什麼System.Data所能做的,只是其對於SQL供應商之外, 的OleDb和其他定製的供應商,如甲骨文,是提供豐富的 抽象的XML數據集中,使您可以非常快速地構建了面向 數據爲本的服務建築。例如,我可以使用SOAP或WCF輕鬆創建一個Web服務,然後 返回數據集或數據表,然後直接使用這些對象並輕鬆地使用 。能夠做到這一點,即使沒有可用的直接數據連接,也可以非常快速地構建n層體系結構。

沒有System.Data和DataViews,DataTables等的力量,這個 變得更加困難。當然,您可以自定義創建結構,將數據放在 那裏,然後爲結構提供服務,並使用Linq執行任何排序,篩選等等,您想要執行的操作....但它最終會成爲 工作的兩倍,並且使代碼重用困難得多。這也意味着使用我們現有的 面向服務的架構是不可能的(沒有大 檢修。)

System.Data的撤離是開發商大的事情以應對 作爲打印機對象在VB6的損失到vb.net 1.0是。 很難理解,在這種情況下爲什麼有必要 - 重新啓用它在Metro配置文件中不可能是技術 該產品的難度,可以嗎?

它是足夠有價值的我會認真考慮包括Mono的 System.Data類爲我創造的任何應用程序的一部分(這顯然 必須是開源的。)

+1

哈哈。我剛讀完該論壇帖子。 – Arrow 2012-06-06 19:17:29

3

我認爲這是另一個那些「看情況」的問題......

第一個也是最明顯的問題是,它非常依賴於在應用程序運行是否上下文,採取第一種情況「顯然......支持...斷開連接」實際上是真的 - 如果應用程序是一個內部公司的應用程序,那很可能不會在這種情況下沒有數據庫==不工作。

其次,你可以看看(嗯,皮疹......一個假設你可以看看,這可能是一個壞的假設)的數據庫同步的本地SQL數據庫和遠程數據庫等等等等之間。

退一步說...是 - 你是絕對正確的,看它作爲是一樣的手機或Silverlight(雖然我不知道是否有尚未RIA支持) - 但事情是在這一點很難說明問題,因爲考慮到通用平臺,人們可以編寫適合各種用途的應用程序。

不是一個非常有用的答案真的 - 但是一個開始。


讀過@Jim G的回答,似乎我應該撤回我的?

+0

+1:不,請保留您的答案。這非常有幫助;特別是關於「不要假設斷開情景」的部分。 – 2012-01-01 15:50:37

相關問題