WCF创建讲解.docx
《WCF创建讲解.docx》由会员分享,可在线阅读,更多相关《WCF创建讲解.docx(10页珍藏版)》请在冰豆网上搜索。
WCF创建讲解
WCF实例(带步骤)
WCF实例(带步骤)
、WCF|2010-02-2614:
31:
44阅读31评论0字号:
大中小
以订票为例简单应用wcf
新建一个wcf服务应用程序
在IService1.cs定义服务契约
namespaceWcfDemo
{
//注意:
如果更改此处的接口名称"IService1",也必须更新Web.config中对"IService1"的引用。
[ServiceContract] //服务合同即提供服务的接口或类
publicinterfaceIService1
{
[OperationContract]
/*增加车票的方法*/
voidAddTicket(intcount);
[OperationContract]
/*购买车票的方法*/
intBuyTickets(intNum);
[OperationContract] //服务契约 即提供服务的实现方法
/*查询车票的方法*/
intGetRemainingNum();
//任务:
在此处添加服务操作
}
//使用下面示例中说明的数据约定将复合类型添加到服务操作。
[DataContract] //数据契约
publicclassTicket
{
boolboolCount=true;//判断是否还有车票
inthowmany=10;//还有多少车票
[DataMember]
/*判断是否还有票*/
publicboolBoolCalue
{
get{returnboolCount;}
set{
if(HowMany>0)
{
boolCount=false;
}
else
{
boolCount=true;
}
}
}
[DataMember]
/*返回票数*/
publicintHowMany
{
get{returnhowmany;}
set{howmany=value;}
}
}
}
在Service1.svc中实现契约服务
namespaceWcfDemo
{
//注意:
如果更改此处的类名“Service1”,也必须更新Web.config和关联的.svc文件中对“Service1”的引用。
publicclassService1:
IService1
{
TicketT=newTicket();
/*实现添加票数的方法*/
publicvoid AddTicket(intcount)
{
T.HowMany=T.HowMany+count;
}
/*实现返回票数的方法*/
publicintGetRemainingNum()
{
returnT.HowMany;
}
/*实现购买车票的方法*/
publicintBuyTickets(intNum)
{
if(T.BoolCalue)
{
T.HowMany=T.HowMany-Num;
return1;
}
else
{
return0;
}
}
}
}
添加宿主程序用于监测服务
添加WinForm项目加入解决方案
界面如下图:
界面上两个按钮:
启动服务按钮:
用于启动wcf服务
停止服务按钮:
用于停止wcf服务
Label:
用于显示服务相关信息
后台代码为:
应用命名空间usingSystem.ServiceModel;
添加引用wcf服务生成的dll文件
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
ServiceHosthost=null;//定义ServiceHost
privatevoidbutton1_Click(objectsender,EventArgse)
{
host=newServiceHost(typeof(WcfDemo.Service1));//WcfDemo.Service1为引用的dll中的服务
host.Open();//启动服务
this.label1.Text="服务已启动";
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
if(host.State!
=CommunicationState.Closed)//判断服务是否关闭
{
host.Close();//关闭服务
}
this.label1.Text="服务已关闭";
}
}
接下来配置app.config
xmlversion="1.0"encoding="utf-8"?
>
--添加服务-->
--name必须与代码中的host实例初始化的服务一样
behaviorConfiguration行为配置-->
--添加调用服务地址-->
//localhost:
8000/"/>
--添加契约接口 contract="WcfDemo.IService1"WcfDemo.IService1为契约接口 binding="wsHttpBinding"wsHttpBinding为通过Http调用-->
--定义CalculatorServiceBehavior的行为-->
程序运行结果:
在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务
到这服务以及服务主机都已经创建好了下面该创建测试客户机了!
新建个WinForm程序做为我们的测试客户机
界面两个按钮一个label
购买车票:
调用wcf服务的BuyTickets()方法
查询车票:
调用wcf服务的GetRemainingNum()方法
label用于显示运行信息
为项目添加服务引用地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)
后台代码为:
publicpartialclassForm2:
Form
{
publicForm2()
{
InitializeComponent();
}
ServiceReference1.Service1ClientTClient=newWinFormsClient.ServiceReference1.Service1Client();
//声明客户端调用
privatevoidbutton1_Click(objectsender,EventArgse)
{
inti=TClient.BuyTickets
(2);//调用WCF中的方法
if(i==1)
{
this.label1.Text="购买成功";
}
this.label1.Text+="剩余车票还有"+TClient.GetRemainingNum().ToString();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.label1.Text="";
this.label1.Text=TClient.GetRemainingNum().ToString();//调用WCF中的方法
}
}
点击购买车票时调用wcf的BuyTicket()方法并返回剩余车票的信息
点击查看车票时调用wcf的GetRemainingNum()得到剩余车票信息
运行结果如下:
点击购买车票:
点击查询票数时: