服务器端包含:
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/
本文档详细介绍了面向服务架构(SOA)的最佳实践,包括业务组件的设计原则,如业务实体、业务逻辑及数据访问层的定义;服务契约和服务实现的具体内容;以及如何在客户端发布和调用WebService方法。
168

被折叠的 条评论
为什么被折叠?



