2010-11-11 76 views
0

我们在C#中开发了一个.net库。它需要暴露给远程机器中可用的非托管C++客户端。 通过什么方法可以解决这个问题?如何将.net对象暴露给远程C++客户端

+0

非托管代码通过COM访问.NET功能。你可以做那个客户端并使用非托管远程(例如DCOM,基本的RPC甚至Corba)。或者您可以在远程计算机上执行此操作并使用.NET远程处理。我对后者没有经验。在早期它基于SOAP,可能已经详细阐述并且现在称为更加奇特的东西。但这是大局。检查文档以获取详细信息(或者,正如我们过去常说的,RTFM,比如MIT仍然有RTFM网站,但现在在政治上不正确)。干杯, – 2010-11-11 05:55:29

+0

或者,“暴露”的意思是什么? – 2010-11-11 05:58:43

+0

非常感谢! 我想增加更清晰的问题: 1.在服务器端,我们有一个Windows服务用于托管.net远程处理对象。 2. C#包装库用于访问此远程处理对象。 3.如果我们没有安装.net框架,我需要将这个包装库暴露给远程机器。它是一台Windows XP机器。 4.远程机器有一个win32/ATL/MFC C++客户端,需要调用这个不在本地的包装库。 你能明白吗? – karthik 2010-11-11 09:21:54

回答

0

这真的取决于你正在使用的操作系统。如果它是Windows 7/Windows Server 2008(或更高版本,为了将来的正确性),您应该研究WWSAPI,因为这是Microsoft的WCF本机代码实现。早期的Windows操作系统可能需要使用为与WCF互操作而设计的第三方SOAP库。我不确定这些日子的状况。

假设上述不可行,另一个选择是在远程机器上编写C#或C++/CLI代理,非受管客户机可以使用标准进程间通信(如RPC,共享内存,COM或其他技术。代理然后处理到C#服务器的WCF调用。这在大多数情况下应该是可行的。

编辑:我假设使用WCF进行使用.Net代码的远程通信。有关其他潜在项目的答案,其他人将不得不回答,因为我在这些领域的知识比较粗略。

+0

非常感谢! 我想增加更清晰的问题: 1.在服务器端,我们有一个Windows服务用于托管.net远程处理对象。 2. C#包装库用于访问此远程处理对象。 3.如果我们没有安装.net框架,我需要将这个包装库暴露给远程机器。它是一台Windows XP机器。 4.远程机器有一个win32/ATL/MFC C++客户端,需要调用这个不在本地的包装库。 你能明白吗? – karthik 2010-11-11 09:23:30

+0

如果远程计算机没有.Net框架,则必须查看可与WCF互操作的第三方库或使用其他一些机器间通信技术。 – dlanod 2010-11-11 11:45:33

相关问题