【问题标题】:How to run business logic on one computer of the local network and GUI on another?如何在本地网络的一台计算机上运行业务逻辑,在另一台计算机上运行 GUI?
【发布时间】:2015-05-13 22:58:41
【问题描述】:

我有一个 WPF 应用程序在连接到本地网络的计算机上运行,​​并且有一个连接到该计算机的特殊设备由该应用程序控制。是否有任何简单的方法可以将 GUI (WPF XAML) 迁移到连接到同一网络的另一台计算机,以便 GUI 和 BL 保持耦合?

我一直在研究 WCF,但有一些限制会使 WCF 适应我的情况非常耗时。如果 WCF 可以在一个 ServiceContract 中同时处理属性(根本不支持)和事件,那么它会完美地工作。

【问题讨论】:

    标签: c# wpf wcf xaml


    【解决方案1】:

    不,没有简单的方法可以做到这一点。
    如果你的 GUI 和 BL 运行在不同的机器上,那么你必须实现特殊的代码来执行应用程序之间的网络通信(即 GUI 和 BL 是两个不同的应用程序),如果 GUI 和 BL 是紧密耦合的,那么几乎不可能和毫无意义这样做(与网络相关的代码将包含巨大的服务合同,远程处理会消耗大量时间,使 UI 交互变得缓慢而痛苦)——应该重构它。

    但是,有一个解决您的问题的方法 - 您可以在具有 BL 和 GUI 的机器上运行您的应用程序,然后在不同的机器上显示该 GUI:RemoteDesktop 或 RemoteApp (https://technet.microsoft.com/en-us/library/cc755055.aspx) 可以帮助解决这个问题。

    【讨论】:

    • 网络操作可以是异步的,所以他们不需要让 UI 交互变得痛苦。也就是说,我不确定这是否真的回答了这个问题(尽管你可以说它可以解决他的问题)
    • @BradleyDotNET,我认为,一般来说,如果 GUI 和 BL 紧密耦合,异步操作无法避免在 GUI 和 BL 机器之间管理和同步“视图状态”的问题。所以,如果重构不是一个选项,那么我的回答就足够了,否则应用程序应该用客户端/服务器架构重新实现
    • 当然,在任何网络成为可能之前,您必须有一个解耦架构。当然,这样的架构无论如何都是可取的:)。永远没有足够的时间把事情做好,总是有足够的时间重新做。
    • 显然我在选择 WPF 时犯了错误,基本上我正在考虑用 MVC 重做这件事,但为了时间我会坚持使用 RemoteApps。所以,谢谢你的链接。
    • @DmitryTimofeev 如果您将 MVVM 与 WPF 一起使用(如您所愿),那么解耦架构应该非常自然而然地出现。
    【解决方案2】:

    简单的方法?没有。

    如您所述,您可以使用 WCF。您还可以使用 SignalR、消息总线、标准 TCP 套接字或许多其他技术。

    这些都没有可以为您提供您似乎想要的绝对透明度。它们都解决了您将在服务器上调用方法的概念,并且它可能会或可能不会返回数据。在 TCP 的情况下,您发送数据并可能取回数据。您不能简单地访问/更改属性或监听事件(SignalR 和 WCF 确实支持服务器->客户端调用,这与事件完全不同,但它可以工作像一个)。

    我认为您需要考虑实现标准客户端/服务器模型,您可能认为它不方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2020-06-26
      • 2018-06-02
      • 1970-01-01
      相关资源
      最近更新 更多