WPF、WCF、WF打造Hello World程序

自己描述的LINQ WF WCF , WPF 自己简单写的一个过程,这方面资料很少,但是这方面的技术确实很强大, 有兴趣的可以研究一下, 此篇文档还在创作中,做好了会与大家分享! 立即下载

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程序教你使用了三种最新技术。是不是值得你推荐一下,谢谢。:)

代码:点击打开链接 

WPF承载WF并调用WCF 微软官方示例,WPF中载入WWF,并通过WWF调用WCF应用,是典型的.net 3.0架构整合示例 立即下载

相关推荐

WcfWpfWf简单实例

一个简单的wcf+wpf+wf实例;用来了解他们之间的工作关系,新手适用;运行环境为vs2013;.net4.5

WPF MVVM框架 漂亮界面风格的WPF 快速入门WPF实例 功能实用架构清晰易入门WPF 界面大方功能实用的WPF教程 WPF实战例子 WPF 简易DEMO

这个例子是一个简单的待办事项列表应用程序,它展示了 WPF 的核心概念和语法。另外,该例子还使用了 MVVM 模式,这是一个常见的 WPF 设计模式。通过这个例子,学习者可以了解 WPF 的核心概念和语法,并且掌握三层架构和 MVVM 设计模式的基本原理。视图负责显示应用程序的界面,模型负责保存数据,逻辑负责实现业务逻辑。WPF 快速开发框架,已经集成多种框架,可以直接修改使用在项目中,是入门及快速实施项目的最佳选择。然而,对于初学者来说,WPF 的概念和语法可能会让人望而却步。

十多年专注于上位机业务 1万+

WF4.5工作流设计器(VS2013 WPF版)

这是来自英文版的迁移工作流设计器章节的列子,该书是很好的入门书籍,但是由于在编排可能存在一些问题,导致某些图示功能或者例子,可能在十几页之外才有相关说明,希望这个例子可以帮到正则阅读的初心者。

WPF MVVM从入门到精通1:MVVM模式简介

WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 WPF MVVM从入门到精通4:命令和事件 WPF MVVM从入门到精通5:PasswordBox的绑定 WPF MVVM从入门到精通6:RadioButton等一对多控件的绑定 WPF MVVM从入门到精通7:关闭窗口和打开新窗口 WPF M...

lweiyue的专栏 3万+

WF工作流设计器(WPF版)

这是一个WPF版的工作流设计器,准备开发一个Silverlight版的流程设计器,之前一个图形UI的例子已发上来了.这个例子算是正式开发Silverlight版前的DEOM吧.另外,现在关于架构类的文章多是介绍[数据业务平台(前台UI+中间层+数据存储)]的,对工具类应用程序的架构设计相对少一些.对这方面架构设计感兴趣的可以看一下本文该版本提供如下功能:可视化和流程设计界面WF的一组业务ActivityWF的XOML与流程设计界面元素的类型转换器流程设计界面的元素加载器WF设计规则验证器流程设计界面的元素UI逻辑关系验证器一个可以与用户交互的本地流程测试器代码下载:http://files.c

计量经济学tempdisagg的python库:年度时序变月度

计量经济学tempdisagg的python库:年度时序变月度

素质云笔记 1528

WPF、WCF、MVC、MVVM 的各自的特性

WPF、WCF、MVC、MVVM 的各自的特性 简单概述WPF、WCF、MVC、MVVM 的各自的特性 一、WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言。UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前端界面样式,逻辑关系还是基于C#语言进行的逻辑设计。 二、WCF是Windows Communication Foundation是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的

liuliwei09的博客 3751

VSCode连接SAP ABAP开发环境

本文介绍了使用VSCode连接ABAP开发环境的详细步骤。首先通过SICF或SMICM事务码获取ABAP连接地址,然后安装ABAP remote filesystem插件。提供了两种创建连接的方法:通过命令面板逐步配置(输入服务器地址、账号、系统标识等)或直接编辑JSON配置文件。最后通过命令面板选择已创建的连接即可完成连接,连接成功后可在VSCode左侧工作区查看ABAP系统内容进行开发。JSON配置方式更为简便推荐。整个流程帮助开发者摆脱复杂的Eclipse配置,实现快速便捷的ABAP开发环境搭建。

weixin_45293769的博客 2214

WPF MVVM简单介绍和使用

MVVM是Model-View-ViewModel的简写,分为视图(View)、视图模型(ViewModel)、模型(Model)三部分。MVVM 模式就是将其中的View 的状态和行为抽象化,形成数据绑定和命令,将视图 UI 和业务逻辑分开。由ViewModel处理相关的业务逻辑,与View对应,负责获取和更新Model的数据。

海盗Sharp的博客 4281

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1259

livebos报表开发

文章目录1.参数的设定2.展示的内容3.综合展示的效果4.调用过程5.可以在数据库里面查看6.注意事项7.过程代码 1.参数的设定 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flb5C49A-1619516341977)(/uploads/xinxibuneibuzhishiku/images/m_bc71bb4608053778dbf29e06cd102ae1_r.png)] 2.展示的内容 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-

阿浪的专栏 709

[WF4.0 实战] WPF + WCF + WF 打造Hello World(基础篇)

本篇博客是一个基础的示例,也就是一个入门教程吧!让大家熟悉一下WPF + WCF + WF三者的关系!这只是一个基础篇,下篇会继续深入,作为这段时间研究工作流的一个总结!   三者关系:   WPF--客户端--View WF--流转--Controller WCF--对外提供服务的--Model   下面是一个示例,用这个示例再来理解一下为什么我将三者的关系分别映射为MVC的各层

何静媛 1万+

5G核心网NAS消息解析:从协议字段到实际抓包分析(附Wireshark示例)

本文深入解析5G核心网NAS消息的实战分析方法,从协议字段解读到实际Wireshark抓包诊断。通过详解扩展协议鉴别器、安全头类型、流程事务标识等核心字段,并结合注册流程故障排查实例,指导工程师快速定位NAS层问题,提升5G网络调试与协议分析效率。

grass的博客 532
上一篇: 整理几个有想法的面试题
下一篇: Reporting Services 在WIN7和2008下出现“授予的权限不足,无法执行此操作。 (rsAccessDenied)”的解决办
一克代码
博客等级 码龄17年 180粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值