在应用程序间共享信息

时间:2010-05-05 09:27:53

标签: .net data-sharing

我的问题很容易揭露:

我有一些在那之间共享数据的应用程序。我需要一种方法来支持数据共享(跨越多台计算机),当一个应用程序更改数据时,应该通知其他人。

我的问题是关于tecnologies对我有用的东西。我现在意识到的解决方案是拥有一个共享数据的数据库和一个外部发布 - 订阅系统(如http://pubsub.codeplex.com/),以便在数据发生变化时通知所有应用程序。但我相信可能存在一些有用的解决方案。

你知道吗? 感谢。

4 个答案:

答案 0 :(得分:2)

嗯,小心这样的建筑,他们在实践中从不运作良好。第一个问题是您将创建的大量网络流量,从来没有很好地扩展。更严重的是,你会遇到巨大的并发问题。根据定义,“数据已更改”通知将延迟发送,并且无法保证它们将被订购。只要通知之间有足够长的时间延迟,一切都运行良好,使子系统有机会同步查看数据。

但是当负载增加并且通知开始缓冲时,那个纸牌屋就会崩溃。子系统将开始对数据的旧视图做出决定,并与其他子系统持有的视图不同步。你也无能为力,你无法在网络上“锁定”。并且非常难以调试,同步不匹配是完全随机和虚假的。

采用集中式服务器方法,并发性更容易处理。

答案 1 :(得分:0)

如果您使用的是Java,JMX会想到Sun's JMX tutorial。它有很多支持并且易于使用。

答案 2 :(得分:0)

您可以使用Windows Communication Foundation(WCF)在客户端和服务器之间进行通信。通信可以有两种方式,因此客户端可以向服务器通知更改,服务器将向所有需要通知的相关客户端发送消息。双向通信在WCF中称为Duplex Contract。这样,如果您不需要数据库,则不必使用数据库。

答案 3 :(得分:0)

我可以使用Sql Server存储我的数据和Sql Server Notification Services(http://msdn.microsoft.com/en-gb/library/ms172483(SQL.90).aspx)以在数据更改时收到通知。