Silverlight WCF RIA服务(十)Domain Services 3

Silverlight WCF RIA服务(十)Domain Services 3,第1张

概述如何在Domain Services中添加商业逻辑 即使在Domain Services中已经包含了更新、插入、删除等 *** 作,但我们还是经常需要添加一些商业逻辑来管理那些修改数据的过程。还可能需要添加一些有别于传统的新的查询、更新等 *** 作。这节中,我们将学习如何修改数据 *** 作来满足商业要求,还学习如何添加一个命名的更新named update方法和一个调用invoke的 *** 作 在 *** 作数据的方法中添加商业逻 @H_419_4@

如何在Domain Services中添加商业逻辑
即使在Domain Services中已经包含了更新、插入、删除等 *** 作,但我们还是经常需要添加一些商业逻辑来管理那些修改数据的过程。还可能需要添加一些有别于传统的新的查询、更新等 *** 作。这节中,我们将学习如何修改数据 *** 作来满足商业要求,还学习如何添加一个命名的更新named update方法和一个调用invoke的 *** 作
在 *** 作数据的方法中添加商业逻辑


 

创建更新、插入、删除等应用程序所需的方法 :当在添加新的域服务类的对话框中生成域服务时,选择允许编辑(Enable editing)选项。或添加满足这些 *** 作所需签名的方法。 在这些方法中,添加代码来指定处理需求的逻辑。 添加其他满足商业需求的方法。如果不想方法作为服务而公开,可以标记[IgnoreOperationAttribute]属性。

下面是一个插入的方法,此方法指派一个销售员。如果在公司的数据库中有顾客,RetrIEveSalesPersonForCompany方法从公司中检索销售员的名字。这个方法标记了IgnoreOperationAttribute属性,所以客户端不能调用这个方法。
 

?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ 4 @H_419_4@ 5 @H_419_4@ 6 @H_419_4@ 7 @H_419_4@ 8 @H_419_4@ 9 @H_419_4@ 10 @H_419_4@ 11 @H_419_4@ 12 @H_419_4@ 13 @H_419_4@ 14 @H_419_4@ 15 @H_419_4@ 16 @H_419_4@ 17 @H_419_4@ 18 @H_419_4@ 19 @H_419_4@ @H_502_86@ 20 @H_419_4@ 21 @H_419_4@ 22 @H_419_4@ 23 @H_419_4@ 24 @H_419_4@ 25 @H_419_4@ public@H_502_42@ voID@H_502_42@ InsertCustomer(Customer customer@H_502_42@ @H_419_4@ {@H_502_42@ @H_419_4@ if@H_502_42@ (customer.SalesPerson == String.Empty)@H_502_42@ @H_419_4@ {@H_502_42@ @H_419_4@ customer.SalesPerson = RetrIEveSalesPersonForCompany(customer.Companyname);@H_502_42@ @H_419_4@ }@H_502_42@ @H_419_4@ this.ObjectContext.AddToCustomers(customer);@H_502_42@ @H_419_4@ }@H_502_42@ @H_419_4@   @H_419_4@ [IgnoreOperation]@H_502_42@ @H_419_4@ public@H_502_42@ string@H_502_42@ RetrIEveSalesPersonForCompany(string@H_502_42@ companyname)@H_502_42@ @H_419_4@ {@H_502_42@ @H_419_4@   @H_419_4@ string@H_502_42@ salesPersonToAssign = "unassigned";@H_502_42@ @H_419_4@   @H_419_4@ List<CUSTOMER> customers = GetCustomers().Where(c => c.Companyname == companyname).ToList();@H_502_42@ @H_419_4@ if@H_502_42@ (customers.Count > 0)@H_502_42@ @H_419_4@ {@H_502_42@ @H_419_4@ salesPersonToAssign = customers.First().SalesPerson;@H_502_42@ @H_419_4@ @H_502_86@ }@H_502_42@ @H_419_4@   @H_419_4@ return@H_502_42@ salesPersonToAssign;@H_502_42@ @H_419_4@ }@H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@


添加命名的更新方法 named update method


 

在Domain Services中,添加一个满足命名更新方法所需签名的方法。这个方法或者标记[Update]属性并设置UsingCustomMethod为true,或者接受一个实体作为第一个参数并没有返回值。下面的代码允许角色为CustomerRepresentative的用户重新设置客户的密码。@H_502_42@
?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ 4 @H_419_4@ 5 @H_419_4@ 6 @H_419_4@ 7 @H_419_4@ [RequiresRole("CustomerRepresentative")]@H_502_42@ @H_419_4@         public@H_502_42@ voID@H_502_42@ resetPassword(Customer customer)@H_502_42@ @H_419_4@         {@H_502_42@ @H_419_4@             // Implement logic to reset password@H_502_42@ @H_419_4@         }@H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@
 

当添加一个命名的更新named update方法,在客户端会生成两个方法。一个在Domain context上生成,另一个是由实体生成的,这个实体是这个named update方法的传递参数。从客户端可以使用这两种方式来调用named update方法。调用这个方法后,还需要掉调用submitChanges方法。
 

?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ 4 @H_419_4@ selectedCustomer.resetPassword();@H_502_42@ @H_419_4@ customerContext.submitChanges(OnsubmitCompleted,null);@H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@




 

 


添加一个可调用的 *** 作
在Domain Services类中,添加一个标记[Invok]属性的方法。
下面的示例表示如何根据邮编来查询当地的气温。

 

?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ 4 @H_419_4@ 5 @H_419_4@ 6 @H_419_4@ 7 @H_419_4@ [Invoke]@H_502_42@ @H_419_4@ public@H_502_42@ int@H_502_42@ GetLocalTemperature(string@H_502_42@ postalcode)@H_502_42@ @H_419_4@ {@H_502_42@ @H_419_4@     // Implement logic to look up temperature@H_502_42@ @H_419_4@ }@H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@


然后可以通过使用InvokeOperation(TValue)对象来调用这个方法。如下所示:

 

?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ InvokeOperation<INT> invokeOp = customerContext.GetLocalTemperature(selectedPostalCode);@H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@


如何使用httpS与Domain Services
当我们想改善建立在Domain Services上的通信安全时,可以配置Domain Services只接受https上的请求。此时Domain Services将拒绝所有http上的请求。当Domain Services配置为应用于https时,相应的DomainContext类也对所有的请求使用https。
想使用https,我们需要配置下Web服务器。可以通过How to Set Up an httpS Service in IIS和Configuring http and httpS获得详细信息。配置完服务器后,还需要下面的步骤来指定Domain Services使用httpS。
当应用EnableClIEntAccessAttribute属性时,设置REquiresSecureEndpoint为true,代码如下
 

?@H_502_42@ @H_419_4@
1 @H_419_4@ 2 @H_419_4@ 3 @H_419_4@ 4 @H_419_4@ [EnableClIEntAccess(RequiresSecureEndpoint = true)] @H_502_42@ @H_419_4@ public@H_502_42@ class@H_502_42@ AuthenticationDomainService @H_502_42@ @H_419_4@ @H_419_4@
@H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ 总结

以上是内存溢出为你收集整理的Silverlight WCF RIA服务(十)Domain Services 3全部内容,希望文章能够帮你解决Silverlight WCF RIA服务(十)Domain Services 3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1065769.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存