【发布时间】:2014-05-17 06:15:31
【问题描述】:
我有用 .NET C# 编写的桌面应用程序 A1.exe,我想创建类似 A1API.dll 的东西,其他第三方应用程序可以使用它来与我的应用程序 A1.exe 进行进程间双向通信。
我已经有了一些基于 IPC Remoting 的 A1API.dll 原型。在 dll 中有 Client.cs MarshalByRefObject 类,它包含自己的线程,通过每秒检查一次来保持与 Server.cs MarshalByRefObject 类实例的连接。这种结构允许我的 A1.exe 应用程序通过自动重新连接所有客户端重新启动,这些客户端也在服务器中注册以侦听 A1.exe 事件。此外,如果任何客户端应用程序意外关闭,服务器会将其从其客户端集合中删除,因为即使调用方法 Client.Equals 也会开始引发错误。这个问题我用 ClientWrapper.cs 类解决了。
这一切都很好!
假设库 A1API.dll 将作为 API 发布到我的 A1.exe 应用程序的互联网上。
现在,我遇到了一个问题。如果我将来需要更改 A1API.dll 并扩展某些公共 Server.cs 方法中使用的一些枚举,该怎么办?在这种情况下,我应该使用字符串类型吗?
在枚举的场景中,我将扩展我的 A1.exe 和 A1API.dll,发布它,然后如果只重新安装 A1.exe,所有依赖于 A1API.dll 的客户端都会中断。
什么是整个事情的最佳解决方案?
我也会感谢任何改进/更改我的 IPC 解决方案的想法。谢谢。
【问题讨论】:
标签: .net dll interface ipc publishing