Wcf之三(通过配置文件部署服务)
简介:
上一节主要讲解了接口契约式编程,这与我们的wcf编程有什么联系呀?理解好前一节在后面学习中更容易理解。因为wcf就是契约式编程,服务器、客户端、服务器和客户端之间的契约。
Wcf服务契约
服务契约描述了暴露给外部的类型(接口或类)、服务所支持的操作、使用的消息交换模式和消息的格式。每个WCF服务必须实现至少一个服务契约。使用服务契约必须要引用命名空间System.ServiceModel 。
服务三要素
规定服务的三要素使服务与客户端联系更加方便。1、Address以为着在哪里,客户端通过地址才能访问到2、Binding 意味着怎么做(与地址的传输方式要匹配)3、contract意味着做什么(服务契约)。
例子
接口契约定义
新创建一个类库,在类库中新建接口这里命名myInterface 。引用
<span style="font-size:18px;">using System.ServiceModel接口的写法 namespace ClassLibrary { [ServiceContract] public interface myInterface { [OperationContract] string getServiceTime();//得到服务端时间 } }</span>
服务端
1、实现服务接口
这里创建一个winform程序。引用契约接口类库并实现。
<span style="font-size:18px;">class ServiceFunction:ClassLibrary.myInterface { public stringgetServiceTime() { return DateTime.Now.ToString(); } }</span>
2、规定服务三要素在winForm中通过App.config文件规定。
在configuration节点下添加如下
<span style="font-size:18px;"><system.serviceModel> <services> <!--name对应于提供服务的类名字包括命名空间 behaviorConfiguration规定行为与下面的behavior节点中的name一致--> <servicename="WinForm.ServiceFunction"behaviorConfiguration="testBehavior"> <host> <baseAddresses> <!--规定服务的地址--> <addbaseAddress="http://localhost:8002/test"/> </baseAddresses> </host> <!--binding 规定服务的传输方式 contract服务契约 也就是类库中的接口--> <endpointaddress=""binding="basicHttpBinding"contract="ClassLibrary.myInterface"></endpoint> </service> </services> <behaviors> <serviceBehaviors> <!--规定客户端行为 这里为可见--> <behaviorname="testBehavior"> <serviceMetadatahttpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel></span>
3、启动服务
这里在winform下拖一个button控件,点击事件开启服务,应用servicemodule
<span style="font-size:18px;"> ServiceHost host = null; private voidbutton1_Click(object sender, EventArgs e) { host = new ServiceHost(typeof(WinForm.ServiceFunction));//自己服务的类型 host.Open(); label1.Text = "服务已经开启"; }</span>
注意:如果不错访问权限不足,请用管理员什么运行。
到这里已经做完了,服务开启状态我们可以通过浏览器访问我们的服务地址。
总结
面向服务式编程是一种思想,我遵循这思想理解程序执行的流程慢慢的就好学懂了。
时间: 2024-10-10 23:01:44