公开.Net服务

时间:2010-03-27 10:45:24

标签: c# .net com service

我在.Net中编写了一个Windows服务,我希望公开要被其他.Net代码调用的类。具体来说,我有一个API,我想通过将放在GAC中的DLL公开,我希望GAC中的DLL使用.Net Windows服务的类。我需要这种架构,因为Windows服务中的代码需要作为API的调用者以不同的用户/帐户运行(该帐户将在安装时创建)。

我的计划是通过COM公开Windows服务类(regasm.exe注册并使用tlbexp.exe创建类型库),然后通过COM(通过tlbimp.exe导入)调用GAC DLL中的类。但是我从tlbimp得到以下错误:

TlbImp:错误TI0000:System.Runtime.InteropServices.COMException - 类型库''是从CLR程序集导出的,不能重新 作为CLR程序集导入。

这对我来说意味着我的方法不会轻易起作用。我只能认为我可能需要一个C ++ DLL作为我的GAC DLL调用COM调用的桥梁,但这似乎是一个讨厌的解决方案。

我基本上在寻找建议。有谁知道如何将.Net中编写的Windows服务的类公开给其他.Net代码?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我会将所有Windows服务逻辑放在一个单独的DLL(例如x.dll)中。 在x.dll中为类定义接口。 将Windows服务和其他.Net项目中的引用添加到x.dll项目中。这样就可以实现可重用性。