1、OperationContract /服务契约 即提供服务的实现方法/*查询车票的方法*/int GetRemainingNum();/ 任务: 在此处添加服务操作/ 使用下面示例中说明的数据约定将复合类型添加到服务操作。DataContract /数据契约 public class Ticketbool boolCount = true;/判断是否还有车票int howmany = 10;/还有多少车票DataMember/*判断是否还有票*/public bool BoolCalueget return boolCount; set if (HowMany 0)boolCount = fa
2、lse;elseboolCount = true;/*返回票数*/public int HowManyget return howmany;set howmany = value;在Service1.svc中实现契约服务 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。public class Service1 : IService1 Ticket T=new Ticket();/*实现添加票数的方法*/public void AddTicket(int count)T.HowMany=T.HowMany+cou
3、nt;/*实现返回票数的方法*/public int GetRemainingNum()return T.HowMany;/*实现购买车票的方法*/public int BuyTickets(int Num)if (T.BoolCalue)T.HowMany = T.HowMany - Num;return 1;return 0;添加宿主程序用于监测服务添加WinForm项目加入解决方案界面如下图:界面上两个按钮:启动服务按钮: 用于启动wcf服务停止服务按钮: 用于停止wcf服务Label: 用于显示服务相关信息后台代码为:应用命名空间 using System.ServiceModel;添
4、加引用 wcf服务生成的dll文件public partial class Form1 : Formpublic Form1()InitializeComponent();ServiceHost host = null;/定义 ServiceHostprivate void button1_Click(object sender, EventArgs e)host = new ServiceHost(typeof(WcfDemo.Service1);/WcfDemo.Service1 为引用的dll中的服务host.Open();/启动服务this.label1.Text = 服务已启动;pr
5、ivate void button2_Click(object sender, EventArgs e)if (host.State != CommunicationState.Closed)/判断服务是否关闭host.Close();/关闭服务服务已关闭接下来配置app.configconfigurationsystem.serviceModelservices!-添加服务-service name=WcfDemo.Service1 behaviorConfiguration=CalculatorServiceBehavior-name 必须与代码中的host实例初始化的服务一样 behav
6、iorConfiguration 行为配置 -hostbaseAddresses-添加调用服务地址-add baseAddress=http:/localhost:8000/baseAddresses/host-添加契约接口 contract=WcfDemo.IService1 WcfDemo.IService1为契约接口 binding=wsHttpBinding wsHttpBinding为通过Http调用-endpoint address= binding= contract=/endpoint/service/services-定义CalculatorServiceBehavior的行
7、为-behaviorsserviceBehaviorsbehavior name=serviceMetadata httpGetEnabled=trueserviceDebug includeExceptionDetailInFaults=false/behavior/serviceBehaviors/behaviors/system.serviceModel/configuration程序运行结果:在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务到这服务以及服务主机都已经创建好了下面该创建测试客户机了!新建个WinForm程序做为我
8、们的测试客户机界面两个按钮一个label购买车票:调用wcf服务的BuyTickets()方法查询车票:调用wcf服务的GetRemainingNum()方法label用于显示运行信息为项目添加服务引用 地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)后台代码为:public partial class Form2 :public Form2()ServiceReference1.Service1Client TClient = new WinFormsClient.ServiceReference1.Service1Client();/声明客户端调用int i = TClient.BuyTickets(2); /调用WCF中的方法if (i = 1)购买成功this.label1.Text += 剩余车票还有 + TClient.GetRemainingNum().ToString();this.label1.Text = TClient.GetRemainingNum().ToString();/调用WCF中的方法点击购买车票时调用wcf的BuyTicket()方法并返回剩余车票的信息点击查看车票时调用wcf的GetRemainingNum()得到剩余车票信息运行结果如下:点击购买车票:点击查询票数时:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1