首页 > 代码库 > wcf之三(通过文件部署服务)

wcf之三(通过文件部署服务)

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>

注意:如果不错访问权限不足,请用管理员什么运行。

到这里已经做完了,服务开启状态我们可以通过浏览器访问我们的服务地址。

总结

         面向服务式编程是一种思想,我遵循这思想理解程序执行的流程慢慢的就好学懂了。

wcf之三(通过文件部署服务)