首页 / 知识
Windows在C#(.NET 2.0)中的进程间通信
2023-04-14 14:09:00

Interprocess communication for Windows in C# (.NET 2.0)我以前从未在Windows上进行过IPC。 目前,我正在开发一对程序,一个标准的GUI / CLI应用程序和一个Windows服务。 该应用必须告知服务该怎么做。 因此,假设仅在本地进行通信,这两个过程的最佳通信方法是什么? 最好的地方定义为更健壮,更不易出错,而不是性能最高或最容易编写的地方。 代码示例将非常受欢迎,但不是必需的:-) 请注意,我在询问使用什么,标准TCP套接字,命名管道或仅其他一些通信方式。 谢谢! .Net中的IPC可以使用以下方法实现: 世界足球联合会 使用命名管道需要.Net 3.0及更高版本。 代码示例
远程处理 .Net 1.0发布的原始IPC框架。我相信远程处理将不再得到积极发展,建议您改用WCF。 代码示例 通过远程处理进行进程间通信-使用TCP通道 资源资源
使用csharptest-net RpcLibrary的Win32 RPC 我最近遇到一个项目,该项目包装了Win32 RPC库,并创建了一个.net类库,该库可用于本地和远程RPC。 项目主页:http://csharptest.net/projects/rpclibrary/ MSDN参考:
还有一个在库顶部运行的google协议缓冲区rpc客户端:https://code.google.com/p/protobuf-csharp-rpc/ WM_COPYDATA 为了完整起见,还可以将WIN32方法与WM_COPYDATA消息一起使用。在.Net 1.1中,我之前曾使用过此方法来创建一个单实例应用程序,该应用程序从Windows资源管理器中打开多个文件。 资源资源
插座 使用自定义协议(较难) 仅对于本地用户,我们已成功使用命名管道。避免了TCP的开销,并且(至少对于.NET)效率很高,同时还具有不错的API。 与Windows服务通信的标准方法是使用服务控制代码。 Windows服务可以接收从0到255的代码。0-127保留给系统。 128到255可用于自定义命令。 如果您需要使用数据库,xml,文件,tcp,http等将复杂的对象发送到服务,则除了用于发送控制命令(如重载配置,过程项等)外,还应使用此控制代码。 还有其他功能可用,例如查询服务。请参阅Windows服务文档和api。 Windows Services in C#: Sending Commands to your Windows Service (part 7) 由于您限于.Net 2.0,因此WCF可能不是一个选择。您可以将具有共享内存的.Net远程处理用作同一计算机上应用程序域之间的基础通信机制。使用这种方法,您可以轻松地将进程放在不同的计算机上,并用网络协议替换共享内存协议。 我想补充一下讨论。如果这是外面的方法,请责骂我-但是信号量(或多个信号量)不能用于基本的交流吗? 最好的选择是使用WCF。您将能够在Windows服务中创建服务主机,并公开GUI应用程序可以使用的定义明确的界面。如果愿意,WCF将允许您通过命名管道进行通信,或者可以选择任何其他通信协议,例如TCP,HTTP等。使用WCF,您将获得强大的工具支持和大量可用信息。 |
最新内容
相关内容
linux服务器下载命令?
linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,linux下lftp连接ftp服务器上传下载命令连接ftp服务器 格式:ftp [holinux服务端退出命令?
linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,linux的telnet退出命令1、Telnet测试一般使用的是TelnetIP(主机)linux中启动服务命令?
linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,linux如何启动服务1、具体步骤如下:首先,我们需要修改mysql的配置文linux服务器常用命令?
linux服务器常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,设备,功能,重启服务器的linux命令1、首先我首要把linux开机, 命令 rebot 这个linux筛选服务命令?
linux筛选服务命令?,服务,系统,状态,软件,环境,主体,技术,号码,发行,名称,查看linux开启了哪些服务查看客户机IP,看到已经是DHCP 服务器里面设linux服务器保存命令?
linux服务器保存命令?,时间,状态,档案,电脑,命令,信息,位置,编辑,文件,模式,Linux的vi编辑后如何保存?1、按ESC键回到命令模式,输入:w保存即可,或linux服务器扫盘命令?
linux服务器扫盘命令?,地址,工作,命令,目录,数据,单位,名称,系统,管理,信息,Linux常用命令有哪些1、linux常用命令如下:查看内核版本:uname-a。linux命令切换服务器?
linux命令切换服务器?,地址,名称,系统,环境,实时,命令,服务器,脚本,路径,版本,如何远程管理Linux服务器?1、主控端Windows在控制窗口内点击“程序执行linux命令?
程序执行linux命令?,系统,工作,地址,环境,信息,管理,命令,文件,目录,程序,linux下如何运行可执行文件1、先将终端所在路径切换到python脚本文linux退出程序命令?
linux退出程序命令?,档案,管理,系统,命令,编辑,进程,模式,文件,程序,指令,linux用VI编辑后保存退出命令是什么啊?linux退出vi编辑命令有四种:使linux和程序命令大全?
linux和程序命令大全?,系统,工作,地址,管理,标准,信息,命令,时间,周期性,目录,Linux必学的60个命令-文件处理1、安装和登录命令:login、shutdowlinux程序命令不可用?
linux程序命令不可用?,系统,网络,地址,命令,情况,名称,信息,服务,密码,程序,linux命令不可用直接在linux命令行界面输入如下,然后回车。如果系