哪种.NET数据存储技术:仅限本地数据访问和基于Web服务

时间:2010-10-29 20:48:37

标签: .net database wcf architecture

我刚开始使用.NET数据存储,我对这么多不同的技术感到困惑......这是一个学习项目。你不需要继续阅读,我需要先做一个架构建议......到目前为止感谢

我的情景:

e.g。一个可以存储和标记图像的本地应用程序。 用户可以选择是否要

  • 仅将本地数据存储在本地
  • 仅限基于网络
  • 或两者的混合

条件:

  • 没有其他本地数据库服务器安装
  • 用户可以上传其本地数据的选定部分,以便其他用户公开
  • 其他用户可以将此数据添加到其本地存储库
  • 后来应该有这样的能力。在上传之前确认上传=> WWF

正如您所看到的,无论操作是本地操作还是基于Web操作,许多操作和数据(传输)对象都是冗余的。这是我实现这一事实的主要目标之一。我正在寻找编程安慰:)

我对以下内容感兴趣:

  • LINQ
  • WCF
  • WWF

云可以是一个选项,但我更喜欢使用wcf服务来访问数据(至少我认为我更喜欢这个:)

我看到的技术:XLinq,实体框架,hibernate,Linq to ...,WCF数据服务,带Linq的SQLite,Web服务,实体SQL ......真是太糟糕了

我读了很多关于这个主题但很难估计架构决策的后果。其他帖子也没有帮助我规划项目。

如果你能指出我正确的方向,那就是我的一天。致谢!!!

2 个答案:

答案 0 :(得分:0)

您的主要关注点应该是从存储机制中抽象出您的存储解决方案。

确定您需要哪些方法SaveData,LoadData,GetSavedDataList,DeleteItem ...然后创建一个接口IStorage。这样,您可以编写许多不同的解决方案,本地+二进制/远程+ WCF,但保持应用程序逻辑的核心与存储解决方案分离。你的核心逻辑不应该关心它从哪里保存/加载信息。

真的,您使用的存储解决方案取决于您。每个人都有自己的优点和缺点,任何人都不可能给你100%正确答案,这对你来说是最好的。在一天结束时,你将最终得到3个主要工作。在本地存储数据,将数据传输到远程服务器,将数据存储在远程位置。

在本地存储它可以像保存元数据的XML文件和图像的二进制文件一样简单。你说你不想安装本地数据库,这是一个数据库引擎,还是任何数据库解决方案,是否可以使用像MsAccess / SQL CE等,因为它会使整体设计更好一点?

对于您的远程存储,您可以编写一个Web服务来传输对象,图像数据和标签等,如果您通过良好的抽象/解耦设计好您的代码,您的本地系统将不必知道任何不同的webservice(在服务器端),使用LINQ将数据保存到数据库。

有很多方法可以让这只猫受到伤害,毫无疑问,你会从其他SO社区获得大量其他建议。

答案 1 :(得分:0)

您可能需要考虑服务器上的SQL Server 2008和本地计算机上的SQL Server Compact。每个都针对这种环境进行了优化,它们提供的数据存储和管理功能非常相似。正如jasper所暗示的那样,从你的代码中抽象出访问机制,这对技术应该非常容易。

SQL Server Compact是一个嵌入式数据库引擎,它与您的应用程序一起在进程中运行,与它一起作为“单个DLL”安装,并且不需要单独的数据库服务器安装。

无论如何,我完全同意jasper你应该专注于系统的架构和设计,并将技术视为次要的。