使用WCF服务作为类的一部分

时间:2013-01-25 23:37:12

标签: c# .net wcf

一个奇怪/愚蠢的问题,但是..我创建了一个简单的WCF服务,用于侦听来自数据库的数据请求。它作为我的机器上的服务正常运行没有问题,但我想知道 - 这个WCF服务可以用作普通类吗?说出类似

的内容
public static void main (String [] args) {
    MyWcfService service = new MyWcfService ();
    /* Code to set-up and start listening for requests... */
}

或者它只是必须在我的机器上作为服务运行?

2 个答案:

答案 0 :(得分:2)

取决于你想要达到的目标:

  • 如果使用类的功能,,您可以实例化它并将其称为成员
  • 如果将其用作真正的WCF服务,则需要先将其托管。在IIS或Windows服务等

答案 1 :(得分:0)

是的,您可以在控制台应用程序中自行托管WCF服务(如果这是您想要的)。您不需要IIS或Windows服务来托管WCF服务。这对于开发和调试来说非常方便,但可能不是您想要的生产。有关详细示例,请参阅this。我修改了示例以在下面的代码中完全配置端点。再一次,不是你想要的东西。

public static void Main()
{
    MyWcfService instance = new MyWcfService();
    using (ServiceHost serviceHost = new ServiceHost(instance))
    {
        var endpoint = serviceHost.AddServiceEndpoint(typeof(IMyWcfService), new NetTcpBinding(), "net.tcp://localhost:8000/MyWcfService");
        serviceHost.Open();

        // The service can now be accessed.
        Console.WriteLine("The service is ready at {0}", endpoint.Address);
        Console.WriteLine("Press <ENTER> to terminate service.");
        Console.WriteLine();
        Console.ReadLine();
    }
}

请注意,这使用单个实例来为所有调用提供服务,因为通常WCF会根据需要创建服务类的实例。