C# 一个WCF简单实例

C# 一个WCF简单实例

作者: 字体:[增加 减小] 类型:转载 时间:2012-10-27我要评论

以订票为例简单应用wcf程序,需要的朋友可以参考下

WCF实例(带步骤)

复制代码代码如下:

<xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

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

以订票为例简单应用wcf

新建一个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项目加入解决方案 
界面如下图:

界面上两个按钮: 
启动服务按钮: 用于启动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>

程序运行结果:

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

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

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

后台代码为:

复制代码代码如下:

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()得到剩余车票信息 
运行结果如下: 
点击购买车票:

点击查询票数时:

您可能感兴趣的文章:

时间: 2024-12-10 13:45:15

C# 一个WCF简单实例的相关文章

php+jquery+ajax+json的一个最简单实例

function ajaxTest(){    $username = $_POST['username'];$age = $_POST['age'];$job = $_POST['job'];$json_arr = array("username"=>$username,"age"=>$age,"job"=>$job);$json_obj = json_encode($json_arr);echo $json_obj;    

我的第一个WCF程序,很简单适合我等菜鸟

1.首先我罗列一下网站搜索并经过自己理解的WCF的含义: 1)WCF:(WIndows Communication Foundation)是由微软是由微软发展的一组数据通信的应用开发接口,可以翻译为Windows通讯接口,             最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息,专门用于面向服务开发(SOA) 2)WCF整合了.NET远程技术(Remoting).Web Service和微软消息队列服务等技术 2.下面我新建一个WCF

WCF寄宿(Host)之自我寄宿(Self-Hosting)简单实例【Windows应用程序宿主】

 前言: 以各种应用程序做自我寄宿的宿主原理方法大同小异,故:这儿直接上案例! 步骤一:创建服务契约和服务 1.新建解决方案:添加WCF服务库项目. 2.为了演示,我把自动生成的接口以及实现接口的类删除,自己添加一个WCF Service 3.撰写服务函数(同时,因为将原有的自动生成的接口与类删除了,故而需要将配置文件作相应的改动:) namespace wcfself02{ // NOTE: You can use the "Rename" command on the "

java swing最简单实例(1) 一个空的JFrame

我准备写一个系列的java图形化界面的教程.每个程序都尽量只写维持运行所需的最简化程度的代码,好让大家都看懂. 使用java图形界面只需要jdk,eclipse即可.如果布局抽象能力不够强大,建议装jigloo先用它布局然后再抄代码.(jigloo自动生成的代码冗余量太大,放的位置也不合理,只是为了看效果,之后还是需要ctrl+C,ctrl+V的) 要想放置一切东西,我们需要先有一个JFrame.所以就先讲一讲怎样创建一个空的JFrame. 下面是一个最简单的例子,首先我们需要extends J

WCF之实例模型

PerCall. 为每次调用创建新的服务对象. 内存使用量最小,增加整体的吞吐量. 状态不保存,服务实例及时释放. 单例的状态没有办法保存.所以应使用数据库或者文件或者全局变量来保存服务实例的状态.如果单调服务真的与状态无关,就根本不需要单调激活模式.准确地讲,正是因为状态,特别是代价昂贵的状态,才需要使用单调模式. 不会有并发性问题. 服务的利用率最高,只有在需要时才会有服务实例的创建.不会有闲置的服务对象. 在实例销毁时,不会断开与客户端的连接.在事务编程(保证实例状态的同步)与队列服务中(

跟我一起学WCF(4)——第一个WCF程序

一.引言 前面几篇文章分享了.NET 平台下其他几种分布式技术,然而前面几种分布式技术专注于某一特定的领域,并且具有不同编程接口,这使得开发人员需要掌握多个API的使用.基于这样的原因,微软在.NET 3.0时实现了WCF.WCF是.NET平台下各种分布式技术的集成,它将前面介绍的几种分布式技术完全整合在一起,并提供了一套统一的编程接口(API).对于,开发人员来来说只需要掌握WCF一套的API,就可以实现之前分布式技术所实现的所有功能. 二.WCF详细介绍 WCF(Windows Commun

Struts2原理及简单实例

参考连接: http://blog.csdn.net/laner0515/article/details/27692673/ http://www.cnblogs.com/sobne/articles/5443114.html 一.Struts2原理 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计.在这儿MVC模式的好处就不在提了. 技术优势 Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The 

【MySQL】存储过程、游标、循环简单实例

有时候仅凭 sql 语句可能达不到想要的数据操作目的,有可能需要写一些方法体,通过循环判断等操作最终达到目的.那么在数据库里实现这种方法体就需要存储过程了,个人觉得一个带注释的简单实例可以简单粗暴地解决大部分问题,当然要深入学习了解的话还是要看教程文档了,话不多说,上码: [sql] view plain copy create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义

session 对象的简单实例

一个session对象的简单实例: 1.登录界面:使用简单的html表单提交界面. <%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht