如果问题不是很清楚,请提前抱歉。
后台:我开发了一个.NET程序集,由作为Windows服务托管的COM对象使用。我已完成所有必需的COM相关内容。我的程序集已注册,由COM加载并成功与COM对象通信。事实上,我的程序集是COM和托管世界之间的代理。我之所以提到COM仅仅是为了描述这种情况。
目标:我的目标是公开公共CLR接口,以允许其他开发人员通过此公共接口使用我的代理。
问题:通常如何完成?我可以想到这个解决方案:消费者在某处注册,我将阅读并使用这个注册信息(程序集,实现我公共接口的类名)通过该公共接口与客户进行通信。
特殊说明:加载和托管我的程序集的系统服务在本地系统帐户下运行。将任意(可能是恶意的)客户端程序集加载到系统上下文中会被视为漏洞。我的代码中的任何漏洞都会危及整个系统。
我还应该探索哪些其他选择?
提前致谢!
答案 0 :(得分:0)
原始项目被拒绝,直到最近才被重新提出。我重新研究了这个问题,并提出了两种解决方案:
使用Managed Extensibility Framework将第三方可插拔模块加载到本地系统上下文中(通过接口)。当插件需要本地系统访问权限时,可以使用此功能。
使用WCF进行进程间通信(例如,为本地客户端使用命名管道传输)。