N-Tier与C#?

时间:2010-08-02 14:27:13

标签: c# sql-server winforms n-tier-architecture

我正在考虑编写一个WinForms应用程序并且难以理解这似乎是一个简单的问题。

有服务器和数据库(SQL Server)开放端口是HTTP,HTTPS

有一个WinForms客户端。它需要将TCP / IP流(可能是HTTP,SOAP,REST)连接到服务器。

有时WinForms客户端脱机,然后WinForms客户端将其数据存储在数据库中。

当WinForms客户端联机到服务器时,它会将数据同步到服务器,从服务器获取所有最新数据并更新本地数据库。

我该怎么做?

新手问题

7 个答案:

答案 0 :(得分:2)

不知道微软是如何积极地支持它的,但您可能会查看智能客户端软件工厂,它似乎支持离线模式和智能重新连接,就像您需要的那样。

http://msdn.microsoft.com/en-us/library/ff709809.aspx

答案 1 :(得分:2)

正如您所承认的,这个问题表明您可能不知道从哪里开始寻找如何构建此类应用程序。

我从这里开始:http://msdn.microsoft.com/en-us/library/ms973279.aspx

您所描述的离线架构对于新手而言比对此不太支持更为困难,请考虑使应用程序仅在线工作,然后添加离线功能。

此外,如果您有一个Web服务器,您几乎总是使用HTTP,SOAP和REST是位于HTTP之上的策略。我不建议新开发人员使用直接TCP / IP查看任何服务器通信。

编辑:回答相关问题 - 有大量的ORM和服务构建者,其中很多都没有内置支持离线工作流,但ODX确实如此,但它可能有点过时了。 NHibernate和Castle Project中的任何项目都是您非常喜欢的组件。

答案 2 :(得分:1)

您可以使用“服务”思维方式处理此问题 - 编写WebService(最好是WCF服务) - 在Winforms应用程序之间形成同步层。和远程数据库。

所以,你会得到你的 1.本地WinformsApp。使用本地数据库(如您所希望的那样功能/轻量级)
2. WebService
3.远程app./DB

答案 3 :(得分:1)

答案 4 :(得分:1)

恕我直言,这通常不是听起来那么简单

  • 如果您能够将DB转到DB,那么SQL复制可能是最简单的同步机制。
  • 但是,由于听起来您使用的是SOA方法,因此您可能需要查看内置了脱机支持的框架,例如Ent Lib Composite Application Block和Smart Client Software Factory
  • 您可能还会考虑使用队列(例如MSMQ)来解决网络连接问题。

答案 5 :(得分:1)

Microsoft Sync Framework(http://code.msdn.microsoft.com/sync)+ WCF解决方案: http://code.msdn.microsoft.com/sync/Release/ProjectReleases.aspx?ReleaseId=3762

无论如何,数据库同步并非易事。祝你好运。

答案 6 :(得分:0)

通常,您需要一个本地数据库,或至少一个本地缓存。