`
sty2008boy
  • 浏览: 302576 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

Silverlight+WCF+WF+Linq结合的一个示例【附示例源码下载】

阅读更多
原文:http://www.aspxcs.net/HTML/0009332123.html

这个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:asp.net项目,用于宿主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 OutArgument<List<Customer>> 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 OutArgument<List<Order>> OrderList { get; set; } 
 
        public InArgument<string> 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 OutArgument<List<Order_Detail>> OrderDetailList { get; set; } 
        public InArgument<int> 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服务,与普通的不同,不是直接调用,而是异步调用,见下面代码:

private void lstCustomers_Loaded(object sender, RoutedEventArgs e) 
        { 
            Service1Client svc = ServerManager.GetPox(); 
            this.txtStatus.Text = "Loading customers..."; 
            svc.GetCustomersCompleted += new 
              EventHandler<GetCustomersCompletedEventArgs>(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"; 
            } 
        } 
总结:
    这篇文章主要阐述了如何在WF中使用WCF服务。以及如何在Silverlight中调用WCF服务。

-
分享到:
评论

相关推荐

    在IIS上部署Silverlight+WCF项目教程

    "在IIS上部署Silverlight+WCF项目教程" 本教程旨在指导用户如何在IIS上部署Silverlight+WCF项目...在本教程中,我们提供了详细的步骤和代码示例,旨在帮助用户快速地部署Silverlight+WCF项目,并解决可能遇到的问题。

    silverlight+Wcf实现登录

    通过以上步骤,我们可以构建一个基于Silverlight和WCF的登录系统,它结合了Silverlight的富用户体验和WCF的灵活通信能力,为用户提供了一个高效、安全的登录界面。在实际项目中,这种组合经常被采用,特别是在企业级...

    MF00680-silverlight+wcf仓库管理源码.zip

    silverlight+wcf仓库管理系统源码 仓库源码 开发语言 : C# 数据库 : SQL2008 开发工具 : VS2010 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 源码描述: silverlight +...

    silverlight+wcf+linq简单实例

    在这个"silverlight+wcf+linq简单实例"中,我们将深入探讨这三种技术如何协同工作,以实现对服务器数据库的数据操作。 首先,Silverlight是微软开发的一种RIA(Rich Internet Application)技术,它允许开发者创建...

    Silverlight+WCF配置

    Silverlight+WCF配置具体方法 讲解

    C#silverlight+wcf仓库管理系统源码 仓库源码数据库 SQL2008源码类型 WebForm

    silverlight+wcf仓库管理系统源码 仓库源码 源码描述: silverlight +WCF 写的仓库管理系统,有进销存相关功能,采用三层架构,分层清晰,值得学习. 主要功能有:盘点检查,采购中心,领料中心,退料中心 退货...

    silverlight+wcf+LinqToSql的demo

    《银光轻触,WCF流转,LINQ与SQL共舞——深入理解Silverlight+WCF+LinqToSql Demo》 在当今的Web开发领域,Silverlight作为一种强大的富客户端技术,以其丰富的用户界面和交互性受到众多开发者的青睐。而WCF...

    silverlight+wcf+linq to sql项目实战

    在本项目实战中,我们将构建一个使用Silverlight、WCF(Windows Communication Foundation)以及Linq to SQL技术的网站应用,具体实现一个广告轮播器。首先,我们需要了解这些技术的基本概念。 **Silverlight** 是...

    Silverlight+WCF 员工管理系统

    在信息技术领域,开发企业级应用程序是常见的需求,而Silverlight和WCF(Windows Communication Foundation)技术的结合,为构建高效、跨平台的员工管理系统提供了强大的工具。本系统充分利用了这两种技术的优势,以...

    Silverlight+WCF 实战-网络象棋源码

    Silverlight+WCF 实战-网络象棋源码 1。按钮事件”求和、认输、返回大厅、退出系统“ 2。棋谱及棋谱回放,能过该回放能定义棋子自动回放,并可定义棋子每步的间隔时间。 3。在线用户 4。聊天窗口。

    silverlight+wcf n维拼图游戏

    本文将深入探讨一个基于Silverlight和WCF技术构建的n维拼图游戏的实现细节。Silverlight是微软推出的一种富互联网应用程序(RIA)平台,它允许开发者创建交互性强、视觉效果丰富的Web应用。而WCF(Windows ...

    silverlight+wcf仓库管理系统源码

    silverlight +WCF 写的仓库管理系统,有进销存相关功能,采用三层架构,分层清晰,值得商业参考! 主要功能有:盘点检查,采购中心,领料中心,退料中心 退货中心,盘点检查,单据明细,库存查询,商品设置 权限分配...

    silverlight+WCF上传文件、下载文件

    在IT行业中,Silverlight是一种基于.NET Framework的浏览器插件,用于创建丰富的交互式用户界面,而WCF(Windows Communication Foundation)是微软提供的一个全面的、统一的编程模型,用于构建服务导向的应用程序。...

    Silverlight+WCF对数据库操作的小程序

    总的来说,"Silverlight+WCF对数据库操作的小程序"是一个典型的客户端-服务器架构示例,展示了如何利用Silverlight构建用户界面,通过WCF服务实现与后端数据库的交互。这个小程序不仅提供了实际的登录功能,同时也为...

    Silverlight+wcf新手象棋解决方案

    通过这个项目,新手不仅可以掌握Silverlight和WCF的基本用法,还能了解如何将两者结合应用于实际的多人在线游戏开发。同时,这也将涉及到网络编程、并发控制等多个领域的知识,对于提升综合开发能力大有裨益。在实践...

    Linq+Wpf+Wcf

    结合“wpf”标签,我们可以推测这是一个关于如何在WPF应用中集成LINQ和WCF的教程或资料。可能涵盖了如何在WPF界面中使用LINQ查询数据,并通过WCF服务与远程数据源进行通信。这可能包括创建WCF服务,配置服务契约和...

    Silverlight + WCF 数据压缩

    Silverlight与WCF结合使用时,可以通过压缩数据来优化性能,特别是对于大量数据交换的应用场景,如实时数据流、大数据报告等。 在实现 Silverlight 和 WCF 的数据压缩时,通常有以下步骤: 1. **选择压缩库**:在...

    WPF+WCF+WWF+LINQ完美结合

    本示例程序以“WPF+WCF+WWF+LINQ完美结合”为主题,旨在展示如何在.NET框架3.0和3.5环境下,整合四种强大的技术:Windows Presentation Foundation (WPF)、Windows Communication Foundation (WCF)、Windows ...

    silverlight+WCF的net.tcp双工通信实例过程

    1. **Silverlight简介**:Silverlight是微软开发的一个运行于浏览器的插件,用于创建丰富的、交互式的多媒体和Web应用程序。它支持.NET Framework的部分功能,可以用于构建富客户端应用。 2. **WCF服务**:Windows ...

    Silverlight+Wcf大文件上传控件

    Silverlight+Wcf大文件上传,没有使用ASP.NET服务器缓存机制,在Silverlight客户端把大文件分割成二进制数组,每次往服务器上写100K,可断点续传。测试请把客户端配置文件中的服务地址改为自己用vs2010生成的地址。

Global site tag (gtag.js) - Google Analytics