WCF,WPF,WF是什么东西

WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。

作为新的图形引擎,WPF是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你刚到神奇。顺便提一下,Aero是专门为3D桌面开发的引擎,可以让桌面实现神奇的3D翻转,这绝对是操作系统有史以来的一次神奇尝试,虽然对硬件配置的要求也是惊人的,此前已有相关报道称,Vista对显卡十分挑剔就是出于运行Aero的考虑。

Windows通信基础(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。WCF为服务提供了运行时环境(Runtime Environment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。理论上讲,创建服务并不一定需要WCF,但实际上,使用WCF却可以使得创建服务的任务事半功倍。WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。

Windows Workflow Foundation(WF):工作流引擎,基于工作流的开发使程序的业务逻辑与代码相分离,从而可以大大提高软件开发的效率。
Windows Communication Foundation(WCF): 用于实现应用程序间(包含不同语言开发的程序)通信的技术,WCF构建在SOAP协议之上。
Windows Presentation Foundation(WPF):集成WebForm与WinForm于一体的界面开发方案

WPF、WCF、WF打造Hello World程序

英文版:http://www.codeproject.com/KB/WF/wcf-wpf-wf-hello-world.aspx

分析篇:

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:

   [ServiceContract]public interface IService1{[OperationContract]string GetData();}

添加类Service1:

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/-->1     public class Service1 : IService1{public string GetData(){return string.Format("Hello World");}}

App.config配置:

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 <?xml version="1.0" encoding="utf-8" ?><configuration><system.serviceModel><services><service name="WCFProject.Service1" behaviorConfiguration="metadata"><host><baseAddresses><add baseAddress="http://localhost:8001/Service1"/></baseAddresses></host><!--The BasicHttpBinding is used because the Workflow uses a generated ASP.Net proxy to communicate with this service--><endpoint binding="basicHttpBinding" contract="WCFProject.IService1"/></service></services><behaviors><serviceBehaviors><behavior name="metadata"><!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --><serviceMetadata httpGetEnabled="true"/><!-- 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 --><serviceDebug includeExceptionDetailInFaults="false"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironment multipleSiteBindingsEnabled="true" /></system.serviceModel></configuration>

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

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1             using (ServiceHost host = new ServiceHost(typeof(Service1))){host.Open();Console.WriteLine("The service is ready.");Console.WriteLine("Press <ENTER> to terminate service.");Console.ReadLine();}

以上实现了一个简单的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事件中添加下面代码:

            IDictionary<string, object> results = WorkflowInvoker.Invoke(new Activity1());MessageBox.Show(results["returnValue"].ToString());

这样WPFProject 也完成了。

调试与结果:

启动WCPProject,如下图:

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

总结:

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

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

代码:点击打开链接

作者:朱祁林
出处:http://zhuqil.cnblogs.com

WPF、WCF、WF打造Hello World程序相关推荐

  1. 综合应用WPF/WCF/WF/LINQ之八:后台开发人员的Solution

    该Solution的所有Project如下: 下面对各个Project一一进行介绍: Eallies.OA.BLL:用于系统中BLL层的所有类的存放.该Project可以采用Eallies.Utili ...

  2. 综合应用WPF/WCF/WF/LINQ之一:DEV-WOW 作品源代码公布

    Eallies OA 使用说明 1.本程序在Windows 2003.SQL Server 2005.Visual Studio 2008环境下测试通过. 2.请将项目解压缩至某一目录下,如D:\Ea ...

  3. 综合应用WPF/WCF/WF/LINQ之三:采用用代码创建的方式实现CheckListBox的CustomControl

    以我们的Eallies OA系统为例,实现PageBase的方法如下: 1.在Eallies.OA.UI.Controls.Logical项目中添加一个纯的Class,并让其继承于System.Win ...

  4. 综合应用WPF/WCF/WF/LINQ之十七:关于简化发布新版本的步骤的问题

    对于比较简单的项目,我们可以直接编译项目,然后将bin\Debug下面的文件Copy到发布目录即可. 但对于比较复杂的项目,如加入了配置文件的项目,则不能这样做.这时要求发布目录下的文件除xbap.m ...

  5. 综合应用WPF/WCF/WF/LINQ之二十七:代码生成器之DBMLToProcedure

    本存储过程代码生成器能处理如下几种形式的存储过程: 1.形如InsertTableName的存储过程,用于插入某条记录. 2.形如UpdateTableNameByFieldName的存储过程,用于根 ...

  6. WPF+WCF一步一步打造音频聊天室(一):概述

    前几天在老徐的MSN群中聊WCF.我突然想到了用WPF和WCF来打造音频聊天室这么一个轮子.其实是这样的,我在的公司是两岸三地合作开发的.两岸是指大陆和台湾,三地是指深圳.台北.高雄.由于公司很小,所 ...

  7. WPF+WCF一步一步打造音频聊天室(三):语音聊天

    前一篇文章中实现了文字聊天和共享白板的功能,这篇文章中,我将在前一篇文章的基础上实现语音聊天的功能.语音聊天要比文字聊天和共享白板难度要大一点. 实现的大概的流程为: 1.一个聊天室成员向另外一个成员 ...

  8. WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)

    原文:WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu) 在上一篇中我们完成了快捷工具栏的开发,本篇将讲解应用程序菜单开发的相关内容.如下图所示,点击程序窗口左上角的 ...

  9. 【培训稿件】构建WCF面向服务的应用程序(包含ppt,源代码)

    今天在整理电脑的时候,从目录中搜出了之前公司的培训演讲稿件,这个是我第一次在部门里面做内部培训,当时反映还不错.于是整理下这份稿件.大家如果有兴趣可以下载看看. 构建WCF面向服务的应用程序(ppt, ...

最新文章

  1. 用神经网络模拟分子:数据精确性检测
  2. 深度学习100例 - 卷积神经网络(CNN)实现车牌识别 | 第15天
  3. C++类和对象的封装
  4. int类型数字特别大
  5. TestNG参数化测试
  6. 2021教师资格证中学科目二简答汇总分享
  7. 【OpenGL 实验二】Liang-Barsky 裁剪算法
  8. css设置文本(上下)居中显示
  9. 服务器raid5数据恢复成功案例,磁盘阵列数据恢复方法
  10. 论文阅读(1)Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression
  11. hadoop学习笔记7-Azkaban
  12. 基于epoll,socket与protobuf的简单帧同步游戏服务器
  13. Vscode 与服务器建立远程连接(ssh)
  14. 正则表达式从入门到摸鱼(本文内容过长,先给阿姨来一杯卡布奇诺再阅读)
  15. Havel-Hakimi定理(判断一个度序列是否可图)
  16. 全国高校信息 ,全国市州信息 ,全国省市信息 ,全国区县联查信息 2019-08-27
  17. ViewPager + TextView 小说阅读器分页
  18. Excel 宏录制与VBA编程 —— 3、第一个VBA弹窗代码(附视频)
  19. leetcode 974. Subarray Sums Divisible by K
  20. 遥感影像云检测-现有光学遥感卫星数据参数合集

热门文章

  1. c#学习笔记01——引用类
  2. windows 打印机 print spooler 无法启动 错误1068 的问题
  3. Mozilla Firefox,去广告插件
  4. ArcGIS for qml -添加自由文本
  5. 内置Jetty配置JSP支持过程中的常见报错
  6. Kotlin数据类型(一:数据类型)
  7. 【虚拟化实战】存储设计之二LUN Sizing
  8. CentOS7 安装的Nagios-4.2.x出现HTTP Warning/403 Forbidden 最终解决方法
  9. Spark1.5.1学习笔记汇总
  10. centos 编译内核至2.6.39.4