摘要:
一、Silverlight跨域访问WCF服务时出错; 解决:1.clientaccesspolicy.xml文件; 2.Silverlight的Xap压缩包调用的Xap内的ClientConfig文件的配置需要及时更新;二、Silverlight本身已含有WCF RIA Service服务时,添加其他WCF服务引用,会产生配置文件不生成的Bug; 解决:删除并才重新引用各dll文件即可... 阅读全文
摘要:
演练:在Silverlight Business应用程序中使用身份验证服务 Silverlight Business应用程序模板创建的解决方案自动允许身份验证(验证模式为Forms),角色和个性化功能。解决方案包含了数据表格来登录已经存在的用户和注册新用户。我们不用写额外的代码就可以使用这些特性。我们也可以通过定义角色、个性化属性来自定义解决方案。在本演练中,我们将学习如何在Silverlight... 阅读全文
摘要:
如何:创建自定义验证属性 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类时,指定自动生成元数据类。还可以手动添加... 阅读全文