WF40 实战(十九)Silverlight+WCF+WF+Linq结合的一个示例.doc_第1页
WF40 实战(十九)Silverlight+WCF+WF+Linq结合的一个示例.doc_第2页
WF40 实战(十九)Silverlight+WCF+WF+Linq结合的一个示例.doc_第3页
WF40 实战(十九)Silverlight+WCF+WF+Linq结合的一个示例.doc_第4页
WF40 实战(十九)Silverlight+WCF+WF+Linq结合的一个示例.doc_第5页
免费预览已结束,剩余4页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WF4.0 实战(十九):Silverlight+WCF+WF+Linq结合的一个示例 概述: 这个Demo主要是为了阐述WF4中是如何使用WCF服务的,以及如何在Silverlight中调用WCF服务。因为即使用了Silverlight呈 现UI,又用Linq访问数据库。故本文的名字为:“Silverlight+WCF+WF+Linq结合的一个示例”。如果你和我一样,对WCF有点了 解,就知道WCF能将很多方法放在一Uri中供大家调用。那如何将多个WF流程放在一个Uri中供你调用呢?答案就是使用一个Pick活动,Pick活动 中可以有多个分支,对于Pick的每一个分支,你都可以设计一个流程,这种方式是非常有用的。好了,先看一下这个Demo实现了什么功能,在说如何实现, 最后总结,附代码下载。效果: 就是一个Silverlight的数据显示的界面,使用了northwnd数据库。左边显示所有的客户。右边上面是你选择顾客的订单。右边的下面是这个订 单的详细情况。效果有点类似三级级联。实现: 这个Demo一共有四个项目,如下图:项目说明: 1、DataOperate:主要是linq生成的代码,用于数据库操作。 2、MyFirstSilverlight:Silverlight项目,用于显示UI。 3、MyFirstSilverlight.Web:项目,用于宿主Silverlight。 4、WFService:把WF+WCF的项目,用于实现业务逻辑。 我深信WCF+WF功能是十分强大的。本文只讲述一下WCF+WF结合的WFService是如何实现的。Silverlight和Linq的部分,详细 见代码。WFService实现: 在Workflow模板下面,选择新建一个WCF Workflow Service,命名为WFService。 在Service1.xamlx中删除原有的活动,拖放一个Pick活动,并添加三个分支,如下图。 新建三个CodeActivity,分别命名为:GetCustomersActivity、GetOrderDetailsActivity、 GetOrdersActivity。 1、GetCustomersActivity:代码如下: public sealed class GetCustomersActivity : CodeActivity public OutArgumentList CustomerList get; set; protected override void Execute(CodeActivityContext context) DataClasses1DataContext datacontext = new DataClasses1DataContext(); CustomerList.Set(context, datacontext.Customers.ToList(); 这个活动返回所有的顾客资料。 2、GetOrdersActivity代码如下: public sealed class GetOrdersActivity : CodeActivity public OutArgumentList OrderList get; set; public InArgument customerID get; set; protected override void Execute(CodeActivityContext context) DataClasses1DataContext datacontext = new DataClasses1DataContext(); OrderList.Set(context,(from order in datacontext.Orders where order.CustomerID = customerID.Get(context) select order).ToList(); 这个活动返回顾客为customerID的所有订单。 3、GetOrderDetailsActivity代码如下 public sealed class GetOrderDetailsActivity : CodeActivity public OutArgumentList OrderDetailList get; set; public InArgument orderID get; set; protected override void Execute(CodeActivityContext context) DataClasses1DataContext datacontext = new DataClasses1DataContext(); OrderDetailList.Set( context,(from orderdetail in datacontext.Order_Details where orderdetail.OrderID = orderID.Get(context) select orderdetail).ToList(); 这个活动返回订单编号为orderID的订单详情。 下面我们将这三个活动放在WF中流程中。 在Pick的Trigger中拖三个Receive活动,设置如下图: 由于具体使用Linq的访问数据库的实现还是在GetCustomersActivity、GetOrderDetailsActivity、 GetOrdersActivity中,将这三个活动,拖入相应的Action中。 创建方法的返回值:右击Receive活动,选择Create SendReply。这是会提示你已经将SendReply复制到剪贴板中,你只需把它们粘贴到相对的地方。如下图: 这样我们就定义好了这个WCF和WF的服务。 在Silverlight项目中,选择添加服务引用,如下图: 在MainPage.xaml.cs中添加下面引用代码:using MyFirstSilverlight.ServiceReference; Silverlight中调用WCF服务,与普通程序调用WCF服务的不同,不是同步调用,而是异步调用,见下面代码: private void lstCustomers_Loaded(object sender, RoutedEventArgs e) Service1Client svc = ServerManager.GetPox(); this.txtStatus.Text = Loading customers.; svc.GetCustomersCompleted += new EventHandler(svc_GetCustomersCompleted); svc.GetCustomersAsync(); void svc_GetCustomersCompleted(object sender, GetCustomersCompletedEventArgs e) if (e.Error = null) this.lstCustomers.ItemsSource = e.Result; this.txtStatus.Text = string.Empty; else this.txtStatus.Text = Error occured while loading customers from database; Demo很简单,其他项目的实现,详细见代码。总结: 这篇文章主要阐述了如何在WF中使用WCF服务。以及如何在Silverlig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论