与.NET断开连接的体系结构

时间:2009-01-09 19:04:47

标签: c# .net architecture

我正在使用WinForm和WCF的n层应用程序

引擎服务(Windows服务)=> WCF服务=> Windows窗体客户端应用程序

问题是,即使引擎服务已关闭,WinForm客户端应用程序也必须100%可用。

那么为了使winform应用程序始终可用,我怎么能建立一个断开连接的架构?

感谢。

3 个答案:

答案 0 :(得分:3)

通常,您实现应用程序内部的队列。

队列会将请求转发给Web服务。如果Web服务关闭,它将保持排队状态。队列机制应该经常检查以查看Web服务是否处于活动状态,然后何时转发它已存储的所有内容。

或者,您可以直接访问Web服务,然后在发生初始故障时将其发布到队列中。但是,队列仍然需要经常检查Web服务。

修改 只是澄清一下,是的,所有的业务逻辑都需要客户端。否则,当客户端连接备份时,您需要提供“验证”机制。

但是,这不是一件坏事。正如您应该将业务逻辑放在它自己的程序集中一样。

答案 1 :(得分:1)

查看Smart Client Factory:http://msdn.microsoft.com/en-us/library/aa480482.aspx

只是为了突出目标(这是从上面的链接中删除):

  • 他们拥有丰富的用户界面 利用了它的力量 Microsoft Windows桌面。
  • 他们连接到多个后端 与他们交换数据的系统。
  • 他们提供来自的信息 通过多种多样的来源 一个集成的用户界面,所以 数据看起来像是来自一个 后端系统。
  • 他们利用本地存储空间 和处理资源以启用 在没有的时间期间的操作 网络连接或间歇性 网络连接。
  • 它们易于部署和使用 配置。

修改

我要按照通常的CYA声明来解决这个问题。让我举几个例子。拿一个应用程序来查看文件系统,以便以任意数量的不同格式(DB2,Flatfile,xml)生成文件。然后,应用程序将导入文件,向用户显示文档的统一视图。并允许他发布电子商务订单。

在这个应用程序中,您可以选择检测文件压缩它们并上传到服务器执行转换(应用业务逻辑,如数据规范化等)。但是,如果互联网连接中断,会发生什么。现在,用户必须等待他的连接才能发出电子商务订单。

更好的解决方案是在客户端中运行业务规则来转换文件。现在让我们说,你有一些基于订单的业务逻辑确定额外的规则,例如推销员将其路由到或定价折扣......这些可能是有意义的坐在服务器上。

您需要问的问题是,当服务器不存在时,我需要什么功能才能使我的应用程序正常运行。任何属于这一类的东西都需要是客户方。

我也从未使用Click Once部署,我们必须推出自己的更新程序,这是另一个线程的故事,但您应该能够轻松地发送更新。您还可以在程序集中编写业务逻辑代码,从URL加载,因此当它在客户端运行时,它可以轻松更新。

答案 2 :(得分:0)

您可以离线执行所有处理,并使用Microsoft Sync Framework等内容来同步客户端和服务器之间的数据。

假设服务器和客户端都是.net,您可以使用相同的代码库在服务器和客户端上进行数据验证。这样,您将拥有一个服务器和客户端的单一代码库。

您可以使用CSLA.NET之类的框架来简化此验证过程。