zoukankan      html  css  js  c++  java
  • WCF

    WCF实例(带步骤) 复制代码 代码如下: <xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

    本篇转自百度文档,自己试过,确实可以用。

    以订票为例简单应用wcf

    新建一个wcf服务应用程序

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客

    在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。 [ServiceContract] // 服务合同 即提供服务的接口或类 public interface IService1 { [OperationContract] /* 增加车票的方法*/ void AddTicket(int count); [OperationContract] /*购买车票的方法*/ int BuyTickets(int Num); [OperationContract] //服务契约 即提供服务的实现方法 /*查询车票的方法*/ int GetRemainingNum(); // 任务: 在此处添加服务操作 } // 使用下面示例中说明的数据约定将复合类型添加到服务操作。 [DataContract] //数据契约 public class Ticket { bool boolCount = true;//判断是否还有车票 int howmany = 10;//还有多少车票 [DataMember] /*判断是否还有票*/ public bool BoolCalue { get { return boolCount; } set { if (HowMany > 0) { boolCount = false; } else { boolCount = true; } } } [DataMember] /*返回票数*/ public int HowMany { get { return howmany; } set { howmany = value;} } } }

    在Service1.svc中实现契约服务 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。 public class Service1 : IService1 { Ticket T=new Ticket(); /*实现添加票数的方法*/ public void AddTicket(int count) { T.HowMany=T.HowMany+count; } /*实现返回票数的方法*/ public int GetRemainingNum() { return T.HowMany; } /*实现购买车票的方法*/ public int BuyTickets(int Num) { if (T.BoolCalue) { T.HowMany = T.HowMany - Num; return 1; } else { return 0; } } } }

    添加宿主程序用于监测服务 添加WinForm项目加入解决方案 界面如下图:

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客

    界面上两个按钮: 启动服务按钮: 用于启动wcf服务 停止服务按钮: 用于停止wcf服务 Label: 用于显示服务相关信息 后台代码为: 应用命名空间 using System.ServiceModel; 添加引用 wcf服务生成的dll文件 复制代码 代码如下: public partial class Form1 : Form { public Form1() { InitializeComponent(); } ServiceHost host = null;//定义 ServiceHost private void button1_Click(object sender, EventArgs e) { host = new ServiceHost(typeof(WcfDemo.Service1));//WcfDemo.Service1 为引用的dll中的服务 host.Open();//启动服务 this.label1.Text = "服务已启动"; }

    private void button2_Click(object sender, EventArgs e) { if (host.State != CommunicationState.Closed)//判断服务是否关闭 { host.Close();//关闭服务 } this.label1.Text = "服务已关闭"; } }

    接下来配置app.config 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services><!--添加服务--> <service name="WcfDemo.Service1" behaviorConfiguration="CalculatorServiceBehavior"> <!--name 必须与代码中的host实例初始化的服务一样 behaviorConfiguration 行为配置 --> <host> <baseAddresses> <!--添加调用服务地址--> <add baseAddress="http://localhost:8000/"/> </baseAddresses>

    </host> <!--添加契约接口 contract="WcfDemo.IService1" WcfDemo.IService1为契约接口 binding="wsHttpBinding" wsHttpBinding为通过Http调用--> <endpoint address="" binding="wsHttpBinding" contract="WcfDemo.IService1"></endpoint> </service>

    </services> <!--定义CalculatorServiceBehavior的行为--> <behaviors> <serviceBehaviors> <behavior name="CalculatorServiceBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/>

    </behavior>

    </serviceBehaviors>

    </behaviors> </system.serviceModel> </configuration>

    程序运行结果:

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客 在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客

    到这服务以及服务主机都已经创建好了下面该创建测试客户机了! 新建个WinForm程序做为我们的测试客户机 界面两个按钮一个label

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客

    购买车票:调用wcf服务的BuyTickets()方法 查询车票:调用wcf服务的GetRemainingNum()方法 label用于显示运行信息 为项目添加服务引用 地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客 后台代码为: 复制代码 代码如下: public partial class Form2 : Form { public Form2() { InitializeComponent(); } ServiceReference1.Service1Client TClient = new WinFormsClient.ServiceReference1.Service1Client(); //声明客户端调用 private void button1_Click(object sender, EventArgs e) { int i = TClient.BuyTickets(2); //调用WCF中的方法 if (i == 1) { this.label1.Text = "购买成功"; } this.label1.Text += "剩余车票还有" + TClient.GetRemainingNum().ToString(); } private void button2_Click(object sender, EventArgs e) { this.label1.Text = ""; this.label1.Text = TClient.GetRemainingNum().ToString();//调用WCF中的方法 } }

    点击购买车票时调用wcf的BuyTicket()方法并返回剩余车票的信息 点击查看车票时调用wcf的GetRemainingNum()得到剩余车票信息 运行结果如下: 点击购买车票:

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客

    点击查询票数时:

    (C)一个WCF简单实例 - 蜕变之旅 - 蜕变之旅的博客 详细出处参考:http://www.jb51.net/article/31639.htm

  • 相关阅读:
    Sublime Text 3 快捷键汇总
    jquery远程引用地址大全
    我的网站以后要如何设计
    word中特殊符号的替换
    如何有效地提升JavaScript 水平?
    HTML5坦克大战(2)绘制坦克复习
    JavaScript中的对象冒充
    让年轻程序员少走弯路的14个忠告
    ASCII
    可以用旋转法绘制平行四边形
  • 原文地址:https://www.cnblogs.com/Dhouse/p/3488519.html
Copyright © 2011-2022 走看看