WPF、WCF、WF打造Hello World程序
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();}
最熟悉的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程序相关推荐
- 综合应用WPF/WCF/WF/LINQ之八:后台开发人员的Solution
该Solution的所有Project如下: 下面对各个Project一一进行介绍: Eallies.OA.BLL:用于系统中BLL层的所有类的存放.该Project可以采用Eallies.Utili ...
- 综合应用WPF/WCF/WF/LINQ之一:DEV-WOW 作品源代码公布
Eallies OA 使用说明 1.本程序在Windows 2003.SQL Server 2005.Visual Studio 2008环境下测试通过. 2.请将项目解压缩至某一目录下,如D:\Ea ...
- 综合应用WPF/WCF/WF/LINQ之三:采用用代码创建的方式实现CheckListBox的CustomControl
以我们的Eallies OA系统为例,实现PageBase的方法如下: 1.在Eallies.OA.UI.Controls.Logical项目中添加一个纯的Class,并让其继承于System.Win ...
- 综合应用WPF/WCF/WF/LINQ之十七:关于简化发布新版本的步骤的问题
对于比较简单的项目,我们可以直接编译项目,然后将bin\Debug下面的文件Copy到发布目录即可. 但对于比较复杂的项目,如加入了配置文件的项目,则不能这样做.这时要求发布目录下的文件除xbap.m ...
- 综合应用WPF/WCF/WF/LINQ之二十七:代码生成器之DBMLToProcedure
本存储过程代码生成器能处理如下几种形式的存储过程: 1.形如InsertTableName的存储过程,用于插入某条记录. 2.形如UpdateTableNameByFieldName的存储过程,用于根 ...
- WPF+WCF一步一步打造音频聊天室(一):概述
前几天在老徐的MSN群中聊WCF.我突然想到了用WPF和WCF来打造音频聊天室这么一个轮子.其实是这样的,我在的公司是两岸三地合作开发的.两岸是指大陆和台湾,三地是指深圳.台北.高雄.由于公司很小,所 ...
- WPF+WCF一步一步打造音频聊天室(三):语音聊天
前一篇文章中实现了文字聊天和共享白板的功能,这篇文章中,我将在前一篇文章的基础上实现语音聊天的功能.语音聊天要比文字聊天和共享白板难度要大一点. 实现的大概的流程为: 1.一个聊天室成员向另外一个成员 ...
- WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)
原文:WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu) 在上一篇中我们完成了快捷工具栏的开发,本篇将讲解应用程序菜单开发的相关内容.如下图所示,点击程序窗口左上角的 ...
- 【培训稿件】构建WCF面向服务的应用程序(包含ppt,源代码)
今天在整理电脑的时候,从目录中搜出了之前公司的培训演讲稿件,这个是我第一次在部门里面做内部培训,当时反映还不错.于是整理下这份稿件.大家如果有兴趣可以下载看看. 构建WCF面向服务的应用程序(ppt, ...
最新文章
- 用神经网络模拟分子:数据精确性检测
- 深度学习100例 - 卷积神经网络(CNN)实现车牌识别 | 第15天
- C++类和对象的封装
- int类型数字特别大
- TestNG参数化测试
- 2021教师资格证中学科目二简答汇总分享
- 【OpenGL 实验二】Liang-Barsky 裁剪算法
- css设置文本(上下)居中显示
- 服务器raid5数据恢复成功案例,磁盘阵列数据恢复方法
- 论文阅读(1)Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression
- hadoop学习笔记7-Azkaban
- 基于epoll,socket与protobuf的简单帧同步游戏服务器
- Vscode 与服务器建立远程连接(ssh)
- 正则表达式从入门到摸鱼(本文内容过长,先给阿姨来一杯卡布奇诺再阅读)
- Havel-Hakimi定理(判断一个度序列是否可图)
- 全国高校信息 ,全国市州信息 ,全国省市信息 ,全国区县联查信息 2019-08-27
- ViewPager + TextView 小说阅读器分页
- Excel 宏录制与VBA编程 —— 3、第一个VBA弹窗代码(附视频)
- leetcode 974. Subarray Sums Divisible by K
- 遥感影像云检测-现有光学遥感卫星数据参数合集
热门文章
- c#学习笔记01——引用类
- windows 打印机 print spooler 无法启动 错误1068 的问题
- Mozilla Firefox,去广告插件
- ArcGIS for qml -添加自由文本
- 内置Jetty配置JSP支持过程中的常见报错
- Kotlin数据类型(一:数据类型)
- 【虚拟化实战】存储设计之二LUN Sizing
- CentOS7 安装的Nagios-4.2.x出现HTTP Warning/403 Forbidden 最终解决方法
- Spark1.5.1学习笔记汇总
- centos 编译内核至2.6.39.4