diff --git a/README.md b/README.md index 11a2b21..21d53d3 100644 --- a/README.md +++ b/README.md @@ -6,86 +6,15 @@ |--|--| |![](https://github.com/dotnet-campus/dotnetCampus.Ipc/workflows/.NET%20Core/badge.svg)|[![](https://img.shields.io/nuget/v/dotnetCampus.Ipc.svg)](https://www.nuget.org/packages/dotnetCampus.Ipc)| -项目级可用状态 -## 特点 - -- 采用两个半工命名管道 -- 采用 P2P 方式,每个端都是服务端也是客户端 -- ~~加入消息 Ack 机制,弱化版,因为管道形式只要能写入就是成功 Ack 了~~ -- 提供 PeerProxy 机制,利用这个机制可以进行发送和接收某个对方的信息 -- 追求稳定,而不追求高性能 - -## 功能 - -- [x] 通讯建立 -- [x] 消息收到回复机制 -- [x] 断线重连功能 -- [x] 大量异常处理 - -- [x] 支持裸数据双向传输方式 -- [x] 支持裸数据请求响应模式 -- [x] 支持字符串消息协议 -- [x] 支持远程对象调用和对象存根传输方式 -- [x] 支持 NamedPipeStreamForMvc (NamedPipeMvc) 客户端服务器端 MVC 模式 - -- [x] .NET Framework 4.5 -- [x] .NET Core 3.1 - - - -## 进度 - -- 基本完成 dotnetCampus.Ipc 的 API 定义和功能实现 -- 完成 客户端服务器端模型 -- 完成 P2P 式模型 -- 完成远程调用的实现 -- 完成 最小可用呆魔,支持主动和被动连接,支持通讯发送文本 -- 完成断线重连 -- 完成性能优化,包括内存优化 -- 完成 MVC 模式 -- 完成接入预编译提供上层的远程调用封装 - -## Usage +## 使用方法 库中提供了较为底层的通信方案,也提供了高级的封装方案(基于Json数据格式的通信方案),完整文档可参阅: -- [使用 .NET Remoting 模式的对象远程调用的 IPC 通讯方式](https://github.com/dotnet-campus/dotnetCampus.Ipc/blob/master/docs/IpcRemotingObject.md) -- [使用直接路由和 Json 通讯格式的 IPC 通讯方式](https://github.com/dotnet-campus/dotnetCampus.Ipc/blob/master/docs/JsonIpcDirectRouted.md) +- [使用 .NET Remoting 模式的对象远程调用的 IPC 通讯方式](./docs/IpcRemotingObject.md) +- [使用直接路由和 Json 通讯格式的 IPC 通讯方式](./docs/JsonIpcDirectRouted.md) -### 案例:Json通信(需要2.0.0-alpha版本以上) +### 案例:直接路由Json通信(需要2.0.0-alpha版本以上) #### 步骤一 @@ -111,6 +40,7 @@ using dotnetCampus.Ipc.Pipes; private JsonIpcDirectRoutedProvider CreateJsonIpcDirectRoutedProvider(string pipeName) { // 创建一个 IpcProvider,实际创建管道,进行IPC通信的底层对象 + // 可在 IpcConfiguration 进行详细的配置,包括配置断线重连、日志等级、线程池等等 var ipcProvider = new IpcProvider(pipeName, new IpcConfiguration()); // 创建一个 JsonIpcDirectRoutedProvider,封装了通信中的Json数据解析、简化方法调用 @@ -130,12 +60,14 @@ private JsonIpcDirectRoutedProvider CreateJsonIpcDirectRoutedProvider(string pip var ipcDirectRoutedProvider = CreateJsonIpcDirectRoutedProvider("我是接收消息的IPC对象"); //对无参的通知消息注册回调函数 -ipcDirectRoutedProvider.AddNotifyHandler("通知消息A", () => { +ipcDirectRoutedProvider.AddNotifyHandler("通知消息A", () => +{ Console.WriteLine("我是进程A,我收到了通知消息B,该消息无参数"); }); //对参数类型为ParamType的通知消息注册回调函数 -ipcDirectRoutedProvider.AddNotifyHandler("通知消息B", param => { +ipcDirectRoutedProvider.AddNotifyHandler("通知消息B", param => +{ Console.WriteLine($"我是进程A,我收到了通知消息B,该消息参数:{param.Message}"); }); @@ -191,6 +123,28 @@ var response = await ipcReceivingObjectA.GetResponseAsync("请求 *更多案例详见:* [Demo](https://github.com/dotnet-campus/dotnetCampus.Ipc/tree/master/demo) +## 特点 + +- 采用两个半工命名管道 +- 采用 P2P 方式,每个端都是服务端也是客户端 +- 提供 PeerProxy 机制,利用这个机制可以进行发送和接收某个对方的信息 +- 追求稳定,而不追求高性能 + +## 功能 + +- [x] 通讯建立 +- [x] 消息收到回复机制 +- [x] 断线重连功能 +- [x] 大量异常处理 + +- [x] 支持裸数据双向传输方式 +- [x] 支持裸数据请求响应模式 +- [x] 支持字符串消息协议 +- [x] 支持远程对象调用和对象存根传输方式 +- [x] 支持 NamedPipeStreamForMvc (NamedPipeMvc) 客户端服务器端 MVC 模式 +- [x] 支持直接路由的 Json 数据通讯方式 + + ## 感谢 - [jacqueskang/IpcServiceFramework](https://github.com/jacqueskang/IpcServiceFramework)