一個電商專案的Web服務化改造7:Dubbo服務的呼叫,4個專案
使用dubbo服務的過程,很簡單,和之前學習的WebService完全一樣,和本地介面呼叫也基本一致。
dubbo和WebService的區別:我認為dubbo就是封裝了WebService,然後提供了更多的配套功能。看jar包依賴,dubbo依賴的WebService。(青出於藍,而勝於藍。冰,水為之,而寒於水。)
dubbo介面和本地service介面的區別:dubbo呼叫的是遠端方法,本地呼叫的本地方法
作為服務的實現方,或者說最初負責“服務化改造” 的人來說,你需要考慮到怎麼簡化呼叫方的工作,怎麼測試服務方的介面。因此, 我認為需要4個專案。
1.介面專案-呼叫者只需要知道這個
服務呼叫方和服務提供方的互動介面。
定義服務的介面,公共的mobel、bean等實體類。
BrandService.java,Brand.java,BrandBean.java
dubbo服務配置:
<dubbo:reference id="brandService" interface="com.webservice.service.front.BrandService" version="1.0.0"
BrandServiceImpl.java
其它相關程式碼和配置
<bean id="brandService" class="com.webservice.service.impl.BrandServiceImpl"/>
<dubbo:service interface="com.webservice.service.front.BrandService" version="1.0.0"
3.本地測試專案
單元測試:mapper、dao、service
參考前一篇的單元測試程式碼,初始化+標準4步
4.dubbo遠端測試專案
單元測試:service(不可能知道dao和mapper的實現),參考上一篇單元測試程式碼
Java應用測試:service,呼叫方也可能是普通的Java應用程式呼叫(模擬真實場景1)
dubbo和WebService的區別:我認為dubbo就是封裝了WebService,然後提供了更多的配套功能。看jar包依賴,dubbo依賴的WebService。(青出於藍,而勝於藍。冰,水為之,而寒於水。)
dubbo介面和本地service介面的區別:dubbo呼叫的是遠端方法,本地呼叫的本地方法
作為服務的實現方,或者說最初負責“服務化改造” 的人來說,你需要考慮到怎麼簡化呼叫方的工作,怎麼測試服務方的介面。因此, 我認為需要4個專案。
1.介面專案-呼叫者只需要知道這個
服務呼叫方和服務提供方的互動介面。
定義服務的介面,公共的mobel、bean等實體類。
BrandService.java,Brand.java,BrandBean.java
dubbo服務配置:
<dubbo:reference id="brandService" interface="com.webservice.service.front.BrandService" version="1.0.0"
url="webservice://127.0.0.1:9000/com.webservice.service.front.BrandService"/>
2.介面實現專案-服務的實現者 BrandServiceImpl.java
其它相關程式碼和配置
<bean id="brandService" class="com.webservice.service.impl.BrandServiceImpl"/>
<dubbo:service interface="com.webservice.service.front.BrandService" version="1.0.0"
protocol="webservice" ref="brandService"/>
3.本地測試專案
單元測試:mapper、dao、service
參考前一篇的單元測試程式碼,初始化+標準4步
4.dubbo遠端測試專案
單元測試:service(不可能知道dao和mapper的實現),參考上一篇單元測試程式碼
Java應用測試:service,呼叫方也可能是普通的Java應用程式呼叫(模擬真實場景1)
Web應用測試: service,呼叫方,有較大可能是Web專案呼叫(模擬真實場景2)
public class BrandServiceTest {
public static void main(String[] args) {
String configLocation = "classpath*:spring-context-nodubbo.xml";
configLocation = "spring-context-dubbo.xml";
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(
configLocation);
classPathXmlApplicationContext.start();
BrandService brandService = (BrandService) classPathXmlApplicationContext
.getBean("brandServiceImpl");
//BrandService brandService = (BrandService) classPathXmlApplicationContext
// .getBean(BrandService.class);
//找不到,名字是brandServiceImpl,或者根據型別
//BrandService brandService = (BrandService) classPathXmlApplicationContext
// .getBean("brandService");
List<Brand> brandList = brandService.listAll();
for (Brand brand : brandList) {
System.out.println("=====================================");
System.out.println(brand.getName());
System.out.println("=====================================");
}
classPathXmlApplicationContext.close();
}
}
@Controller
@RequestMapping("brand")
public class BrandController {
@Autowired
private BrandService brandService;
@ResponseBody
@RequestMapping("listAll")
public List<Brand> listAll(){
return brandService.listAll();
}
}
個人觀察:面向介面程式設計。介面呼叫方,只知道介面,而不知道實現, 真是不錯。
相關文章
- 一個電商專案的Web服務化改造Web
- 一個電商專案的Web服務化改造2:現有專案的5個問題Web
- 一個電商專案的Web服務化改造4:方案和架構,通用介面的定義和實現Web架構
- 一個電商專案的Web服務化改造3:改進方案の規範和約定、單表、單一職責Web
- 一個電商專案的Web服務化改造6:單元測試4步走,構造資料、執行操作、斷言、回滾Web
- 深度理解React專案的服務端渲染改造React服務端
- 從零建立一個 Dart 服務端專案Dart服務端
- 一個內建於專案的分散式快取服務分散式快取
- 專案化管理顧問服務
- 如何衡量專業服務專案的盈利能力
- 【CuteJavaScript】Angular6入門專案(4.改造元件和新增HTTP服務)JavaScriptAngular元件HTTP
- golang 同時(一個專案)註冊http和GRPC服務GolangHTTPRPC
- 使用dubbo+zookeeper釋出服務與呼叫服務
- 分散式服務框架Dubbo入門案例和專案原始碼分散式框架原始碼
- 仿掘金前臺 vue 服務端渲染(ssr)後臺 react (spa) 後臺服務是 koa 的一個專案Vue服務端React
- 如何管理服務業務中的專案收入?
- 關於一個java專案呼叫另一個java專案的心得Java
- React服務端渲染(專案搭建)React服務端
- feed服務專案設計思考
- SAS服務效能問題專案
- Node 呼叫 dubbo 服務的探索及實踐
- Web專案架構優化單臺機器到叢集服務Web架構優化
- dubbo 遠端服務無法呼叫
- Hyperf 完整專案-2-服務限流
- google雲服務上傳專案用法Go
- 機器學習web服務化實戰:一次吐血的服務化之路機器學習Web
- .Net Core 3.1瀏覽器後端服務(一) Web API專案搭建瀏覽器後端WebAPI
- 用 GIN 構建一個 WEB 服務Web
- Dubbo原始碼分析(五)Dubbo呼叫鏈-服務端原始碼服務端
- Dubbo服務呼叫過程原始碼解析④原始碼
- day98:MoFang:服務端專案搭建服務端
- Java專案Docker化改造(一)JavaDocker
- BS專案難題:如何從服務端自動下載一個DLL,並在瀏覽器中呼叫這個DLL服務端瀏覽器
- 關於專案中NServiceBus和MEF注入(WCF服務代理失效)的兩個問題
- 【docker專欄4】使用docker安裝nginx提供web服務DockerNginxWeb
- 服務交付的專案:建立PM牢固的客戶關係
- websocket(推送服務)初始化及實際專案運用Web
- 「分散式技術專題」去中心化服務與中心化服務的優劣分散式中心化