C# 如何返回能够在服务器上执行的对象?
来自Java背景,我的想法是: 服务器向客户端提供一个对象。此对象应该能够在服务器上执行 服务器:C# 如何返回能够在服务器上执行的对象?,c#,remoting,C#,Remoting,来自Java背景,我的想法是: 服务器向客户端提供一个对象。此对象应该能够在服务器上执行 服务器: private string _S = "A"; public interface IFoo { void Bar(); } private class Foo : IFoo { void Bar() { _S = "B";} } public IFoo GetFoo() { return new Foo(); } 客户: IFoo foo = serverChannel.GetF
private string _S = "A";
public interface IFoo { void Bar(); }
private class Foo : IFoo {
void Bar() { _S = "B";}
}
public IFoo GetFoo() { return new Foo(); }
客户:
IFoo foo = serverChannel.GetFoo();
foo.Bar();
远程处理是遗留的(每个人都一直指向WCF),而WCF基本上不支持它(),所以我应该如何实现这种行为?如果需要,可以使用第三方组件
我继续搜索,但没有发现类似的问题。如果之前确实有人回答过,请告诉我,我会删除。WCF确实是基于消息的,远程处理仍然有效。。。。真正的问题是:为什么不基于消息进行工作?如果您希望在WCF中进行类型共享—就像您在远程处理中所描述的那样,在服务器和客户端的公共程序集中共享(接口)声明—您可以使用。它 它的使用是不被鼓励的——就像远程处理一样——基于合同的消息传递现在似乎非常流行 我应该补充一点,如果设计得当,即使使用.Net远程处理,您最终还是会得到一个基于契约/消息的应用程序。您的共享接口将成为操作契约,而您的共享数据类定义将描述您传递的数据契约/消息。我建议不要尝试“远程”对象。这是一个危险的想法
真的,不要这样做。远程对象有点糟糕。在核心层面,网络是关于传输数据的。从长远来看,让您的程序使用相同的模型将使您的生活变得更加轻松。因为这将简化我的应用程序设计:)@mafactrct:design-wise,在接口上调用方法和发送消息之间没有太大区别。这是一样的。使用WCF,您可以获得类似远程处理的行为,拥有一个带有代理实现的接口,在后台发送消息。是的,但我希望有许多接口,以简单的方式相互交互。据我所知,这对WCF来说并不容易,即使它确实可以被模仿。这是真的。至于技术——意思是“.netremoting”——然而,人们确实成功地用它开发了应用程序。为了避免混乱,有一些规则:不回调,只使用单次调用,不共享状态,只在公共程序集中放置接口/消息声明,远程调用在客户端代码中应该是明显的等等。。。因此,最后我们只剩下为我们的远程应用程序定义简单的数据消息类。它看起来很像WCF应用程序。:-)确切地消息传递是有效的,除了一些微不足道的例子之外,几乎所有成功的网络应用程序都会看起来很像是在做消息传递。+1有趣的观点。我没有意识到远程处理似乎经常导致此类问题。@mafurtct:这不是任何特定远程处理技术的问题。这是整个远程处理思想的一个问题
Foo.Bar
对于“远程对象”和本地结构有着极其不同的含义,对当前数据的方式有着不同的保证,可能发生的错误也不同,性能特征也大不相同。你不能真的把这些都掩盖起来,假装它们不存在。正如安德拉斯指出的那样,一旦你承认了这些差异,你最终会得到一些看起来很像信息传递的东西。