开发者社区> 问答> 正文

web层直接调用 dubbo的服务

正在开始做一个新的分布式项目,打算使用dubbo来做服务。但是在实施的时候就遇到了一个问题。

我们的项目结构,简单来说,就是spring rest controller 调用 dubbo service, dubbo service调用DAO(hibernate进行数据映射,进行数据的操作)。

首先想请教一下,这样的设计是否合理?跟其他人聊了一下 ,好像大家通常会把dubbo放在更后端一点,比如日志处理,后端统计,服务的异步解耦。像我们这样,直接在web层对dubbo的service进行调用,或者在dubbo的service里面对hibernate进行调用,是否合理?

现在我们这样做的问题是,当需要加载关联对象的时候(A关联B),dubbo service返回的数据,必须是包含完整的数据,如果只返回A,不可能再在controller里面 进行a.getB()的调用。现在担心如果全部数据返回(或者再构建一个bean,只返回controller需要的部分对象属性),影响效率和性能。
所以现在的数据的模型,不带任何复杂对象的关联,全是基本数据类型。不过这样的话,更让我感觉很别扭。这样的模型不仅是贫血的模型而且连面向对象的设计都算不上了。

不知道我把我的问题描述清楚没有。希望各位高手能给点建议。谢谢!

展开
收起
爵霸 2016-03-04 10:26:55 5319 0
1 条回答
写回答
取消 提交回答
  • 你好,你的问题,应该是2个方面

    1、是否在spring mvc的controller中调用dubbo的service?

     如果是从springmvc 的controller调用service,在service中调用dubbo,存在的一个好处是,可以单元测试,并且比较容易,如果不需要在service中单元测试,可以直接在controller中调用dubbo的service
    

    2、返回数据,是简单类型还是复杂类型?

    如果返回复杂类型,这样导致的问题是这些服务的重用新不好,失去了soa 最重要的服务重用原则,所以,我建议返回简单类型,在springmvc的controller中调用多个soa的方法实现页面的需要

    2019-07-17 18:51:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载