您的位置:首页 > 其它

重温WCF之一个服务实现多个契约(二)

2014-05-30 16:46 399 查看
public class ServiceImp : IService1,IService2,IService3
{
public string SayHelloA()
{
return "你好,这是第一个服务协定。";
}

public string SayHelloB()
{
return "你好,这是第二个服务协定。";
}

public string SayHelloC()
{
return "你好,这是第三个服务协定。";
}
}

[ServiceContract]
public interface IService1
{
[OperationContract]
string SayHelloA();
}

[ServiceContract]
public interface IService2
{
[OperationContract]
string SayHelloB();
}

[ServiceContract]
public interface IService3
{
[OperationContract]
string SayHelloC();
}


使用代码的方式:

using (ServiceHost host = new ServiceHost(typeof(ServiceImp)))
{
host.AddServiceEndpoint(typeof (IService1), new WSHttpBinding(), "http://127.0.0.1:8888/service1");
host.AddServiceEndpoint(typeof(IService2), new WSHttpBinding(), "http://127.0.0.1:8888/service2");
host.AddServiceEndpoint(typeof(IService3), new WSHttpBinding(), "http://127.0.0.1:8888/service3");
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.HttpGetUrl = new Uri("http://127.0.0.1:8888/service");  //httpGetUrl客户端引用的地址
host.Description.Behaviors.Add(behavior);
host.Opened += delegate
{
MessageBox.Show("Service2已经启动");
};
host.Open();
}


使用配置文件的方式:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<!--httpGetUrl客户端引用的地址-->
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:8888/service"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="WindowsFormsApplication2.ServiceImp" behaviorConfiguration="serviceBehavior">
<endpoint address="http://127.0.0.1:8888/service1" binding="wsHttpBinding" contract="WindowsFormsApplication2.IService1"></endpoint>
<endpoint address="http://127.0.0.1:8888/service2" binding="wsHttpBinding" contract="WindowsFormsApplication2.IService2"></endpoint>
<endpoint address="http://127.0.0.1:8888/service3" binding="wsHttpBinding" contract="WindowsFormsApplication2.IService3"></endpoint>
</service>
</services>
</system.serviceModel>
</configuration>


using (ServiceHost host = new ServiceHost(typeof(ServiceImp)))
{
host.Opened += delegate
{
MessageBox.Show("Service2已经启动");
};
host.Open();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: