我们有一个客户端服务器应用程序。 我的应用程序需要通过WCF服务更改为工作,以便接收/发送数据到数据库(安全需求)。
我还需要在客户端托管的另一项服务,并将客户端连接到服务器端的WCF服务连接 Https 。 服务器上的WCF服务处于 PerSession 模式。 我在服务器上的大多数工作都是插入/选择查询。
所以我的设计是:
客户端 - > Windows服务 - > WCF服务器服务(iis7) - >数据库。
此Windows服务同时充当客户端和服务器。 充当服务器:用于客户端应用程序。 充当位于服务器的WCF服务的客户端。
应用程序需要使用.net 4支持XP和转发操作系统。
Windows服务只需要按需连接WCF服务(启动客户端应用程序时)。
我需要决定实现客户端Windows服务的方式。 我更喜欢使用带有 TCP / IP 的WCF托管服务来实现它,但感觉就像过度杀死一样。 我应该使用其他IPC实现吗?如果是这样的话?
那么,实现此Windows服务的最佳方法是什么?
由于
答案 0 :(得分:1)
我不完全理解为什么要在客户端使用Windows服务以便与WCF服务进行通信。但问题不在于建筑模式......
因此,对于进程间通信,我会使用NetNamedPipeBinding。 您可以找到有关如何决定使用哪种绑定here的更多信息。
使用WCF服务进行进程间通信根本不会让我感到有些过分。实际上WCF服务是非常轻量级的,除了主机初始化过程,我认为在Windows服务的情况下不应经常发生。 WCF提供可靠性和可扩展性,以换取这一小小的不便。
<强> [EDITED] 强>
我刚读过你的帖子,我想澄清有关托管的一些细节。您可以在Windows服务中托管WCF服务,解释为here,但不是相反。对不起,如果我误解了你的问题。是的,用于进程间通信的TCP / IP绝对是一种过度杀伤,但NetNamedPipeBinding根据this文章使用共享内存,所以它应该是最快的方式。