本篇博客是一个基础的演示样例,也就是一个新手教程吧!让大家熟悉一下WPF + WCF + WF三者的关系!这仅仅是一个基础篇,下篇会继续深入,作为这段时间研究工作流的一个小小总结!

三者关系:

WPF--client--View

WF--流转--Controller

WCF--对外提供服务的--Model

以下是一个演示样例,用这个演示样例再来理解一下为什么我将三者的关系分别映射为MVC的各层

WCF:

新建一个“控制台应用程序”,然后建立接口和对应的实现类

实现对应的方法:

接口:接口和方法须要对外公开,加入对应的引用ServiceModel

namespace MyHelloWorld
{
[ServiceContract]
public interface IAppServer
{
[OperationContract]
string GetStringFromWCF();
}
}

实现类:

namespace MyHelloWorld
{
public class AppServer:IAppServer
{
#region IAppServer成员
public string GetStringFromWCF() {
return "Hello World";
}
#endregion
}
}

编写宿主程序:

class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(AppServer)))
{
host.Open();
Console.WriteLine("服务已经启动");
Console.ReadLine();
} }
}

引入对应的App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyHelloWorld.AppServer">
<endpoint address="" binding="basicHttpBinding" contract="MyHelloWorld.IAppServer">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/MyHelloWorld/AppServer/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>

启动服务測试:

此时我们能够查看对外公开的服务以及它的描写叙述文件:

WF:

新建工作流的“活动库”(WFProject)

将send设置为參数类型

send相当于请求发送过去了,即请求服务的方法,那么就应该有个响应,而响应的结果就应该赋给我们之前定义的那个输出參数(returnView)

而返回的结果名称规则为调用的服务端的名称+result后缀

WPF:

新建WPF应用程序(WPFProject)

加入对应的引用usingSystem.Activities;以及WFProject

namespace WPFProject
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void button1_Click(object sender, RoutedEventArgs e)
{
IDictionary<string, object> results = WorkflowInvoker.Invoke(new WFProject.Activity1());
string result = results["returnView"].ToString();
MessageBox.Show(result); }
}
}

设置为多启动项

终于的执行结果为:

附上整个解决方法的说明:

好了,整个程序已经完毕了,这是一个很基础的演示样例,目的是让大家对WPF,WF,WCF有一个简单的理解。

WPF--WebForm

WF---简单的逻辑调用B层

WCF--方法的实现D层

这篇博客还没有真正的应用上这个WF的流程自己主动控制过程,仅仅是起了一个简单的调用的作用,下篇将细化WF的使用!

[WF4.0 实战] WPF + WCF + WF 打造Hello World(基础篇)的更多相关文章

  1. 【转】WF4.0实战系列索引

    转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...

  2. 二进制入门-打造Linux shellcode基础篇

    0x01 前言   本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. ...

  3. [WF4.0 实战] 事件驱动应用

    看到题目或许非常多人都会疑问,为什么要使用事件监听呢? 眼下的认识: 1,使用事件监听能够将工作流的结点返回值返回到client 2,能够实现等待与重新启动,相当于之前的WaitActivity创建B ...

  4. [WF4.0 实战] AutoResetEvent具体解释(线程独占訪问资源)

    由来: 在学习工作流的过程中,宿主程序中会出现这么一段代码: staticAutoResetEvent instanceUnloaded = new AutoResetEvent(false); 然后 ...

  5. WF4.0 基础篇 (一)开始使用WF

    来源:https://www.cnblogs.com/caosenianhuan/p/WF.html 最近公司要重新上线一套新的CRM系统,要重整老系统里的业务流模块,团队讨论已微软的workflow ...

  6. 【转】WF4.0 (基础篇)

    转自:http://www.cnblogs.com/foundation/category/215023.html 作者:WXWinter  ——  兰竹菊梅★春夏秋冬☆ —— wxwinter@16 ...

  7. WF4.0(1)---WorkFlow简介

    编程编的越久就发现自己以前的语文真的没学好,写个随笔取个名字都需要思考半天,以前工作的时候只是听说过工作流,知道的范围仅限于工作流在OA审批流程中用的比较多,现在自己实实在在的用工作流也做过不少项目, ...

  8. WF4.0(3)----变量与参数

    已经写了两篇关于WF4.0的博客,算是基础博客,如果是WF比较熟悉就直接跳过吧,如果你对工作流不是很熟悉,或者想了解一下基础的东西,本文还是比较适合你的.工作流中变量,参数,表达式属于数据模型中概念, ...

  9. WF4.0(2)----设计工作流

    自从做了程序员,发现自己长胖了,而且自己的身体抵抗力也出了问题,最近身体不适,公司工作任务最近也很赶,上次写了WF4.0的简介,这次就工作中工作流设计的几种方式稍微总结一下.设计工作流包括四种方式:流 ...

随机推荐

  1. Oracle Instanc Client安装命令工具

    条件 1.Linux RHEL 6.X X86_64操作系统 2.从安装Oracleserver的server此次收购Oracle相关文件(同OS) 软件下载 从Oracle包: 1)  instan ...

  2. 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)

    原文:乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 模板方法模式(Template Method ...

  3. JavaScript对象(来自百度知道)

    JavaScript中对象的创建有以下几种方式: (1)使用内置对象(2)使用JSON符号(3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种:1,JavaScript ...

  4. pig询问top k,每个返回hour和ad_network_id最大的两个记录(SUBSTRING,order,COUNT_STAR,limit)

    pig里面有一个TOP功能.我不知道为什么用不了.有时间去看看pig源代码. SET job.name 'top_k'; SET job.priority HIGH; --REGISTER piggy ...

  5. Ecshop他们主动双语版切换来推断个人的计划

    个人思路是基于浏览器的语言来推断自己主动,假设中国的浏览器,对使用中国模板.将英语模板.于.英国的模板差值称为不同的产品类别.文章分类,的模板可设置为相同的固定的文本language,所以你不会有打造 ...

  6. DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)

    一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...

  7. 11gRAC CHM 管理

    Cluster Health Monitor(缩写CHM)是Oracle提供的工具,自己主动的资源来收集操作系统(CPU.内存.SWAP.过程.I/O与网络)用法. CHM数据被收集每秒一次,11.2 ...

  8. 猪和python(pig and python)

    Python 真是无处不在国内. pig 0.9后python作为嵌入式语音,采用Jython解释器使用python2.5特征,此接口是最上层org.apache.pig.scripting.Pig首 ...

  9. iOS开发无第三方控件的援助达到的效果侧边栏

    最近的研究iOS程序侧边栏.渐渐的发现iOS该方案还开始采取风侧边栏格该,QQ,今日头条,Path(Path运营商最早的侧边栏app该,效果说成是Path效果),所以就研究了下. 然后发现Git Hu ...

  10. JavaScript运行命令

    前言 动人js一段时间,我认为事情仅仅是一个很肤浅的理解.是非常欠缺的.所以開始使用博客来对这一部分的知识做个慢慢的记录和积累. 相信积少成多,慢慢的将这一部分的知识攻克! 第一篇记录的不是相关的应用 ...