RIA服务-使用WCF RIA服务的企业模式

PDC09 和 Mix10 上宣布了两条重大消息,分别是推出 Silverlight 4 Beta 和 RC。读到本文时,发布到网上的 Silverlight 4 完全版本已经可供下载。除广泛的打印支持外,它还支持权限升级、网络摄像头、麦克风、toast、剪贴板访问,等等。凭借其全新的功能集,Silverlight 4 作为一种多平台的丰富 UI 框架,可以从容应对与 Adobe AIR 之间的正面交锋。

尽管我对这一切确实感到兴奋,但我的主要角色是一名业务应用程序开发人员,我所关注的一点是如何使用一种简单的方法将我的业务数据和逻辑融入 Silverlight 应用程序。

对于 Silverlight 业务线应用程序,我关注的一个问题是如何连接到数据。在 Silverlight 3 中创建自己的 Windows Communication Foundation (WCF) 服务以及连接到该服务,是没有任何障碍的。但该版本还有很大的改进空间,尤其是从 ASP.NET 或桌面应用程序连接到数据时所能采取的诸多方式,有待改善。桌面应用程序和 Web 应用程序可以通过 Nhibernate、实体框架 (EF) 或原始 ADO.NET 结构直接连接到数据库,但 Silverlight 应用程序与我的数据之间却由“云”所阻隔。我将这种阻隔称为“数据鸿沟”。

跨越这道鸿沟乍一看可能非常简单。很明显,现在有很多数据丰富的 Silverlight 应用程序在某种程度上已经实现了这种跨越。但起初看似简单的任务随着您解决更多的问题后反而变得越来越复杂。如何通过网络跟踪更改?如何封装位于防火墙两端的实体内的业务逻辑?如何防止传输详细信息泄露您的业务敏感信息?

用来解决这些问题的第三方工具越来越多,但 Microsoft 也发现需要提供某种解决方案,因此推出了 WCF RIA 服务(以前称 .NET RIA 服务),简称 RIA 服务。2009 年 5 月版《MSDN 杂志》的“使用 Silverlight 3 构建数据驱动的开支应用程序”(msdn.microsoft.com/magazine/dd695920) 中完整介绍了 RIA 服务。从第一次受邀参与 Beta 程序开始,我便一直在关注 RIA 服务,向开发团队建言献策并学习如何在我自己的应用程序中应用该框架。

RIA 服务论坛中的一个常见问题是,RIA 服务如何与最佳实践体系结构相适应。我一直对 RIA 服务的“基于数据的窗体设计”基本功能印象深刻,但我也的确看到了改善我的应用程序体系结构的机会,因此框架问题没有影响到我的应用程序逻辑。

KharaPOS 简介

我开发了一个范例应用程序:KharaPOS,旨在针对我在本文陈述的概念提供一个相关实例。该实例是使用 RIA 服务、实体框架和 SQL Server 2008 在 Silverlight 4 中实现的销售点 (POS) 应用程序。最终目标是使该应用程序能承载于 Windows Azure 平台和 SQL Azure,但 Windows Azure 平台对 Microsoft .NET Framework 4 的支持有一点问题(甚至不支持)。 

在这个过渡期,KharaPOS 可作为一个使用 .NET Framework 4 创建实际应用程序的好例子。该项目通过 CodePlex 放在 KharaPOS.codeplex.com 中。您可以从该站点下载代码、查看文档以及加入关于开发此应用程序的讨论。

我要说明的是,对于 KharaPOS 应用程序的大部分设计与功能,我借鉴了由 Peter Coad、David North 和 Mark Mayfield 合著的《对象模型:策略、模式与应用,第 2 版》(Prentice Hall PTR,1996)。我将重点介绍该应用程序的一个子系统:目录管理系统(请参阅图 1)。

图 1 目录管理系统的实体数据模型

时间: 2024-08-31 21:12:43

RIA服务-使用WCF RIA服务的企业模式的相关文章

wcf ria service-求助 wcf ria 如何实现断点续传, DAL 是entity framework

问题描述 求助 wcf ria 如何实现断点续传, DAL 是entity framework Silverlight OOB 应用每次需要传输10mb的数据(图片byte和普通数据)到远端数据库.如何能保证在网络不稳定情况下实现断点续传功能.任何建议都很感谢!! 解决方案 uiop123uiop123link text 解决方案二: 主要思路就是分块传输,选取合理的分块大小很重要.

