SOA : Hands On Lab使用笔记(三)

本文档详细介绍了面向服务架构(SOA)的最佳实践,包括业务组件的设计原则,如业务实体、业务逻辑及数据访问层的定义;服务契约和服务实现的具体内容;以及如何在客户端发布和调用WebService方法。
SOA最佳实践学习笔记。[@more@]

服务器端包含:

1:业务组件(Business Component)
业务组件包括:
1.1:业务实体(Business Entities)
业务实体是简单类,具有字段和属性,他们对应着数据库中的表,例如,这些对象一般包含一个字段xxxxID;注意,这些类不包括任何方法;如果表之间有各种关联关系的,在简单实体中也得以表现了。即:简单实体体现了数据库模式。

注意:并非所有的业务实体都在数据库中有对应的表。例如,确认信息就不一定在数据库中对应表。

这里约定:
字段,用小写字符串表达;eg:addressLine1Field;对应的属性为:AddressLine1
对象,用下化线开头的小写字符串表达,eg:_creditCard,对应的属性为:CreditCard


1.2:业务逻辑(Business Logic)
对业务实体对象进行操作的方法。一般的,他们的参数为业务实体,返回的也是业务实体。在这里,实际的调用了数据访问层代码,换言之,将业务实体存储到数据库中了。


1.3:数据访问层
数据访问层定义了通用的(Generic)的数据访问接口。
这包括标准的CRUD工厂类接口;

要求:主键由数据库产生(如自增ID,GUID等)
我不建议一致性验证由数据库完成;

-----------------------------------------
2:服务
2.1:服务契约(ServiceContracts)
服务契约项目定义了Web方法的签名。
这里定义的Web方法,包含参数和返回对象。由于Web方法只识别可XML序列化的对象,故,服务契约中,也定义了Web方法参数(可XML序列化)对象的定义,Web方法返回对象(可XML序列化)的定义。

这里定义的XML对象,往往是业务实体的组合对象,或者是业务对象对应的XML序列化对象。注意,这里的对象一般不包含数据库的主键ID(当这个ID不代表任何意义时)。

服务契约项目中没有实现任何方法,它确定了方法的签名(方法名中的参数,在这里也确立了)。
这里完全用数据库模式(XSD)来生成了类图。

这里的类定义和实体中的定义不同。这里的类,都是简单类,类似JAVA中的POJO。而Web 方法定义中,显然使用这些简单类是不够的,因此,Web方法的参数、返回对象,都是这些简单类的组合对象。注意,有时候,返回值只是简单的确认信息,此时,返回值对象的定义就很简单了。

要点:这里的所有对象的定义,可以使用XSD来实现。

2.2:服务实现(ServiceImplementation)
服务实现项目引用服务契约项目,并实现其中定义的方法签名。在这些实现方法中,实际的调用了业务逻辑层定义的方法。

由于Web方法使用的参数是可XML序列化的对象(有可能是组合对象),因此需要在Web方法使用的对象和简单实体对象之间进行映射转换。
因此,一般的,一个业务实体对应一对(2个)转换方法。

2.3:Web项目
公布(Expose)Web Service方法(类)。

===========================================
3.客户端
客户端引用Web Service,一般约定命名:
若服务器端服务实现名称为:ClubMembershipService,则客户端引用的名称为:ClubMembershipServiceProxy。

http://msdn.microsoft.com/msdnmag/issues/06/12/ServiceStation/Default.aspx?loc=zh

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7176288/viewspace-904570/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7176288/viewspace-904570/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值