wcf简单实例Word文件下载.docx
《wcf简单实例Word文件下载.docx》由会员分享,可在线阅读,更多相关《wcf简单实例Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
[OperationContract]//服务契约即提供服务的实现方法
/*查询车票的方法*/
intGetRemainingNum();
//任务:
在此处添加服务操作
}
//使用下面示例中说明的数据约定将复合类型添加到服务操作。
[DataContract]//数据契约
publicclassTicket
boolboolCount=true;
//判断是否还有车票
inthowmany=10;
//还有多少车票
[DataMember]
/*判断是否还有票*/
publicboolBoolCalue
get{returnboolCount;
}
set{
if(HowMany>
0)
boolCount=false;
else
boolCount=true;
/*返回票数*/
publicintHowMany
get{returnhowmany;
set{howmany=value;
在Service1.svc中实现契约服务
如果更改此处的类名“Service1”,也必须更新Web.config和关联的.svc文件中对“Service1”的引用。
publicclassService1:
IService1
{
TicketT=newTicket();
/*实现添加票数的方法*/
publicvoidAddTicket(intcount)
T.HowMany=T.HowMany+count;
/*实现返回票数的方法*/
publicintGetRemainingNum()
returnT.HowMany;
/*实现购买车票的方法*/
publicintBuyTickets(intNum)
if(T.BoolCalue)
T.HowMany=T.HowMany-Num;
return1;
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();
//关闭服务
服务已关闭"
接下来配置app.config
<
?
xmlversion="
1.0"
encoding="
utf-8"
?
>
configuration>
system.serviceModel>
services>
!
--添加服务-->
servicename="
WcfDemo.Service1"
behaviorConfiguration="
CalculatorServiceBehavior"
--name必须与代码中的host实例初始化的服务一样
behaviorConfiguration行为配置-->
host>
baseAddresses>
--添加调用服务地址-->
addbaseAddress="
http:
//localhost:
8000/"
/>
/baseAddresses>
/host>
--添加契约接口contract="
WcfDemo.IService1"
WcfDemo.IService1为契约接口binding="
wsHttpBinding"
wsHttpBinding为通过Http调用-->
endpointaddress="
"
binding="
contract="
/endpoint>
/service>
/services>
--定义CalculatorServiceBehavior的行为-->
behaviors>
serviceBehaviors>
behaviorname="
serviceMetadatahttpGetEnabled="
true"
serviceDebugincludeExceptionDetailInFaults="
false"
/behavior>
/serviceBehaviors>
/behaviors>
/system.serviceModel>
/configuration>
程序运行结果:
在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务
到这服务以及服务主机都已经创建好了下面该创建测试客户机了!
新建个WinForm程序做为我们的测试客户机
界面两个按钮一个label
购买车票:
调用wcf服务的BuyTickets()方法
查询车票:
调用wcf服务的GetRemainingNum()方法
label用于显示运行信息
为项目添加服务引用地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)
后台代码为:
publicpartialclassForm2:
publicForm2()
ServiceReference1.Service1ClientTClient=newWinFormsClient.ServiceReference1.Service1Client();
//声明客户端调用
inti=TClient.BuyTickets
(2);
//调用WCF中的方法
if(i==1)
购买成功"
this.label1.Text+="
剩余车票还有"
+TClient.GetRemainingNum().ToString();
this.label1.Text=TClient.GetRemainingNum().ToString();
//调用WCF中的方法
点击购买车票时调用wcf的BuyTicket()方法并返回剩余车票的信息
点击查看车票时调用wcf的GetRemainingNum()得到剩余车票信息
运行结果如下:
点击购买车票:
点击查询票数时: