首页 新闻 会员 周边

如何封装外部的webservice或wcf,并以wcf形式对外提供接口?

0
悬赏园豆:15 [已解决问题] 解决于 2015-02-13 09:39

如何封装外部的webservice或wcf,并以wcf形式对外提供接口?

补充:服务可以调用服务吗?

renzaijianghu的主页 renzaijianghu | 菜鸟二级 | 园豆:258
提问于:2015-02-12 11:32
< >
分享
最佳答案
0

假设你们有 OAService 和 CRMService,按照"服务与服务之间不能直接调用的,只能给UILogic调用"的原则,那么你只能在 UILogic 中去分别调用 OAServiceA 和 CRMService。

那么问题来了,你为啥还要提这个问题呢?

收获园豆:15
Launcher | 高人七级 |园豆:45045 | 2015-02-12 13:20

我估计着要么

他以为OAUILogic只能调用OAService,然后CRMUILogic只能调能CRMService,

或者事实上就是这样的,

所以有此一问。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-12 14:22

@爱编程的大叔: 你想象力真丰富

Launcher | 园豆:45045 (高人七级) | 2015-02-12 14:24

 我的问题:

 1、OAUILogic=>OAService、OAUILogic=>CRMService都没问题

 2、OAUILogic=>CRMService后,要将这个结果以OAService的方式提供出去?怎么实现

 

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 14:32

@人在江湖博客: 能再讲清楚点吗?

2、OAUILogic=>CRMService后,要将这个结果以OAService的方式提供出去

OAUILogic=>CRMService后 - 我理解为 OAUILogic 调用 CRMService 得到结果集 OAUI-CRMS-Result;

要将这个结果以OAService的方式提供出去 —— 我理解为将 OAUI-CRMS-Result 以 OAService 服务发布出去;

是这个意思吗?

Launcher | 园豆:45045 (高人七级) | 2015-02-12 14:35

@Launcher: 是的

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 14:38

@人在江湖博客: 根据你的描述,最简洁的流程就是 OAService -> (OAUILogic -> CRMService),那么这与你们的规则“OAUILogic -> OAService”冲突,因此你这想法是行不通的。

仅仅是在 OAService、OAUILogic和 CRMService 之间来回做概念游戏是没有意义的,你需要提出你的业务需求,而不是先给出一种不可能的解决方案。

Launcher | 园豆:45045 (高人七级) | 2015-02-12 14:48

@Launcher: 我们的业务需求是这样的:

假如有四个产品:

1、公共平台产品(各个产品的管理界面):

2、安全中心产品(用户登录,权限控制)

3、工作流产品(流程控制等)

4、OA产品

架构全部是一样的,如上图

我们想OA这边要取用户登录、权限控制什么的,都直接从公共平台的Service来取,而不要自己去拿安全中心和工作流的Service

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 15:16

@人在江湖博客: 你把安全中心的 SecUILogic.dll 拷贝到公共平台下面,然后由公共平台的 Service 调用不就行了。

Launcher | 园豆:45045 (高人七级) | 2015-02-12 15:55

@Launcher: 不行的,各个产品之间只能提供Service里面的DataContracts、ServiceContracts的dll+配置文件

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 16:49

@人在江湖博客: 然后 Service 之间还不能互相调用,对吧!如果是这样的话,那你这个根本没法做嘛!你们这些规定到底是人为的,还是说你技术上实现不了?

Launcher | 园豆:45045 (高人七级) | 2015-02-12 17:00

@人在江湖博客: 我比较纳闷的就是你这两句话:

1 - 如何封装外部的webservice或wcf,并以wcf形式对外提供接口

2 - 服务与服务之间不能直接调用的,只能给UILogic调用

既然有 2 了,你为什么还要问 1 呢?你能给我解释清楚吗?

Launcher | 园豆:45045 (高人七级) | 2015-02-12 17:04

@Launcher: 呵呵,技术总监规定的

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 20:35

1 - 如何封装外部的webservice或wcf,并以wcf形式对外提供接口

答:是想了解大家在服务中是如何封装其它服务的

2 - 服务与服务之间不能直接调用的,只能给UILogic调用

答:是想问下类似我们的架构,有没有实现的的可能,技术上肯定可以,可能是规范的问题了

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 20:44

@人在江湖博客: 

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 | 园豆:45045 (高人七级) | 2015-02-13 09:21

@Launcher: 明白了,谢谢解答

renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-13 09:39
其他回答(1)
0

当然可以。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-12 11:51

我们的架构是:

1.UI=>2.UILogic=>3.Service=>4.Bussiness=>5.DataAccess

每个产品都是按照这种架构,Service往下都是以配置形式提供服务给其他产品调用,但是规定服务与服务之间不能直接调用的,只能给UILogic调用,所以如果要OA的Service要封装CRM的service提供给其他产品用,就不知道怎么搞了

支持(0) 反对(0) renzaijianghu | 园豆:258 (菜鸟二级) | 2015-02-12 12:04

@人在江湖博客: 找你们的架构师去。

自己的SERVICE还搞这一套疯了,嫌电脑太快还是嫌服务器太闲、网络太快?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2015-02-12 12:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册