(C#)一个WCF简单实例

1176人阅读 评论(0) 收藏 举报
分类:

以订票为例简单应用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简单实例 - 蜕变之旅 -             蜕变之旅的博客

 
在服务启动后可通过appConfigbaseAddress节点中的baseAddress地址查看Wcf服务
 

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

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

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

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

(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中的方法 } }
复制代码

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

 

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

 
点击查询票数时:

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

ODBC文件DSN 的结构

                       ODBC文件DSN 的小秘密1. 用附件带的WORDPAD文本编辑器,  建立一后缀名为 .DSN的文件,  格式如下, 然后按文本格式存起来:注意: 格...
  • greenlea
  • greenlea
  • 2000-12-14 18:44:00
  • 983

C#代码直接调用WCF服务

public string GetResult(string inputmodel) { string modelstring = null; ...
  • pengdayong77
  • pengdayong77
  • 2016-04-29 18:42:04
  • 1666

VS 2010中使用C#创建及调用WCF完整实例(Windows服务宿主)

一个傻瓜式的Windows服务宿主模式下的WCF的完整示例 只注重于实现,不讲理论...
  • meerio
  • meerio
  • 2015-10-26 21:49:13
  • 6629

C#WCF实例,服务器与客户端程序

  • 2016年05月26日 10:10
  • 583KB
  • 下载

C# Winform WCF 调试服务端的程序(三种方法)

方法一:服务端设置:1、打开需要调试的解决方案,在WCF服务端项目上右键,将其设置为启动项目2、在该解决方案下点击或者直接按F5启动WCF服务端项目。3、寻找端口号:i、方式一启动调试后,浏览器中会出...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015-09-04 10:49:36
  • 5557

C# WCF基本使用

WCF简介 WCF是一组数据通信的应用程序开发接口,可以理解为一种windows通信接口,在CS架构中可以实现客户端与服务器端的计算、文件传输等。 WCF合并了web服务、消息队列等许多功能,它是...
  • u012526003
  • u012526003
  • 2018-02-25 15:32:45
  • 80

C#POST请求WCF服务

  • 2015年02月03日 17:24
  • 32KB
  • 下载

C#学习笔记32——WCF

Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架。借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。服务终结点...
  • byxdaz
  • byxdaz
  • 2011-09-04 23:17:21
  • 5960

C# 一个WCF简单实例

WCF实例(带步骤)  复制代码代码如下:   本篇转自百度文档,自己试过,确实可以用。  以订票为例简单应用wcf  新建一个wcf服务应用程序 ...
  • albert528108
  • albert528108
  • 2013-09-03 16:44:00
  • 3281

C#(Mono)开发手机及平板应用入门篇(含WCF服务实现)

摘要:本文是在开发Mono手机平板项目时,对安装Mono for Android工具,调用WCF服务,等一些要注意的问题进行汇总;其中包括WCF异步调用,SOAP代理类调用等。 一:前提: 1> ...
  • besley
  • besley
  • 2012-09-10 11:15:02
  • 4261
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 63万+
    积分: 6987
    排名: 4119
    博客专栏
    文章存档