如何封装外部的webservice或wcf,并以wcf形式对外提供接口?
补充:服务可以调用服务吗?
假设你们有 OAService 和 CRMService,按照"服务与服务之间不能直接调用的,只能给UILogic调用"的原则,那么你只能在 UILogic 中去分别调用 OAServiceA 和 CRMService。
那么问题来了,你为啥还要提这个问题呢?
我估计着要么
他以为OAUILogic只能调用OAService,然后CRMUILogic只能调能CRMService,
或者事实上就是这样的,
所以有此一问。
@爱编程的大叔: 你想象力真丰富
我的问题:
1、OAUILogic=>OAService、OAUILogic=>CRMService都没问题
2、OAUILogic=>CRMService后,要将这个结果以OAService的方式提供出去?怎么实现
@人在江湖博客: 能再讲清楚点吗?
2、OAUILogic=>CRMService后,要将这个结果以OAService的方式提供出去
OAUILogic=>CRMService后 - 我理解为 OAUILogic 调用 CRMService 得到结果集 OAUI-CRMS-Result;
要将这个结果以OAService的方式提供出去 —— 我理解为将 OAUI-CRMS-Result 以 OAService 服务发布出去;
是这个意思吗?
@Launcher: 是的
@人在江湖博客: 根据你的描述,最简洁的流程就是 OAService -> (OAUILogic -> CRMService),那么这与你们的规则“OAUILogic -> OAService”冲突,因此你这想法是行不通的。
仅仅是在 OAService、OAUILogic和 CRMService 之间来回做概念游戏是没有意义的,你需要提出你的业务需求,而不是先给出一种不可能的解决方案。
@Launcher: 我们的业务需求是这样的:
假如有四个产品:
1、公共平台产品(各个产品的管理界面):
2、安全中心产品(用户登录,权限控制)
3、工作流产品(流程控制等)
4、OA产品
架构全部是一样的,如上图
我们想OA这边要取用户登录、权限控制什么的,都直接从公共平台的Service来取,而不要自己去拿安全中心和工作流的Service
@人在江湖博客: 你把安全中心的 SecUILogic.dll 拷贝到公共平台下面,然后由公共平台的 Service 调用不就行了。
@Launcher: 不行的,各个产品之间只能提供Service里面的DataContracts、ServiceContracts的dll+配置文件
@人在江湖博客: 然后 Service 之间还不能互相调用,对吧!如果是这样的话,那你这个根本没法做嘛!你们这些规定到底是人为的,还是说你技术上实现不了?
@人在江湖博客: 我比较纳闷的就是你这两句话:
1 - 如何封装外部的webservice或wcf,并以wcf形式对外提供接口
和
2 - 服务与服务之间不能直接调用的,只能给UILogic调用
既然有 2 了,你为什么还要问 1 呢?你能给我解释清楚吗?
@Launcher: 呵呵,技术总监规定的
1 - 如何封装外部的webservice或wcf,并以wcf形式对外提供接口
答:是想了解大家在服务中是如何封装其它服务的
2 - 服务与服务之间不能直接调用的,只能给UILogic调用
答:是想问下类似我们的架构,有没有实现的的可能,技术上肯定可以,可能是规范的问题了
@人在江湖博客:
1 - 如何封装外部的webservice或wcf,并以wcf形式对外提供接口
如果是按照 SOA 的架构来做的话,整合多个独立的服务的最佳方式是建立 Service Bus;如果不采用这种架构的话,通常将外部独立的 webservice 的客户端代理作为 External Service Layer,同 Data Access Layer 并列,也就是说 Business Layer 可以直接调用 External Service Layer 和 Data Access Layer 来完成业务逻辑。
2 - 服务与服务之间不能直接调用的,只能给UILogic调用
不考虑你的需求的情况下,通用的方式就是 Service Bus,这样可以隔离多个服务,服务与服务之间不知道彼此的存在。也就是说当你们需要保证“服务与服务之间不能直接调用”的话,你就需要额外的间接层来做这个衔接的工作,它可以是 Service Bus,也可以是一个独立的存储区,这需要依据你们具体的需求而定。
@Launcher: 明白了,谢谢解答
当然可以。
我们的架构是:
1.UI=>2.UILogic=>3.Service=>4.Bussiness=>5.DataAccess
每个产品都是按照这种架构,Service往下都是以配置形式提供服务给其他产品调用,但是规定服务与服务之间不能直接调用的,只能给UILogic调用,所以如果要OA的Service要封装CRM的service提供给其他产品用,就不知道怎么搞了
@人在江湖博客: 找你们的架构师去。
自己的SERVICE还搞这一套疯了,嫌电脑太快还是嫌服务器太闲、网络太快?