zoukankan      html  css  js  c++  java
  • WCF简单示例

    1、服务契约
    using System.ServiceModel;

    namespace Contracts
    {
    [ServiceContract(Name = "GatherService", Namespace = "http://www.yostec.com/")]
    public interface IGather
    {
    [OperationContract]
    int Add(string DANo, DateTime DATime, DateTime LogTime, string MeterNo, string MeterType, double Qty, string password, string regionno);
    }
    }
    服务契约一般是以“接口”的形式定义,这样可以确保不同的契约可以被服务方法组合实现。另外,定义契约要采用“ServiceContract”标记,需引用命名空间“System.ServiceModel”。


    2、服务方法
    namespace Services
    {
    public class GatherService:IGather
    {
    public int Add(string DANo, DateTime DATime, DateTime LogTime, string MeterNo, string MeterType, double Qty, string Password, string RegionNo)
    {
    int flag = 0;
    if (Password == "123456")
    {
    CollectDatas collectdatas = new CollectDatas();
    collectdatas.DANo = DANo;
    collectdatas.DATime = DATime;
    collectdatas.LogTime = LogTime;
    collectdatas.MeterNo = MeterNo;
    collectdatas.MeterType = MeterType;
    collectdatas.Qty = Qty;
    collectdatas.RegionNo = RegionNo;

    CollectDatasService collectdatasservice = new CollectDatasService();

    try
    {
    collectdatasservice.AddCollectDatas(collectdatas);
    flag = 1;
    }

    catch(Exception)
    {
    flag = 0;
    }



    }
    else
    {
    flag = 2;
    }

    return flag;
    }
    }
    }
    服务方法是对契约中定义的内容的实现,一般包含数据交互,所以需要调用数据访问层。


    3、服务方法宿主“ServiceHost”
    public static int HostGatherService()
    {
    //打开数据库连接
    Common.Common.GatherServiceConn = new Common.DataAccessManual();

    int flag = 0;
    ServiceHost calculatorSerivceHost = new ServiceHost(typeof(GatherService));

    calculatorSerivceHost.Opened += delegate
    {
    flag = 1;
    };


    calculatorSerivceHost.Open();

    return flag;

    }
    }
    “ServiceHost”会自动检索配置文件的服务配置信息,根据配置信息初始化服务。如果服务“经常持续”被访问,可以给服务一个持续开发的数据库连接。

    4、服务配置信息
    <system.serviceModel>
    <behaviors>
    <serviceBehaviors>
    <behavior name="GatherServiceBehavior">
    <serviceMetadata httpGetEnabled="true"/>
    </behavior>
    </serviceBehaviors>
    </behaviors>

    <services>
    <service name="Services.GatherService" behaviorConfiguration="GatherServiceBehavior">
    <endpoint address="" binding="basicHttpBinding" contract="Contracts.IGather"/>
    <endpoint address="" binding="netTcpBinding" contract="Contracts.IGather"/>
    <host>
    <baseAddresses>
    <add baseAddress="http://localhost:9998/GatherService"/>
    <add baseAddress="net.tcp://localhost:9999/GatherService"/>
    </baseAddresses>
    </host>
    </service>
    </services>
    </system.serviceModel>

    VS2010中自带“WCF”服务配置工具,可以使用它对“服务节点”等进行配置,比如配置“身份认证方式”,“服务行为”等。另外,WCF服务可以寄宿在子线程,以避免资源竞争。

  • 相关阅读:
    学习进度条(六)
    结对开发——-四则运算四
    结对开发——最大联通子数组的和
    团队项目成员和题目
    下载与安装APache Cordova
    学习进度条(五)
    构建之法阅读笔记05
    敏捷开发方法综述
    学习进度条(四)
    psp项目计划
  • 原文地址:https://www.cnblogs.com/ssol/p/2855133.html
Copyright © 2011-2022 走看看