【问题标题】:Disconnected Architecture With .NET.NET 的断开式架构
【发布时间】:2009-01-10 04:02:10
【问题描述】:

我正在使用 WinForm 和 WCF 处理一个 n 层应用程序

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

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

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

谢谢。

【问题讨论】:

    标签: c# .net architecture


    【解决方案1】:

    通常,您会在应用程序内部实现一个队列。

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

    或者,您可以直接访问 Web 服务,然后在初始失败时将其发布到队列中。但是,队列仍然需要每隔一段时间检查一次 Web 服务。

    编辑: 澄清一下,是的,所有业务逻辑都需要在客户端可用。否则,您需要在客户端重新连接时提供“验证”机制。

    不过,这并不是一件坏事。因为无论如何您都应该将业务逻辑放在它自己的程序集中。

    【讨论】:

    • 这处理出站数据,假设应用程序不必处理或显示来自服务器的数据,这很好。在这种情况下,您还需要一个本地缓存
    • 是的,好主意,但这是否意味着我需要在客户端应用程序中实现我的业务逻辑,比如验证等......这通常是服务器工作的?......我认为它应该很糟糕将我的业务逻辑带入 UI 应用程序。
    • 如果应用程序必须在断开连接的状态下工作,那么要么一切都需要在客户端,要么它必须能够接受一切并在以后简单地处理错误。
    【解决方案2】:

    看看智能客户端工厂:http://msdn.microsoft.com/en-us/library/aa480482.aspx

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

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

    编辑

    我会用通常的 CYA 声明来回答这个问题,这取决于它。让我给你一些例子。以一个应用程序为例,它会监视文件系统以查找以任意数量的不同格式(DB2、Flatfile、xml)生成的文件。然后应用程序将导入文件,向用户显示文档的统一视图。并允许他下电子商务订单。

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

    更好的解决方案是在客户端运行业务规则来转换文件。现在假设您有一些业务逻辑,它会根据订单确定附加规则,例如将订单路由到的销售人员或定价折扣......这些放在服务器上可能是有意义的。

    您需要问的问题是,当服务器不存在时,我需要什么功能才能使我的应用程序正常运行。属于此类别的任何事物都需要成为客户端。

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

    【讨论】:

    • 业务逻辑呢?是服务器和客户端共享的意思吗?
    【解决方案3】:

    您可以离线进行所有处理,并使用 Microsoft Sync Framework 之类的东西在客户端和服务器之间同步数据。

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多