【问题标题】:Best practice to share data and notifications between applications [closed]在应用程序之间共享数据和通知的最佳实践 [关闭]
【发布时间】:2013-05-08 09:13:18
【问题描述】:

在同一台机器上的不同应用程序之间共享数据并在数据发生更改时通知它们的最佳做法是什么?

我有 4 个应用程序使用相同的设置项目来更改它们的设置。当我更改项目中的设置时,其他应用程序必须对此更改采取行动,并且必须知道设置已更改。

我想过 IPC 进行设置更改,然后将更改信息广播给所有用户,但如果这样的库已经存在,那就太好了。

编辑:

我找到了适合我的解决方案。我们决定不在此功能上花费大量时间,因为更新其他应用程序并不十分关键。

我们像以前一样将设置保存在一个 XML 文件中,我在该文件上注册了 FileSystemWatcher 以获取所有更改。因此,如果我更改设置,所有 4 个应用程序都会去读取设置文件并确定它们是否必须采取行动。

【问题讨论】:

    标签: c# notifications share


    【解决方案1】:

    选择的解决方案取决于不同的参数:

    1. 您可以在实施上投入多少精力。
    2. 快速更新应用程序有多重要。
    3. 您/您的客户可以使用哪种环境。
    4. ...

    例如:

    • 保存对数据库/配置文件的更改,并让应用程序运行一个单独的线程,该线程专用于每 n 秒检查一次设置更改。实施这种解决方案既便宜又容易,但并不“好”,许多开发人员会拒绝这种解决方案。
    • 创建 WCF 服务,将更改“发布”到应用程序。这种情况下,使用双绑定,应用程序将立即更新。当然,这种解决方案成本更高......

    这些只是众多可用解决方案(共享内存、共享应用程序域等)中的两个示例。

    【讨论】:

    • 嘿谢谢您的回复。我现在找到了适合我的解决方案。
    • Neutron,只是出于好奇……您选择了哪种解决方案,为什么?
    • 嗨,Amit,我编辑了主帖并使用我选择的解决方案对其进行了扩展。我选择了这个解决方案,因为它是当前环境中最简单/最便宜的方式,应该可以正常工作。
    【解决方案2】:

    你所做的似乎很明智。而且我还有另一个使用 MSMQ 的经验。 您可以创建私有或公共队列,因为您在同一台机器上拥有所有应用程序,私有队列是可以的,否则,您应该使用公共队列。 那时我选择了 Spring.Net 作为我的框架(对象构建器和依赖注入器)。 Spring.net 有出色的QuickStarts,其中之一是使用 MSMQ 作为应用程序之间的通信桥梁。 如果我是你,我会使用队列方法,因为你可以通知在不同机器上运行的应用程序。

    此外,WCF 为在底层 MSMQ 组件上开发分布式服务提供了方便的方法。

    此外,发布-订阅是一种常见的设计模式,广泛用于客户端/服务器 通讯应用。在 WCF 服务开发中,Publish-Subscribe 模式将 在服务应用程序将向某些组公开数据的情况下也有帮助 对服务感兴趣的客户数量,数据作为推送模型提供给客户 主动(而不是由客户端轮询)

    【讨论】:

      【解决方案3】:

      如何使用内置的依赖对象? 喜欢:

      1. CacheDependency - http://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency.aspx
      2. SqlDependency - http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.aspx

      这些实现起来非常简单,而且效果很好

      【讨论】:

      【解决方案4】:

      网络套接字怎么样?您可以在不同的端口上创建监听器和发送器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 2016-01-19
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多