基本上使用与其他 WCF 通信相同,据我所知,内存实际上并没有共享,但是一个进程可以将内容放入内存并将它们传递给另一个进程。不同之处在于您定义端点的方式。
这是一个服务器端点定义:
<system.serviceModel>
<services>
<service name="aaa.bbb">
<endpoint address="net.pipe://localhost/lalala" binding="netNamedPipeBinding" contract="aaa.Ibbb">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/aaa/Service1/" />
</baseAddresses>
</host>
</service>
</services>
这是客户端:
NetNamedPipeBinding nnpb = new NetNamedPipeBinding();
nnpb.MaxReceivedMessageSize = 65536000;
ChannelFactory<aaa.Ibbb> Factory =
new ChannelFactory<aaa.Ibbb>(nnpb, new EndpointAddress("net.pipe://localhost/lalala"));
aaa.Ibbb proxy = Factory.CreateChannel();
var a = proxy.DoSomething();
使用这些关键字中的任何一个,您都可以找到一些教程。