C# WCF之用接口创建服务契约部署及客户端连接
Posted 安以痕_陈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WCF之用接口创建服务契约部署及客户端连接相关的知识,希望对你有一定的参考价值。
{ //服务契约
[ServiceContract]
public interface Interface1
{ //操作契约
[OperationContract]
string Hello();
}
}
class HelloClass:ClassLibrary1.Interface1
{
public string Hello()
{
return "Hello wcf!";
}
}
基本创建一个服务。创建之后需要部署。一般分为配置文件部署和代码部署。
A:Address 意味着在哪里(也含有传输方式信息)
B:Binding 意味着怎么做(与地址的传输方式要匹配)
C:Contract意味着做什么(服务契约)
<system.ServiceModel>
<services>
<service>
<endpoint/> /*服务和终结点*/
</service>
</services>
<bindings> /*绑定(可选)*/
<binding>
</binding>
</bindings>
<behaviors> /*行为(可选) */
<behavior>
</behavior>
</behaviors>
</system.ServiceModel>
“http://www.sina.com.cn:3200/mathservice”这个URI 具有以下四个部分:
– 方案:http:
– 计算机:www.sina.com.cn
– (可选)端口:3200
– 路径:/mathservice
<services>
<service name="ConsoleApplication1.HelloClass" behaviorConfiguration="testBehavior"> <!--name为实现该契约的类-->
<host>
<baseAddresses>
<add baseAddress="http://localhost:8002/test"></add><!--基地址-->
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="ClassLibrary1.Interface1"></endpoint>
<!--已有baseAddress基地址,address可为空;binding为绑定类型,对应Http协议;contract为所公开的协议,即所创建的服务契约接口-->
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="testBehavior"> <!--与上面behaviorConfiguration="testBehavior"保持一致,可为空-->
<serviceMetadata httpGetEnabled="true"/> <!--指定是否要发布元数据以HTTP/Get获取-->
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
ServiceHost host = null;
host = new ServiceHost(typeof(ConsoleApplication1.HelloClass));
host.Open();
Console.WriteLine("服务已经启动!");
Console.ReadLine();
host = new ServiceHost(typeof(ConsoleApplication2.HelloClass));
NetTcpBinding tcpBind = new NetTcpBinding();//设定绑定类型
string address = "net.tcp://localhost:3200/hello";
host.AddServiceEndpoint(typeof(ClassLibrary1.Interface1), tcpBind, address);//在服务终结点添加,协议,绑定类型,终结点地址
host.Opened += delegate { Console.WriteLine("服务已启动!"); Console.ReadLine(); };
host.Open();
//绑定形式
NetTcpBinding bind = new NetTcpBinding();
//提供客服端与服务建立连接的地址
EndpointAddress address = new EndpointAddress("net.tcp://localhost:3200/hello");
//客户端通关通道工厂将消息发送到不同配置的服务终结点
ChannelFactory<ClassLibrary1.Interface1> factory = new ChannelFactory<ClassLibrary1.Interface1>(bind, address);
//通过通道工厂对象来获取指定类型
ClassLibrary1.Interface1 myobject = factory.CreateChannel();
string s = myobject.Hello();
Console.WriteLine(s);
Console.ReadLine();
先启动服务,在运行客户端。
以上是关于C# WCF之用接口创建服务契约部署及客户端连接的主要内容,如果未能解决你的问题,请参考以下文章