1.你的第一个服务和主持人

创建一个使用 ServiceContract 属性修饰的界面和使用 OperationContract 属性修饰的成员函数。

namespace Service
{
    [ServiceContract]
    interface IExample
    {
        [OperationContract]
        string Echo(string s);
    }
 }

创建一个实现此接口的具体类,你就拥有了该服务。

namespace Service
{
    public class Example : IExample
    {
        public string Echo(string s)
        {
            return s;
        }
    }
}

然后创建运行服务的主机。这可以是任何类型的应用程序。控制台,服务,GUI 应用程序或 Web 服务器。

namespace Console
{
    using Service;
  
    class Console
    {
        Servicehost mHost;

        public Console()
        {
            mHost = new ServiceHost(typeof(Example));               
        } 

        public void Open()
        {
            mHost.Open();
        }
    
        public void Close()
        {
            mHost.Close();
        }

        public static void Main(string[] args)
        {
            Console host = new Console();
            
            host.Open();    

            Console.Readline();

            host.Close();
        }
    }
}

ServiceHost 类将读取配置文件以初始化服务。

<system.serviceModel>
  <services>
    <service name="Service.Example">
      <endpoint name="netTcpExample" contract="Service.IExample" binding="netTcpBinding" />
      <host>
        <baseAddresses>
          <add baseAddress="net.tcp://localhost:9000/Example" />
        </baseAddresses>
      </host>
    </service>
  </services>      
</system.serviceModel>