Silverlight WCF RIA服务(十)Domain Services 3
来源:互联网 发布:mac可以用手绘板吗 编辑:程序博客网 时间:2024/05/21 18:02
如何在Domain Services中添加商业逻辑
即使在Domain Services中已经包含了更新、插入、删除等操作,但我们还是经常需要添加一些商业逻辑来管理那些修改数据的过程。还可能需要添加一些有别于传统的新的查询、更新等操作。这节中,我们将学习如何修改数据操作来满足商业要求,还学习如何添加一个命名的更新named update方法和一个调用invoke的操作
在操作数据的方法中添加商业逻辑
- 创建更新、插入、删除等应用程序所需的方法 :当在添加新的域服务类的对话框中生成域服务时,选择允许编辑(Enable editing)选项。或添加满足这些操作所需签名的方法。
- 在这些方法中,添加代码来指定处理需求的逻辑。
- 添加其他满足商业需求的方法。如果不想方法作为服务而公开,可以标记[IgnoreOperationAttribute]属性。
下面是一个插入的方法,此方法指派一个销售员。如果在公司的数据库中有顾客,RetrieveSalesPersonForCompany方法从公司中检索销售员的名字。这个方法标记了IgnoreOperationAttribute属性,所以客户端不能调用这个方法。
public
void
InsertCustomer(Customer customer
{
if
(customer.SalesPerson == String.Empty)
{
customer.SalesPerson = RetrieveSalesPersonForCompany(customer.CompanyName);
}
this
.ObjectContext.AddToCustomers(customer);
}
[IgnoreOperation]
public
string
RetrieveSalesPersonForCompany(
string
companyname)
{
string
salesPersonToAssign =
"unassigned"
;
List<CUSTOMER> customers = GetCustomers().Where(c => c.CompanyName == companyname).ToList();
if
(customers.Count > 0)
{
salesPersonToAssign = customers.First().SalesPerson;
}
return
salesPersonToAssign;
}
添加命名的更新方法 named update method
- 在Domain Services中,添加一个满足命名更新方法所需签名的方法。这个方法或者标记[Update]属性并设置UsingCustomMethod为true,或者接受一个实体作为第一个参数并没有返回值。下面的代码允许角色为CustomerRepresentative的用户重新设置客户的密码。1234567
[RequiresRole(
"CustomerRepresentative"
)]
public
void
ResetPassword(Customer customer)
{
// Implement logic to reset password
}
当添加一个命名的更新named update方法,在客户端会生成两个方法。一个在Domain context上生成,另一个是由实体生成的,这个实体是这个named update方法的传递参数。从客户端可以使用这两种方式来调用named update方法。调用这个方法后,还需要掉调用SubmitChanges方法。
selectedCustomer.ResetPassword();
customerContext.SubmitChanges(OnSubmitCompleted,
null
);
添加一个可调用的操作
在Domain Services类中,添加一个标记[Invok]属性的方法。
下面的示例表示如何根据邮编来查询当地的气温。
[Invoke]
public
int
GetLocalTemperature(
string
postalcode)
{
// Implement logic to look up temperature
}
然后可以通过使用InvokeOperation(TValue)对象来调用这个方法。如下所示:
InvokeOperation<INT> invokeOp = customerContext.GetLocalTemperature(selectedPostalCode);
如何使用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,代码如下
[EnableClientAccess(RequiresSecureEndpoint =
true
)]
public
class
AuthenticationDomainService
- Silverlight WCF RIA服务(十)Domain Services 3
- Silverlight WCF RIA服务(十)Domain Services 3
- WCF RIA 服务 (十)- Domain Services 3
- Silverlight WCF RIA服务(八)Domain Services 1
- Silverlight WCF RIA服务(八)Domain Services 1
- Silverlight WCF RIA服务(六)创建RIA Services 类库
- Silverlight WCF RIA服务(六)创建RIA Services 类库
- WCF RIA 服务 (八)-- domain services 1
- Silverlight WCF RIA服务(九)Domain Service 2
- Silverlight WCF RIA服务(九)Domain Service 2
- Silverlight WCF RIA服务(二十)Silverlight 客户端
- Silverlight WCF RIA服务(二十)Silverlight 客户端
- WCF RIA 服务 (二十)-- Silverlight 客户端
- Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
- Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
- Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
- Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
- Silverlight WCF RIA服务(二十二)Silverlight 客户端 3
- Silverlight WCF RIA服务(九)Domain Service 2
- 拿什么跟iPad比?最低配Surface也要1000美元!
- poj 2299 Ultra-QuickSort
- 推荐5款免费高清柏油路纹理图案设计
- windows xp 远程桌面分辨率
- Silverlight WCF RIA服务(十)Domain Services 3
- 用DirectShow实现视频马赛克处理
- C# How to get the system drive of remote server
- sql2000和sql2005的特性
- C# 实现任务栏图标程序
- Java环境变量配置方法详解
- enum的反编译
- Silverlight WCF RIA服务(十一)数据 1
- 问题小结(15)-缩放动画scale