[WF4.0 实战] WPF + WCF + WF 打造Hello World(基础篇)
2024-10-18 22:29:19
本篇博客是一个基础的演示样例,也就是一个新手教程吧!让大家熟悉一下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的使用!
最新文章
- 关系型数据库与NoSQL数据库
- 突破php的imagecopyresampled 和imagecopyresized 实现图片马JPG
- HDU 2117 取(2堆)石子游戏【wzf博弈】
- iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用
- jquery总结05-常用事件01-鼠标事件
- CS程序,服务器端弹出MessageBox.Show()之类的UI操作???禁止
- java List 去重(两种方式)
- pes and ts stream, how to convert
- Hadoop_Block的几种状态_DataNode
- AngularJs练习Demo14自定义服务
- Objective-C中的SEL、IMP和Class类型
- maven_基本配置
- 解决 ASP.NET Core MySql varchar 字符串截取(长度 255)
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
- [Swift]LeetCode372. 超级次方 | Super Pow
- Linux 版 SecureCRT 界面变为 Windows 2000 风格的解决办法
- python练习实例1--------给定数字组成三位数
- C# RestoreDirectory
- 雷林鹏分享:XML 实例
- URL SCAN简介
热门文章
- Gradle 教程:第一部分,安装【翻译】(转)
- 使用BackgroundWorker组件进行异步操作编程
- android生成apk包出现Unable to add &;quot;XXX&;quot; Zip add failed问题
- unity3d简单的相机跟随及视野旋转缩放
- RH033读书笔记(13)-Lab 14 Network Clients
- 玩转Web之Jsp(一)-----jsp中的静态包含(<;%@include file=";url";%>;)与动态包含(<;jsp:include>;)
- 程序猿常识--OJ系统和ACM测试考试大全
- 改写String类别
- ExtJS学习笔记:定义extjs类别
- 基于GeoHash算法的附近点搜索实现(一)