首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net 2.0:如何使用临时订阅订阅远程计算机上的事件发布者?

.Net 2.0:如何使用临时订阅订阅远程计算机上的事件发布者?
EN

Stack Overflow用户
提问于 2008-09-17 07:47:30
回答 4查看 627关注 0票数 0

我的问题是,我希望有一个服务器应用程序(在远程计算机上)将某些事件发布到多台客户端计算机。服务器和客户端使用.Net-Remoting进行通信,所以目前我使用远程.Net-Events来获取功能。但有一个缺点:当服务器(事件发布者)离线并重新启动时,客户端将失去连接,因为远程对象引用变得无效。

我正在研究松散耦合的事件和临时COM订阅来解决这个问题。我组装了一个包含一个发布者和两个订阅者的小型演示应用程序。它在一台电脑上运行得很好。

我正在使用COMAdmin-Libraries为事件订阅者创建一个临时订阅。代码如下所示:

代码语言:javascript
复制
MyEventHandler handler = new MyEventHandler();
ICOMAdminCatalog catalog;
ICatalogCollection transientCollection;
ICatalogObject subscription;
catalog = (ICOMAdminCatalog)new COMAdminCatalog();
transientCollection = (ICatalogCollection)catalog.GetCollection("TransientSubscriptions");
subscription = (ICatalogObject)transientCollection.Add();
subscription.set_Value("Name", "SubTrans");
subscription.set_Value("SubscriberInterface", handler);
string eventClassString = "{B57E128F-DB28-451b-99D3-0F81DA487EDE}";
subscription.set_Value("EventCLSID", eventClassString);
string sinkString = "{9A616A06-4F8D-4fbc-B47F-482C24A04F35}";
subscription.set_Value("InterfaceID", sinkString);
subscription.set_Value("FilterCriteria", "");
subscription.set_Value("PublisherID", "");
transientCollection.SaveChanges();
handler.Event1 += OnEvent1;
handler.Event2 += OnEvent2;

我现在的问题是:我必须更改订阅中的哪些内容才能使其在网络上工作?这有可能吗?

EN

回答 4

Stack Overflow用户

发布于 2008-09-17 10:51:19

那么MSMQ呢?对于你正在尝试实现的目标来说,它似乎是完美的?您可以使用传统的发布/订阅模型或多播消息。

票数 1
EN

Stack Overflow用户

发布于 2008-09-17 10:55:14

这一步可能走得太远了,但您是否考虑过使用WCF和WCF的回调元素?

回调有效地将原来的客户端变成了服务器。老实说,我对回调了解不多,只做过实验。不过,也许值得花10分钟在谷歌上看看。

票数 1
EN

Stack Overflow用户

发布于 2008-09-17 10:30:14

如果你的服务器偶尔离线,我不明白你怎么能避免轮询它来检查它是否还活着。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/80903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档