亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何定義 REST 服務契約以在多個類似服務之間共享使用?

如何定義 REST 服務契約以在多個類似服務之間共享使用?

狐的傳說 2022-06-23 19:26:22
我正在用 Java 實現一系列 REST 微服務——我們稱它們為“適配器”。每個服務都從特定的源類型讀取數據,并以相同的方式提供結果。主要思想是為所有這些提供相同的接口(服務合同),以獲得可互換性。我想避免代碼重復并重用服務的服務合同??磥砦艺谥匦掳l明輪子。對此有標準方法嗎?我嘗試以 Java 接口的形式為 Spring MVC Controller 類和隨附的 DAO 類提取服務合同CustomObject:public interface AdapterController {    @RequestMapping(method = RequestMethod.GET, value = "/objects/{name}")    CustomObject getObject(@PathVariable final String name);}然后將它們放入單獨的 Maven 項目中,將其設置為原始項目中的依賴項,并重寫 REST 控制器類,如下所示:@RestControllerpublic class DdAdapterController implements AdapterController {    @Override    public CustomObject getObject(String name) {        return model.getByName(name);    }我也可以在客戶端代碼中重用 DAO 對象,但是接口類在客戶端是無用的。1)總結:可以在不同的服務實現之間重用/共享服務契約嗎?這樣做的代價是什么?是否有共享服務合同的最佳實踐?2)下一個問題是關于服務合同和消費客戶??梢栽诜蘸涂蛻舳酥g共享合同嗎?Java/方法中有一些工具嗎?
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

這違背了微服務的心態,從長遠來看,共享代碼是一個壞主意。

如果您開始共享代碼,您將慢慢構建一個分布式單體,其中多個服務相互依賴。

之前很多人都討論過這個問題:

微服務-不創建-共享庫

服務間過度耦合的弊端遠比代碼重復帶來的問題嚴重

微服務:共享庫 vs 代碼重復

構建微服務的關鍵是:

  • 一項服務應該非常擅長一件事

  • 保持小

  • 有一個非常有據可查的 api

  • 當您需要刪除一個微服務時,應該這樣做,因為很少需要更新其他服務

  • 避免代碼共享,將所有庫視為 3rd 方庫,甚至是您自己的庫


查看完整回答
反對 回復 2022-06-23
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

  1. 微服務應該松散耦合 = 最小依賴。

    微服務是一種架構風格,它將應用程序構建為服務的集合,這些服務是

    • 高度可維護和可測試

    • 松耦合

    • 可獨立部署

    • 圍繞業務能力進行組織。

https://microservices.io/

可以使用 WADL 定義合約

  1. 在客戶端和服務器之間使用契約意味著在實現客戶端時更少的錯誤,更少的誤解。這就是合同的好處。


查看完整回答
反對 回復 2022-06-23
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號