之前发现服务暴露给客户端的数据契约的命名空间问题,在于多个服务交互的时候非常不方便,本人也跟Frank Xu Lei还有一些
朋友讨论过这个问题,一直没有好的解决办法.下面我描述一下问题,我有一个服务端项目,命名空间就叫做WCFProject吧...下面
有一个类叫做Customer,标注了数据契约,以此暴露给客户端, 我的UserService服务中有个方法叫做GetUserInfo来获取
Customer的信息,在我客户端通过引用添加服务的时候生成了一个UserService的服务代理 Service_Proxy,在服务端项目这个
Customer实体类的命名空间WCFProject.Customer,而在客户端的时候这个实体类又变成 了UserService.Customer,这时候假
设我又有一个服务需要把这个拿出来的Customer实体类当做他方法的参数进行处理的时候就出现了一个二义性问题,假设这个
服务的名字为Role_Proxy,那么它下面的一个方法需要一个Customer类型的参数进行处理,但是这个这个Customer又属于Role
服务自己命名空间下的,这样就对操作带来了不变,我需要从User服务拿出来的Customer转换成Role服务下面那个Customer的
类型才可以传入进去处理,客户端开发人员往往抱怨我为什么会这样,我也寻找了许多解决的办法,要么把服务端的这个
WCFProject程序集引用进来,要么进行土办法的拆装,之前一直是拆装的方式,不仅浪费了性能,而且有造成了多余的代码量,添加
引用程序集的方式我觉得客户端是我们自己开发还好,如果有一天其他平台需要访问我们服务的时候我们不可能也提供这个程
序集给它吧?这是完全不符合规范的,不知道看了我文章的大牛们有没什么好的解决办法?
小弟文采不好,请各位见谅!!
本文地址:http://garychen.net/?p=56
我的博客:www.garychen.net