WPF、WCF、WF打造Hello World程序

转自http://www.cnblogs.com/zhuqil/archive/2010/05/14/Hello-World.html

WPF、WCF、WF打造Hello World程序

分析篇: 

    Hello World程序作为所有编程语言的起始阶段,Hello World占据着法改变的地位。本例子很简单,用了WPF、WCF、WF三种还算比较新的技术。这个例子有三个项目:  

    1、WPFProject:WPF应用程序

    2、WCFProject:WCF服务

    3、WFProject:WF流程定义

    执行顺序是WPFProject程序去启动WFProject项目的工作流,WFProject项目去调用WCFProject的WCF服务。接着WCFProject服务将'Hello World'这行编程界最经典的话返回给WFProject,WFProject由将将'Hello World'返回给WPFProject的UI。执行顺序如下图:

实现篇:

    新建一个WpfApplication、一个ConsoleApplication、一个workflow的ActivityLibrary,共三个项目,命名分别为:WPFProject、WCFProject、WFProject,解决方案如下图:

 

    我们就在这些由VS模板生成的代码实现这个Hello world程序,我们尽量地利用这些生成好的代码。

最不熟悉WCF:

    引用System.ServiceModel.dll

    添加接口IService1:

1      [ServiceContract]
2       public   interface  IService1
3      {
4          [OperationContract]
5           string  GetData();
6      }

    添加类Service1:

1       public   class  Service1 : IService1
2      {
3           public   string  GetData()
4          {
5               return   string .Format( " Hello World " );
6          }
7      }

    App.config配置:

 1  <? xml version="1.0" encoding="utf-8"  ?>
 2  < configuration >
 3       < system.serviceModel >
 4           < services >
 5               < service  name ="WCFProject.Service1"  behaviorConfiguration ="metadata" >
 6                   < host >
 7                       < baseAddresses >
 8                           < add  baseAddress ="http://localhost:8001/Service1" />
 9                       </ baseAddresses >
10                   </ host >
11                   <!-- The BasicHttpBinding is used because the Workflow uses a generated ASP.Net proxy to communicate with this service -->
12                   < endpoint  binding ="basicHttpBinding"  contract ="WCFProject.IService1" />
13               </ service >
14           </ services >
15           < behaviors >
16               < serviceBehaviors >
17                   < behavior  name ="metadata" >
18                       <!--  To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment  -->
19                       < serviceMetadata  httpGetEnabled ="true" />
20                       <!--  To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information  -->
21                       < serviceDebug  includeExceptionDetailInFaults ="false" />
22                   </ behavior >
23               </ serviceBehaviors >
24           </ behaviors >
25           < serviceHostingEnvironment  multipleSiteBindingsEnabled ="true"   />
26       </ system.serviceModel >
27  </ configuration >

    在Program.cs添加启动WCF服务代码:

1               using  (ServiceHost host  =   new  ServiceHost( typeof (Service1)))
2              {
3                  host.Open();
4                  Console.WriteLine( " The service is ready. " );
5                  Console.WriteLine( " Press <ENTER> to terminate service. " );

7                  Console.ReadLine();
8              }

     以上实现了一个简单的WCF服务,这样WCFProject就完成了。

最熟悉的WF:

    在Activity1上托一个Sequence,再在Sequence托一个Send活动调用上面定义好的WCF服务。

    添加一个存储返回值的returnValue输出参数。

    Send活动需要知道WCF服务的ABC。故做如下设置。

1、OperateName:GetData(与上面WCF方法名字一致)

2、EndPoint设置为EndPoint

3、Bingding设置为basichttpBingding。

4、EndPointAddress设置为New Uri("http://localhost:8001/Service1"),与在WCFProject的app.config的地址相同

5、ServiceContractName设置为WCF服务的接口名字IService1。

    右击Send活动,选择Create ReceivReply,这样就创建了一个ReceivReply,它需要设置一个属性:点击Content设置如下:

最后流程如下图所示:

这样我们完成了Workflow的项目。

最后的WPF

    由于WPFProject与WFProject是直接引用的关系,故在WPFProject直接引用WFProject的dll,如下图。

    由于要启动WF,故还需添加工作流的System.Activities.dll引用。

    在MainWindow窗体中拖一个按钮,将文本改成:“Invoke Workflow”,在click事件中添加下面代码:

1              IDictionary < string ,  object >  results  =  WorkflowInvoker.Invoke( new  Activity1());

3              MessageBox.Show(results[ " returnValue " ].ToString());

    这样WPFProject 也完成了。

调试与结果:

    启动WCPProject,如下图:

    启动WPFProject。点击Invoke Workflow,结果如下图:

 

总结:

    结合了WPF、WCF、WF实现了Hello world程序。

     一篇文章用最简单Hello World程序教你使用了三种最新技术。是不是值得你推荐一下,谢谢。:)

代码/Files/zhuqil/wpfwcfwf.rar

 

作者:朱祁林
出处:http://zhuqil.cnblogs.com 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值