网站与windows服务之间的通信
本文关键字:通信 之间 服务 windows 网站 | 更新日期: 2023-09-27 18:17:32
我有一个用c# (MVC)编写的网站和一个用c#编写的Windows服务。都在同一台机器上运行。我们的想法是让他们共享同一个数据库。
Windows服务充当引擎,而网站更像是显示引擎执行的计算结果的前端。通信包括从web服务器到windows服务的带有少量数据的命令。每秒钟只需要执行很少的命令。
他们沟通的好方法是什么?
一般来说,Windows端最快的将是LRPC。根据您的需求,WCF可能是一个真正的问题。我们使用Win32 LRPC + protobuffers从web服务器到后台服务的吞吐量提高了40倍。这取决于你的需要。
(参见基准测试WCF与协议缓冲区+ rplibrary的比较)
protobuf- sharp-port包含了定义服务和消息所需的大部分内容。然后使用protobuf- sharp-rpc在Win32 LRPC传输层上提供消息序列化。
一旦你在protobuffers中定义了协议,这真的很容易。在客户机/服务器上只需要几行代码就可以创建连接和代理类。
再次强调,这完全取决于你在寻找什么;然而,依我之见,目前还没有一个更好的。net框架RPC体系结构。当然,我的观点是有偏见的,但自2003年以来,我们一直在使用这种方法的变体,而且它确实有效。
PS:如果你正在从头开始构建服务,你可以看看我的构建Windows服务项目模板指南。通过真实的事件日志记录、安装和命令行测试,它可以让您快速启动并运行。
这完全取决于你想做什么。有很多可用的选项:你可以在Windows service中托管一个(restful或非restful) web服务,你可以使用Remoting或WCF等。
但这一切都始于一个问题:为什么你需要这两个?是什么阻碍了你将Windows服务的功能转移到Web应用程序中?
你也可以用"另一种方式"——让你的网站运行一个网络监听器,并让Windows Service连接到它。