更强悍的Silverlight: WCF RIA Services

如果你安装了 VS 2010 的 Silverlight 4 开发工具,会发现一项重量级的安装项目,WCF RIA Services,用于Silverlight数据访问服务,比WCF和ADO.NET Data Service和Web服务都要简单. 在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现.创建拥有良好用户体验的RIA应用,你需要客户端和服务端有着相同的业务规则,因此在客户端和服务端保证同步的中间层变得至关重要.WCF RIA Servi

WCF角色服务简介

WCF角色服务能够从可以发送和使用SOAP消息的任何应用程序访问某个用户的角色.这可以包括不使用.NET Framework的应用程序.因此,这些不同应用程序的用户可以在每个应用程序中具有相同的角色.通常情况下,可以检查用户的角色来确定用户具有执行哪些操作的权限. 角色服务仅提供可通过ASP.NET角色管理获得的功能的一个子集.可以通过角色服务检索用户的角色或检查用户是否属于特定的角色.用户必须经过身份验证才能读取用户的角色.角色服务可使用任何类型的ASP.NET身份验证. System.Web

OData 和 AtomPub: 使用WCF数据服务绑定 AtomPub 服务器

如果您不熟悉开放数据协议 (OData),我要告诉您它很美妙.OData(在 odata.org 上有详细介绍)以下列各种基于 HTTP 的功能优势 为基础:用于发布数据的 Atom:用于创建.更新和删除数据的 AtomPub:以及用于定义数据类型的 Microsoft 实体数据模型 (EDM). 如果您拥有 JavaScript 客户端,则可以采用 JSON 格式(而不是 Atom 格式)直接返回数据:如果您拥有其他客户端(包括 Excel. .Microsoft NET Framework.

工作流服务-使用 WCF和WF 4的工作流可视化设计

开发人员越来越多地采用面向服务的体系结构 (SOA) 作为构建分布式应用程序的方式.对于缺乏经验的人,设计和实现面向服务的分布式应用程序可能会令人生畏.然而,Microsoft .NET Framework 4 使得使用 Windows Workflow Foundation (WF) 实现 Windows Communication Foundation (WCF) 服务变得比以往任何时候都更简单. WCF 工作流服务为编写长时间运行.持久的操作或服务(其中通过排列操作的顺序强制实施应用程序协

Visual Studio-Visual Studio 2010中的实体框架4.0和WCF数据服务4.0

在诸多新改进之中,Visual Studio 2010 引入了用户期待已久的实体框架 4.0 和 WCF 数据服务 4.0(以前称为 ADO.NET 数据服务),这两项功能综合起来,简化了您建立数据模型.使用数据和生成数据的方式. 实体框架 4.0 (EF 4.0) 致力于启用和简化两种主要方案:以域为中心的应用程序开发和传统以数据为中心的"基于数据的窗体设计".它引入了诸如模型优先开发等功能(该功能允许您创建模型并为您生成自定义 T-SQL):对持久化透明的支持:外键:延迟加载以及实

WCF服务编程设计规范(6):队列服务、安全和服务总线

WCF服务编程设计规范(6):队列服务.安全和服务总线.本节整理队列服务(Queue Servuce).服务安全(Service Security)和服务总线(Service Bus)的设计规范. Queued Services 队列服务 1. On the client, always verify that the queue (and a dead-letter queue, when applicable) is available before calling the queued s

WCF服务编程设计规范(3):服务契约、数据契约和实例管理设计规范

WCF服务编程设计规范(3):服务契约.数据契约和实例管理设计规范.本节涵盖服务契约和数据契约设计规范,以及服务实例管理内容.中英对照版本,欢迎留言交流. Service Contracts 服务契约 1.Always apply the ServiceContract attribute on an interface, not a class: 把ServiceContract属性标记到契约接口上,而不是服务类上 //Avoid:避免 [ServiceContract] class MySe

WCF 配置服务 演示

1.搭建IIS(具体步骤略)2.服务契约如下: namespace JianKunKing.NewVersion.Service { // 注意: 使用"重构"菜单上的"重命名"命令,可以同时更改代码.svc 和配置文件中的类名"NewVersionService". //[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.