C# 为windows上的其他应用程序创建长寿命服务器
我已经研究过COM服务器和Windows服务,但我不确定什么最适合我的目的或如何做到这一点。我想要的是可以启动并无限期运行的东西,它保存一个对象,以便其他进程或应用程序获取对该对象的引用(或向服务器发出请求)以修改或查询其状态 服务器本质上是一个应用程序,它通过串行端口处理发送给设备的命令,并维护设备的内部状态 我现在用C#编写了设备通信和持久性功能,它可以在每个进程的基础上创建和运行,但显然我希望它实例化一次并独立于其他进程运行 我读过的COM教程只是让我感到困惑,因为我不完全确定这是否是我想要的,我希望有更多的.Net方法来实现这一点C# 为windows上的其他应用程序创建长寿命服务器,c#,.net,com,com+,C#,.net,Com,Com+,我已经研究过COM服务器和Windows服务,但我不确定什么最适合我的目的或如何做到这一点。我想要的是可以启动并无限期运行的东西,它保存一个对象,以便其他进程或应用程序获取对该对象的引用(或向服务器发出请求)以修改或查询其状态 服务器本质上是一个应用程序,它通过串行端口处理发送给设备的命令,并维护设备的内部状态 我现在用C#编写了设备通信和持久性功能,它可以在每个进程的基础上创建和运行,但显然我希望它实例化一次并独立于其他进程运行 我读过的COM教程只是让我感到困惑,因为我不完全确定这是否是我想
任何帮助都将不胜感激 这似乎很适合windows服务。我应该说我不是.net程序员,但我知道你可以用.net创建服务。只要您知道可以使用.net操作串行端口,您就应该可以开始了
-don这似乎是windows服务的天然选择。我应该说我不是.net程序员,但我知道你可以用.net创建服务。只要您知道可以使用.net操作串行端口,您就应该可以开始了
-DO/P> < P>我将为此建立一个Windows通信基础(WCF)服务,并将它与可用的许多绑定之一公开。您可以通过HTTP/SOAP、HTTP/REST、TCP/Binary、MSMQ等从同一个服务公开它。如果您有Windows 2008,您可以通过Windows激活服务(WAS)激活它。如果您有一些其他Windows操作系统,则应该编写一个可以向服务控制管理器(SCM)注册的Windows服务。这里有很多选择,但我肯定倾向于使用WCF来创建您的服务。有这么多的“管道”,WCF照顾你。没有必要重新发明所有这些。希望这有帮助。
< P>我会为此构建一个Windows通信基础(WCF)服务,并将它与许多可用的绑定之一公开。您可以通过HTTP/SOAP、HTTP/REST、TCP/Binary、MSMQ等从同一个服务公开它。如果您有Windows 2008,您可以通过Windows激活服务(WAS)激活它。如果您有一些其他Windows操作系统,则应该编写一个可以向服务控制管理器(SCM)注册的Windows服务。这里有很多选择,但我肯定倾向于使用WCF来创建您的服务。有这么多的“管道”,WCF照顾你。没有必要重新发明所有这些。希望这能有所帮助。您的要求有点矛盾——如果服务器必须无限期运行,而不管是否有客户机提供服务,并且进程必须在所有客户机之间共享,而不管它们在哪个会话中运行,那么Windows服务就是最好的选择 如果希望服务器仅在有客户端时运行,并且可能(或不)希望这些客户端共享同一个服务器进程,则可以选择进程外COM服务器 对于COM,您必须使用DCOM与服务器进程通信。对于服务,可以使用DCOM、命名管道、RPC或其他IPC机制但是,如果您希望用C#编写服务器代码,那么DCOM似乎是一个奇怪的选择——可以用C#创建DCOM服务器,但这确实很尴尬。正如Kevin所指出的,WCF/WAS/Remoting可能是更容易的选择。但请记住,这样的解决方案几乎必然比本机COM服务器或服务具有更高的开销w.r.t.内存消耗。如果这段软件要安装在客户端机器上,我会选择本机解决方案。您的要求有点矛盾——如果服务器必须无限期运行,而不管是否有客户端提供服务,并且进程必须在所有客户端之间共享,无论在哪个会话中运行,Windows服务都是一条必由之路 如果希望服务器仅在有客户端时运行,并且可能(或不)希望这些客户端共享同一个服务器进程,则可以选择进程外COM服务器 对于COM,您必须使用DCOM与服务器进程通信。对于服务,可以使用DCOM、命名管道、RPC或其他IPC机制
但是,如果您希望用C#编写服务器代码,那么DCOM似乎是一个奇怪的选择——可以用C#创建DCOM服务器,但这确实很尴尬。正如Kevin所指出的,WCF/WAS/Remoting可能是更容易的选择。但请记住,这样的解决方案几乎必然比本机COM服务器或服务具有更高的开销w.r.t.内存消耗。如果要在客户端计算机上安装此软件,我更喜欢本机解决方案。您似乎要求两件事-