8

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

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

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

编辑:

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

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

4

4 回答 4

1

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

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

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

于 2013-06-01T11:40:36.480 回答
1

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

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

例如:

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

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

于 2013-05-08T09:32:51.457 回答
0

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

于 2013-06-01T11:45:08.373 回答
0

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

  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

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

于 2013-05-08T09:38:00.843 回答