Windows 8 Metro应用程序应如何连接到中央数据库?

Jim*_* G. 9 architecture web-services tablet odata windows-8

Windows 8 Metro应用程序应如何连接到中央数据库?

  • 我读过有关本地存储的内容,但我还没有读到有关连接中央数据库的任何信息.
  • 显然,这种架构设计决策需要支持断开连接的场景.
  • WCF Web服务似乎有意义.
    • 但即使它们确实有意义,我们是否应该为所有读/写操作创建单独的方法?
    • 或者OData WCF服务的方式是什么?
  • 看起来平板电脑软件架构应该可以从智能手机软件架构中借用很多东西(但我对两者都是新手).
  • Microsoft是否在其应用示例中提出了任何建议?

Jim*_* G. 13

似乎其他人在微软开发者论坛上提出了类似的问题.

这是我发现的:

蒂姆豪雅表示:

...您不能直接在应用程序中嵌入SQL数据库或使用ADO.NET之类的东西.这更像是异步/服务基础架构.因此,如果您的数据是通过服务公开的,那么您当然可以通过这种方式进行连接.还有一些其他轻量级方法可用于本地存储,也可以使用Windows.Storage命名空间(类似于.NET中的独立存储).

莫滕尼尔森同意:

您可以使用HttpClient从网上下载几乎任何内容.为什么不配置WCF服务以将数据作为JSON返回,并使用DataContractJsonSerializer反序列化结果?

此外,Tim Heuer警告说:

...请注意,虽然很棒,但是codeplex上的SQLWinRT项目是一个与经典SQLite引擎进行通信的包装器......它使用的API目前还没有通过商店验证.


WinRT基于WinRTFile的数据库的通用对象存储助手似乎有一些承诺.

丹尼尔斯托尔特提出了一些好处:

很棒的是,对构建OData客户端和其他REST客户端有很好的支持 - 但这只能解决在线场景.Windows.Storage的"结构化"部分是一个非常有限的模型,基本上限于名称/值对,除了最基本的场景之外的所有部分都不够.是的,有本地文件存储,这当然很棒.但是迫使每个应用程序开发人员在本地文件存储之上构建自己的DBMS根本不会削减它,特别是在从配置文件中删除了所有System.Data之后.如果本地文件存储对于大多数设备应用程序来说足够了,那么像SQLCE这样的东西今天就没有任何意义了.SQLCE显然有一个目的,并且在很长一段时间内偶尔连接设备应用程序起到了非常重要的作用.还需要与服务器端数据库(如SQL Azure)同步,这主要是为了能够在设备之间漫游数据.是的,WinRT中存在漫游存储模型,但它与上面提到的本地存储具有相同的限制,并且除此之外容量非常有限(如果内存服务,则目前为30KB).除了最简单的漫游数据需求外,它对所有人来说都是不够的.同样,迫使每个应用程序开发人员设计和实现自己的同步解决方案都非常糟糕.您可以做得更好,以启用开发人员.


很多人都对WinRT中不支持System.Data命名空间感到失望.

理查德贝贝尔说:

我甚至都没有这方面的话.这太惊人了.暂时搁置他们想要迫使你抽象到中间件进行数据库连接 - 我不同意,但我可以准确理解这个的基本原理.我甚至可以看到像这样发展的途径.

但是没有System.Data .... 你甚至明白你对我们做了什么?

除了拥有Sql,OleDb和其他自定义提供程序(如Oracle)的提供程序之外,System.Data可以做的是提供XML数据集的丰富抽象,使您可以非常快速地构建面向数据的面向服务的体系结构.

例如,我可以使用返回DataSet或DataTables的SOAP或WCF轻松创建Web服务,然后轻松直接地使用这些对象.即使没有可用的直接数据连接,能够这样做也可以非常快速地构建n层体系结构.

没有System.Data,以及DataViews,DataTables等的强大功能,这将变得更加困难.当然你可以自定义创建结构,将数据放在那里,并提供结构,并使用Linq做你想做的任何排序,过滤等....但它最终是工作的两倍,并使代码重用更难.这意味着使用我们现有的面向服务的架构是不可能的(没有大的改革.)

由于VB6中的Printer对象丢失到vb.net 1.0,System.Data的撤销对开发人员来说是一件大事.在这种情况下更难理解的是为什么有必要 - 在Metro配置文件中重新启用它不可能是产品的技术难题,可以吗?

它非常有价值,我会认真考虑将Mono的System.Data类作为我创建的任何应用程序的一部分(显然必须是开源的.)