我正在开发一个包含多个Windows服务的C#应用程序,这些服务需要相互通信才能传递数据.这些服务可能在同一台机器上,但它们可能是远程的.我考虑使用WCF用于此目的,但看起来WCF太重了,并且有很多额外的配置,对我来说,似乎没必要(这里需要.NET 3.5,我知道.NET 4简化了这个)
所以我的问题是,除了提供此功能的弃用的.NET Remoting之外,什么是WCF的最佳替代品?
csh*_*net 16
我已经使用PInvoke访问Windows RPC运行时近8年了.就运输而言,这是快速且非常可靠的.当与诸如protobuf-csharp-port之类的快速序列化器结合使用时,所产生的通信非常坚固且非常快速.
因此,要从头开始构建它,这需要三个部分:
这些都可以在以下包中的NuGet上获得:Google.ProtocolBuffers,CSharpTest.Net.RpcLibrary和Google.ProtocolBuffers.Rpc.
以下是入门快速简化:
使用Google协议缓冲区语言定义一组消息和服务.
一旦定义了,您将运行ProtoGen.exe以在C#中生成服务存根和消息.请务必添加"-service_generator_type = IRPCDISPATCH"以生成正确的服务代码.
现在您已将生成的源文件添加到项目中,并从上面列出的包中引用这三个程序集.
最后,请查看protobuf-csharp-rpc项目页面上的示例客户端/服务器代码.将"SearchService"替换为您的服务名称,您应该已准备好运行.
(可选)更改RPC客户端/服务器的配置.该示例显示了仅使用本地主机的LRPC; 但DemoRpcLibrary.cs源文件也显示TCP/IP和命名管道.
您可以随时给我发电子邮件(roger @我的用户名)以获取更多信息或示例.
更新
我写了一个快速启动指南:WCF替代跨进程/机器通信.
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |