传统工程:
SSH:dao层 SSM:
实体 model,模型层
业务逻辑层 业务逻辑层
action 控制层(和视图进行交换)
dubbo:对传统工程进行改造(视频软件环境为MyEclipse)
将业务逻辑层以下的做成dubbo服务
action层调用服务,拿到数据进行简单的判断,后与页面进行交换
action有极少的业务逻辑,都是调用服务,接口等后与页面交换
改造后的工程结构:
1.Maven父配置
2.用户服务接口(实体,枚举,common公共的东西)+新加接口,将业务逻辑层中的方法写成接口
3.用户服务实现(业务逻辑实现,dao层Impl接口层,即数据访问层,数据库的xml配置)+新加接口实现类
4.服务消费者(action层) 调用服务接口层的接口名
spring.xml配置在3,4都要配置,还有一些公共的在哪用就在哪引入,且有关dubbo的xml配置还要在里面进行引用说明
4和3只能调用2
在服务端(服务实现)中公布dubbo服务:配置xml文件 dubbo-provider.xml
在xml配置文件中,公布用户服务接口<dubbo:service interface="jrx.anytxn.api.bid.BidService">
<!--提供方应用信息,用于计算机依赖 -->
<dubbo:application name="jrx-front-dubbo" owner="jrx" organization="dubbox"/>
<!--使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!-- 用dubbo协议在20881端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20881"/>
在服务消费端配置xml文件:dubbo-consumer.xml
<!--消费方应用名:用于计算机依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="jrx-demo-consumer" owner="jrx" organization="dubbox"/>
<!--注册中心地址 -->
<!--多注册中心配置,竖号分隔表示同时连接多个不同注册中心,同一注册中心的多个集群地址用逗号分隔 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--用户服务接口--> 与提供接口标签不一样,但是内容一样
<dubbo:reference id="bidService" interface="jrx.anytxn.api.bid.BidService"/>
provider:暴露服务的的服务提供方
consumer:调用远程服务的服务消费方
Registry:服务注册与发现的注册中心
Monitor:统计服务的调用次数,和调用时间的监控中心
Container:服务运行容器
注册中心选择:zookeeper redis