c# – 网站和Windows服务之间的通信

我有一个用c#(MVC)编写的网站和一个用c#编写的
Windows服务.两者都在同一台机器上运行.想法是让他们共享同一个数据库.

Windows服务充当引擎,网站更像是前端,显示引擎执行的计算结果.通信由从Web服务器到Windows服务的数据很少的命令组成.几乎没有命令/秒.

什么是他们沟通的好方法?

最佳答案 通常,Windows方面最快的是LRPC.根据您的需要,WCF可能是一个真正的问题.我们使用Win32 LRPC protobuffers从Web服务器到后台服务的吞吐量提高了约40倍.只是取决于你的需求.

(见Benchmarking WCF compared to Protocol Buffers + RpcLibrary)

protobuf-csharp-port具有定义服务和消息所需的大部分内容.然后使用protobuf-csharp-rpcWin32 LRPC transport layer上提供消息序列化.

一旦你过去在protobuffers中定义协议,这真的很容易.客户端/服务器上只需几行代码即可创建连接和代理类.

同样,这一切都取决于你在寻找什么;然而,恕我直言,目前还没有一个更好的RPC架构用于.NET Framework.当然,在我看来,我有偏见,但自2003年以来我们一直在使用这种变体,它只是起作用.

PS:如果您从头开始构建服务,可以查看我的Building a Windows Service Project Template指南.它将通过真实的事件记录,安装和命令行测试让您快速启动并运行.

点赞