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>
注意:如果不错访问权限不足,请用管理员什么运行。
到这里已经做完了,服务开启状态我们可以通过浏览器访问我们的服务地址。
总结
面向服务式编程是一种思想,我遵循这思想理解程序执行的流程慢慢的就好学懂了。