在我的应用程序中有一个类包含eventadler类型的事件,这个类应该在另一个应用程序中远程处理(它必须处理这些事件)。这个EventHandler的第一个参数是对象0(触发事件的对象)。这个参数在另一个应用程序中是否有意义?这些事件会发生吗?对不起,我的问题太复杂了,我一时无法把我的想法表达清楚。
这取决于是否有人要使用sender
参数。
如果是,则取决于对象是什么;如果它只对对象所在的应用程序域有意义,那么您需要确保该对象派生自MarshalByRefObject
,以便来自客户端的调用可以远程返回到服务器上的实例。
如果按值发送sender
是有意义的,那么你必须确保它是可序列化的。
也就是说,事件而不是远程操作通常是一个坏主意。更好的解决方案是创建具有可在客户机和服务器之间共享的接口的程序集。该接口包含将在客户机上实现的方法(使用MarshalByRefObject
基类),并且该实现的实例将传递给服务。然后,服务将存储此引用,并在您想要引发"事件"时对接口的实现进行调用。
WCF取消了分布式调用上的事件概念,选择了这种模式,当客户端希望从服务器获得事件通知时使用回调接口。