我正在用 C# 编写两个需要能够通信的应用程序(仅在一个方向上)。这两个应用程序将始终在同一台机器上运行,因此将 WCF 与命名管道一起使用并自托管 WCF 服务似乎是合乎逻辑的选择。
我知道我可以使用InstanceContextMode来配置服务实例是在每个会话、每个调用中实例化,还是应该只有一个实例。就我而言,我想要一个实例,因为我将只运行两个应用程序,因此将有一个客户端和一个服务器。
但这就是我卡住的地方。当我的客户拨打服务电话时,我正在这样做:
var myServiceFactory = new ChannelFactory<IMyService>(
new NetNamedPipeBinding(), new EndpointAddress("net.pipe://localhost/MyService"));
IMyService myService = myServiceFactory.CreateChannel();
myService.DoStuff();
我不希望在服务器上创建新的服务器对象实例。相反,我希望myService指向已经在服务器上构建的(一个也是唯一的)IMyService 实例。目前,第二个 IMyService 实例被构建。
换句话说,我希望我的服务器对象由服务器构造(当服务器启动时),而不是在客户端第一次调用时。
谁能解释如何做到这一点?据我了解,.NET Remoting 使这很容易,而且 WCF 据说已经取代了 Remoting,所以必须有一个简单的方法......对吗?