2009-02-16 61 views
0

从哪里开始通过网络发射事件?在我的情况下,当我更改数据库记录时,我想通知运行相同应用程序的网络上的任何其他用户,该用户已更改。通过网络发射事件

编辑:

这没什么聪明的,不要兴奋。我正在编写一个文档管理系统,当文档以任何方式发生变化(删除,检出,上传等)时,我想“告诉”每个人都有所改变。我打算使用FileSystemWatcher观察服务器上的一个文件夹,将每个实例签名为Deleted事件,只需在监视的目录中创建和删除一个文件,但这只是肮脏的不是吗?正如你所知道的,我不是一个专业的程序员:)

回答

2

你过了什么样的通知时限?我会亲自让客户端机器轮询服务器的更新 - 例如“我最近的更新是在17/02/2009 11:56:00 - 那以后发生了什么变化?” - 通过在实际服务器上实现web服务或简单的基于套接字的服务器。

否则,如果它是一个分布式的应用程序,你的“最简单”的选择将是一个UDP广播 - 假设他们是在同一个子网,而不是20度的路由器分离。

你能告诉我们更多关于你的情况吗?

0

您的客户端应用程序的每个实例可以听消息的插座。

当你的服务器应用程序更改数据库记录(代表客户的,或任何其他原因),它也插入一个在为每个客户端的消息队列“事情发生了转变”的消息。

服务器应用程序既可以立即将消息发送到客户端应用程序 - 或者客户端应用程序可以轮询。

0

让客户使用中央应用注册自己。无论何时客户更新记录,它都可以通知中央应用程序,然后将其广播给注册客户端。

为您自己决定运输机制,但您可能需要考虑套接字。

0

WCF可以为你做到这一点。当有事情发生时,我有一台服务器向所有客户端发送并发出警报。

0

如何跟踪文件编辑?我假设你正在使用数据库(如果没有,现在是设置一个好时机) - 在这种情况下,我会建议编写一个ASP.NET web服务(.asmx扩展名 - Visual Studio可以使它们真的简单)与此数据库进行通信,并告诉客户端自上次检查以来是否有任何文件已被修改。

试图创建Visual Studio中的服务器,看看它是如何做一个Web服务。要在客户机上使用(“使用”)web服务,打开VS项目,右键单击项目下的“References”节点,然后选择“Add Web Reference”。

客户需要查询的Web服务,不过,因为它是一个单向的呼叫响应类型的机制。

这样做的好处是您无需担心网络共享等问题。但是,缺点是你需要一个支持ASP.NET的网络服务器和数据库引擎,除非它们已经存在。