如何从另一个项目中的一个项目托管WCF服务?

时间:2012-04-16 14:17:59

标签: .net wcf

我创建了一个WCF服务,现在需要将其集成到另一个项目中。我不想自己提供服务,而是希望第二个项目来托管服务(这是一个Sitecore实现,从维护的角度来看会更容易)。这些项目有不同的解决方案。即使代码在另一个项目中,第二个项目是否可以提供服务?我知道我需要引用DLL,但除此之外我不确定如何设置服务。我假设我需要某种部分的服务实现,但这是我的知识范围。

另一个问题 - 服务是用VB编写的,而第二个项目是C#。这应该没关系,因为我通过DLL引用了所有服务代码,但我想我会提到它。

更新 我忘记提到的一件事是,我希望该服务也可以作为Web服务提供给其他应用程序。因此,该服务将在第二个应用程序中站起来,以便第三个应用程序可以调用该服务。我不知道这是否会影响到目前为止的任何回复。

3 个答案:

答案 0 :(得分:3)

如果您的WCF服务被编译为DLL,它应该像添加引用一样简单:

 static void Main(string[] args)
 {
     ServiceHost host = new ServiceHost(typeof(MyService));
     host.Open();

     Console.ReadLine();
     host.Close();
 }

答案 1 :(得分:1)

服务由运行ServiceHost的托管进程公开。

这可以是Windows服务,consle应用程序或IIS。

如果您在IIS中托管服务,则需要.SVC文件。

如果您不在WCF中托管,则应创建一个app.config文件,该文件将告诉WCF运行时您希望如何公开您的服务。为此,请使用<System.ServiceModel/>配置部分。

托管服务后,任何数量的客户端应用程序都可以使用它。

答案 2 :(得分:0)

您无需在主机项目中部分实施该服务。请记住,WCF服务在技术上只是另一个.NET类。它的暴露只是引用类的类型或.svc文件的ServiceHost代码(如果通过IIS公开)。而VB / C#也没有任何区别。