在C#中将数据从一个Windows窗体应用程序(办公室插件)传递到另一个(用C#编写的exe)的最佳方法是什么?
我会对此采取疯狂的措施,并说你可能希望办公室应用程序打电话回家你的exe?在此上下文中,"exe"是服务器,office应用程序是客户端.
如果您使用的是.NET 3.0,那么WCF可能是您最好的选择.我会将解决方案分为三个部分:
"共享合同".这些是描述您的服务的接口.如果您具有将在应用程序之间传递的自定义数据对象,则也应在此程序集中定义它们.此程序集在客户端和服务器之间共享.有关详细信息,请参阅" 设计服务合同 ".
"服务".这个程序集是你的"exe",它将引用合同并根据你的服务合同定义类.您的应用还将为您的服务托管ServiceClient.此应用程序的配置文件将定义ServiceClient将如何向客户端公开(可用作Web服务,tcp等).有关详细信息,请参阅" 实施服务合同 ".
"客户".您的插件将引用"共享合同"程序集,并将包含基于合同的服务客户端.可以使用svcutil.exe工具自动生成客户端.
"exe"和"插件"都需要定义绑定的配置文件.
当您想在客户端和服务器之间传递数据时,您的客户端将从"共享合同"程序集创建一个对象并将其传递给服务客户端.客户端的配置文件将确定将数据发送到何处.
有关如何创建基本WCF服务的分步教程,请查看本教程.