摘要:演练:在Silverlight Business应用程序中使用身份验证服务 Silverlight Business应用程序模板创建的解决方案自动允许身份验证(验证模式为Forms),角色和个性化功能。解决方案包含了数据表格来登录已经存在的用户和注册新用户。我们不用写额外的代码就可以使用这些特性。我们也可以通过定义角色、个性化属性来自定义解决方案。在本演练中,我们将学习如何在Silverlight...
阅读全文
06 2010 档案
摘要:如何:创建自定义验证属性 WCF RIA Services框架提供了RequiresAuthenticationAttribute和RequiresRoleAttribute属性。这两个属性使我们很方便地指定哪个域操作是仅仅对验证用户或特定角色成员可用的。除了这两个属性,我们可以创建自制验证逻辑属性并对域操作应用这个属性。这章我们演示如何为身份验证添加自制属性。我们通过创建一个派生于Authori...
阅读全文
摘要:如何:在RIA Services中允许个性化功能 使用个性化功能,我们可以为用户检索和保存属性。WCF RIA Services中的个性化功能建立在ASP.NET的个性化框架上。我们只能在用户验证后检索或保存个性化属性。配置服务端项目 1. 在服务端项目中,打开Web.config文件。 2. 在段内,添加元素。 3. 在元素内,添加个性化属性。下面示例如何创建个性化以及定义一个名为Friend...
阅读全文
摘要:如何:在RIA Services中允许角色功能 使用角色,我们可以指定哪个验证用户组可以访问某些资源。 WCF RIA Services中的角色功能是建立在ASP.NET的角色功能上的。我们只有在用户已经被验证后,才能检索用户的角色信息。通过在域操作中的方法上使用RequireRoleAttribute属性,我们就可以限制角色中的成员对域操作的访问。配置服务端项目 1. 在服务端项目中,打开We...
阅读全文
摘要:如何:在RIA Services中允许进行身份验证 WCF RIA Services中的身份验证是建立在ASP.NET验证框架之上的。本章节展示如后在我们的应用程序中通过RIA Services来允许用户身份验证。我们必须在服务端和客户端添加代码,来使身份验证可行。这个验证对客户端就如同一个服务。我们可以通过对域操作应用 RequiresAuthenticationAttribute属性,来保证只...
阅读全文
摘要:在Web应用中,我们经常会限制某些特定用户使用一些功能,并对每个用户保持性能。ASP.NET提供了身份验证、角色、个性化实现这些功能。身份验证允许我们核实用户的凭证并标记用户为已登录。角色允许我们根据职责来把用户分组,并对组中成员授予资源许可。个性化允许我们保持验证用户的属相并在web应用中检索这些属性。WCF RIA Services框架在表现层和中间层都提供这些功能。这节就介绍RIA Serv...
阅读全文
摘要:如何:在客户端添加计算特性 我们可以在客户端添加成员属性,这些属性是有实体类中的成员属性计算而来。局部方法被用来引发事件,来通知用户界面元素数值已被更改。当我们添加计算的成员属性时,这些属性只存在于客户端项目中。1. 在客户端项目中,添加一个类文件。2. 声明一个局部类,这个类与我们想要修改的实体代理类具有相同的名字和命名空间。3. 添加一个属性,创建一个基于一个或多个实体代理类中值的新值。4. ...
阅读全文
摘要:自定义生成代码 对于WCF RIA Services,在某些情况下,我们想在客户端生成的代码中添加些东西。然而,我们不能直接定制生成代码,因为在下次中间层重新编译的时候会被覆盖掉。 RIA Services在生成代码中提供了局部方法,这样我们可以在分开的代码文件中定制客户端代码。这些局部方法就如同“钩子”,通过它我们可以把自己的代码附加在生成代码上。只有当我们已经创建了对应...
阅读全文
摘要:演练:在Silverlight商业应用程序中显示数据 在本演示中,我们将创建一个显示数据的 Silverlight商业应用程序。Visual Studio提供了几个设计时工具来帮助我们创建SL商业应用程序。这个演练将展现如何使用DataSources窗口在RIA中创建与数据一起工作的用户界面。演示将会满足下面的任务: 1. 创建SL商业应用程序,它包含SL客户端和ASP.NET Web应用两个项目...
阅读全文
摘要:演练:编辑来自域服务的数据 当我们在域服务中添加了更新、插入或删除方法时,我们就可以在 Silverlight客户端创建一个接口来让用火修改数据。EntityChangesSet对象跟踪所有的改变,并且这些改变在我们调用 SubmitChanges方法时一起提交。在这个演练中,我们将学习如何创建一个让用户修改所显示数据的接口,并且将这些修改保存到数据库。演练 1. 打开RIAServicesEx...
阅读全文
摘要:演练:检索和显示来自域服务的数据 想要在Silverlight应用程序中检索数据,我们调用域上下文中的方法,这些方法对应着域服务中我们想要使用的查询方法。例如,在域服务中有个名为GetProducts的方法,那么在与上下文中有个名为 GetProductsQuery的方法。在SL应用程序中,我们调用GetProductsQuery方法,此方法返回一个 EntityQuery(TEntity)对象。...
阅读全文
摘要:在客户端处理错误 当我们在客户端检索或修改数据时,我们通常需要处理错误和对错误做出反应。通过WCF RIA Services,我们为数据操作提供一个回调方法来处理错误,并且在回调方法里检查错误。使用回调方法是必需的,因为调用数据操作都是异步的,比且异常也是异步抛出的。默认下,对域操作中的所有错误都抛出一个异常。RIA Services为我们提供了处理错误的方式,并且可以指定框架不抛出异常。当装载数...
阅读全文
摘要:DomainDataSource WCF RIA Services提供DomainDataSource控件来简化用户界面和域上下文中数据的交互。通过DomainDataSource,我们可以只是用声明性语法来检索、编辑数据。我们指定域上下文与DomainDataSource一起使用,然后通过这个上下文来调用操作。配置Silverlight应用程序的DomainDataSource 为了使用Doma...
阅读全文
摘要:DomainContext 从客户端项目内部,我们不直接与域服务交互。相反,会对服务端中的每个域服务在客户端生成一个域上下文类。我们在域上下文类上调用对应于域服务上想使用的方法。这个生成的域上下文类派生于DomainContext类。查询 域上下文中的查询方法通常与域服务中的查询方法有相同的名字,并有后缀Query。例如,一个域上下文中的 GetCustomersQuery方法生成于域服务中的Ge...
阅读全文
摘要:客户端代码生成当我们使用RIA Services连接中间层和表示层时,RIA Services为客户端项目生成了客户端代理类,这些类是以中间层公开的实体和操作为基础的。因为RIA Services生成了这些类,所以我们不必再复制这些中间层和表示层中的应用逻辑。因为我们对中间层所做的任何修改,在重新生成客户端项目时都会自动与表示层同步的。生成的代码位于客户端项目的Generated_Code文件夹内...
阅读全文
摘要:Silverlight客户端 使用WCF RIA Services,我们可以创建一个当数据交互时知道中间层应用逻辑的Silverlight客户端。还可以对可见的和可编辑的数据提供用户接口,来在提交数据修改之前应用验证规则。我们的SL控件将会使用从中间层代码自动生成类。次章节介绍SL客户端如何使用domain context, 如何与数据一起工作,以及如何自定义生成的代码.使用DomainConte...
阅读全文
摘要:如何:通过源文件来共享代码 我们可以通过源文件来在中间层和表示层之间共享代码。当在中间层修改源文件,并重新生成应用程序时,在客户端会自动同步更新了的代码。当代码不属于domain Service或实体类,而且我们不想代码经历客户端代码生成步骤时,我们把代码放在共享的源文件中。通过使用共享命名规范或文件链接来共享源文件。下面示例使用这两种方法来共享源文件。使用共享命名规范 在中间层的解决方案资源管理...
阅读全文
摘要:共享代码 WCF RIA Services允许我们编写在中间层和表示层之间共享的应用逻辑。可以共享源文件或程序集中的代码。和在客户端代码生成主题中描述的自动代码生成方法不同,共享代码在编译时时不能改动的。相反,代码在层间是逐字地拷贝或共享的。共享源文件 可以在中间层添加源文件,然后明确指定这些文件在表示层中共享。有两种方法来在层之间共享源文件。第一种方式是根据命名规范来命名源文件:*.shared...
阅读全文
摘要:数据模型中的继承 WCF RIA Services允许我们使用做为继承体系中的一部分的实体。一个继承模型包含了一个从其他数据类派生的数据类。例如,一个多态继承模型可以包含一个 Customer实体和两个从Customer派生的实体(PublicSectorCustomer和PrivateSectorCustomer)。通过RIA Services,我们可以在domain Services中写一个返...
阅读全文
摘要:WCF RIA Services允许我们创建数据模型来综合从数据访问层得到的不同实体数据。这个模型就是表示模型。当我们不想把数据层的数据直接公开给客户端时,会使用这个特性。当使用表示模型时,可以只修改表示模型而不是客户端来回应数据访问层中的改动。还可以设计一个综合那些仅与客户端用户相关的字段的模型,来简化客户端代码。创建表示模型 需要用来维护数据完整性的数据库结构可能会比在客户端应用中需要的那些实...
阅读全文
摘要:层的组成 WCF RIA Services允许我们为具有层次概念的数据类创建应用逻辑,例如SalesOrderHeader实体和SalesOrderDetail实体。这样相关实体就组成了所谓的层次。定义了类之间的组成关系后,就可以像操作一个单一个体一样来操作对实体的数据修改,而不是像操作独立实体那样。这就会简化中间层的逻辑,因为我们可以对整个实体层来写应用逻辑,而不是把逻辑拆分对应每个实体并在数据...
阅读全文
摘要:如何自定义解决数据并发性冲突 WCF RIA Services框架把原值和更改后的值一起传递给数据访问层。这就允许数据访问层在提交数据更改之前检测数据并发性冲突。数据访问层是通过检测数据源中的当前值是否与Domain操作中检索到的值一致来判断冲突的。我们可以为一个特定的实体自定义如何解决数据并发性冲突,这个方法在冲突确认时被调用。在这个方法中,可以指定步骤来解决冲突。这个方法必须匹配作为解决冲突的...
阅读全文
摘要:如何验证数据 我们对实体和成员属性添加验证属性来实施验证规则。WCF RIA Service提供了几个验证属性来执行常用的验证检测,还提供了CustomValidationAttribute属性来执行自定义的验证检测。在RIA Service中包含了如下的验证属性:DataTypeAttribute RangeAttribute RegularExpressionAttribute Require...
阅读全文
摘要:如何添加元数据类 WCF RIA Services支持对实体类和成员的批注。批注是通过叫做元数据类的局部类来实施的。当我们想批注一个生成的实体类,并在重新生成这个实体类时不想丢失这些批注,我们使用元数据类。通过使用[MetadataTypeAttribute]属性来指定一个元数据类。有两种方式来添加元数据类。一种是当添加一个新的Domain Service类时,指定自动生成元数据类。还可以手动添加...
阅读全文
摘要:当我们在RIA客户端提供更新、删除、创建新数据等接口时,经常需要在提交更改之前确定用户输入的数据是有效的并且对数据源来说是最新的。WCF RIA Services提供了几个特性,来允许我们检查数据的有效性以及确定数据与客户端代码的并发性。还提供像使用单一数据实体那样与复杂的数据关系交互的特性。数据批注 当使用数据类时,可以通过对类或方法应用属性,来指定验证规则、如何显示数据、以及设定实体类之间的关...
阅读全文
摘要:如何在Domain Services中添加商业逻辑 即使在Domain Services中已经包含了更新、插入、删除等操作,但我们还是经常需要添加一些商业逻辑来管理那些修改数据的过程。还可能需要添加一些有别于传统的新的查询、更新等操作。这节中,我们将学习如何修改数据操作来满足商业要求,还学习如何添加一个命名的更新named update 方法和一个调用invoke 的操作在操作数据的方法中添加商业...
阅读全文
摘要:演练:添加查询方法 查询数据源的方法有时被叫做查询方法。在WCF RIA Services中,查询方法必须以框架承认的方式来定义。此外,只返回一个实体的查询和有可能返回多个实体的查询定义是不同的。当我们建立一个新的domain service类并在Add New Domain Service Class 对话框中指定实体时,RIA Services框架会自动为每一个服务端公开的实体创建一个简单的查...
阅读全文
摘要:domain Services 是向客户端公开数据访问层的WCF Services。当我们创建一个domain services实例时,就指定了想要公开的实体类,以及这个domain Services所允许的数据操作。DomainService 类 和派生类 DomainService类是所有做为domain Services的服务类的基类。WCF RIA Services还提供了LinqToEn...
阅读全文
摘要:在3-层结构的应用程序中,中间层包含了如何管理在表示层和数据层之间交互的逻辑。我们在中间层应用商业逻辑和验证来确定数据是可接受的。例如,在人力资源应用程序中,我们可以提供一个允许员工提交休假申请的界面,但我们应该确定员工的可休假额度不小于0。因此,我们在提交申请之前,在中间层添加逻辑来检测员工的休假额度。为了创建最好的RIA客户端用户体验,例如Silverlight应用,我们经常想在客户端执行也可...
阅读全文
摘要:添加引用时找不到 System.Windows.Controls.Ria 及 System.Windows.Ria。如下表如列示,RC版中的命名空间有所变化。Previous Assembly NameNew Assembly NameSystem.Windows.RiaSystem.ServiceModel.DomainServices.Client + System.ServiceModel....
阅读全文
摘要:RIA Services 类库允许我们创建能够重复使用的中间层和表现层逻辑。然而,使用RIA Services类库要比创建RIA Services解决方案复杂的多。在本节演练中,将创建一个拥有RIA Services类库代码的SL应用程序。简单起见,把类库放在了SL应用程序相同的解决方案里。当然,类库也可以放在分开的解决方案中。创建包含WCF RIA Services类库的SL解决方案 在VS中,...
阅读全文
摘要:SL商业应用程序模板创建一个自动包含许多你所想要的特性的应用程序,例如用户登录和注册的控件。这个项目还建立SL导航,这就意味着你能够方便的添加新的SL页来添加新功能。默认的情形下,SL商业应用程序模板允许身份认证、角色和Profiles。在这个演练中,学习如何用SL商业应用程序模板来创建WCF RIA Services。在VS中,选择 文件->新建项目 。出现 新建项目 对话框。在 项目类型...
阅读全文
摘要:当创建一个新WCF RIA Services解决方案时,你将会在客户端和服务端之间指定一个RIA Services Link。当然我们也可以在已存在的项目中添加和移除Link。在已存在项目中添加 RIA Services Link 1. 在资源管理器中,在Silverlight客户端上右键点击,并选择属性 。 2. 在 WCF RIA Services link 下拉单中,选择想用来当中间层的...
阅读全文
摘要:在本节,我们将进行一个演练。我们创建一个WCF RIA Services 应用,此应用从AdventureWorksLT 数据库中检索数据。我们会用SL来创建表现层的客户端,并创建表现不同数据库表的实体类。此节需要:Visual Studio 2008Silverlight 3WCF RIA Services Beta for visual Studio 2008 SP1 -or-Visual S...
阅读全文
摘要:上节大概介绍了一下 WCF RIA 服务, 这次介绍下整个解决方案的结构。当创建应用程序时,WCF RIA服务可以帮你建立满足各种各样情况的解决方案。例如只是在中间层访问很少domain services的Silverlight应用程序。更复杂的例子可能是几个Silverlight程序都连接到一个提供许多domain services的通用中间层。本节就介绍几种构建RIA服务解决方案的方式。RIA...
阅读全文
摘要:如未声明,全系列转至http://studysilverlight.blogspot.com/2010/01/wcf-ria.htmlWCF RIA 服务 (一)简介 WCF RIA Services简化了N层结构的RIA应用程序的开发,例如Silverlight应用。当开发一个N层结构的RIA应用程序时,一个通常的问题就是在中间层和表现层之间协调应用逻辑。为了建立更好的用户体验,你可能想要你的R...
阅读全文
摘要:开通博客园已经有相当长的一段时间了,但一直以浏览为主,没有好好地静下心来写写文章。 今天是2010年06月03日,一个很普通很普通的日子,我决定赋予它新的意义——写下我开博以来的第一篇文章,哈!! 鉴于本人文字功底有限,该博客以收录、转载大牛的文章为主,记下自己工作中所遇到的问题以及心得与解决方法为辅。“好记性不如烂笔头”—...
阅读全文