我一直在閱讀關於Microservice Architecure以及互聯網上有限的有價值信息,我相信我從理論的角度對它有一個公正的理解。據我所知,從高層次上看,這種架構意味着從monoliths轉向,並且擁有小型的獨立服務。但是,我在互聯網上看到的所有示例都建議連接到ESB,以編寫鬆散耦合的Windows服務(在非MS實現的情況下,守護進程)。據我所知,編寫符合SRP的小型,鬆散耦合的Web服務也適合微服務帳單。這就是說,oData.Net服務(所有oData控制器(微服務?)被部署爲一個整體)顯然違反了微服務架構模式。這是否是正確的聲明,使oData.net不是作爲微型服務工作的?如果你的答案是否定的,請在一個例子的幫助下解釋。另外,請幫助我理解,如何在組合中使用API網關模式。是否可以通過oData.net實現微服務
1
A
回答
3
ODATA確實適合微服務。但是,微服務不適合odata。我的意思是,沒有什麼能夠阻止你在微服務中暴露OData。
但是,通過這樣做,您通常會在微服務中暴露一大組內部數據結構。這反過來會增加不同服務之間的耦合。通過這樣做,由於依賴關係,您更難以更改服務。
我個人的經驗法則是要儘可能從每個服務中公開一個小的API。我公開的數據結構與內部數據結構不一樣。它們可能會變平或在不同內部實體中的數據之間進行聯合。
我的推理是:如果您要創建單獨的服務,請嘗試儘可能多地分開它們。否則,你只是建立一個巨石,碰巧運行在幾個不同的窗口服務。
1
oData作爲暴露微服務的方法是完全有效的;暴露一個明確的表,但不是微服務。所以我完全不同意jgauffin。沒有理由使用oData無法提供API。我同意JGauffin的觀點是,API應該有一個與源或目標的詳細數據結構分離的小而平面的空間。因此,服務調用它來轉換API,但意味着API的通用格式可以重用,只要業務需求在那裏,並且技術平臺根據需要進行切換。
相關問題
- 1. 是否可以通過微軟Exchange服務器在django發送電子郵件?
- 2. React VR - 是否可以通過socket.io實現實時對象?
- 3. 如何通過彈簧啓動微服務實現協調?
- 4. 是否可以從現有實體創建服務和DTO?
- 5. PJSIP是否可以實現服務器端?
- 6. 是否可以實現多個wcf服務(多個http:方案)
- 7. 是否可以通過ActiveScaffold實現has_many :: through?
- 8. 是否可以實現通過EF添加插入行的ID
- 9. core.async是否可以通過序列實現它的功能?
- 10. 是否可以通過自舉響應式css實現拖放?
- 11. 在IIS7中是否可以通過FastCGI實現v8cgi?
- 12. 是否可以通過MailAddress類實現XSS?
- 13. 我們是否可以通過AIR應用程序實現SSO
- 14. 是否可以通過簡單的方式實現動態ConfigurationSection?
- 15. 是否可以通過thread_local實現boost :: thread_specific_ptr?
- 16. 是否可以通過WCF實現/保留延遲執行?
- 17. 是否可以通過Apigee代理Web套接字服務?
- 18. 是否可以通過手機瀏覽器觸發Android服務?
- 19. 是否可以通過服務在後臺啓動活動?
- 20. 是否可以通過REST服務更改TemplateID - 「修改模板」
- 21. 是否可以通過互聯網連接到VisualSVN服務器
- 22. 檢查服務器是否可以通過IPv6訪問?
- 23. 是否可以通過CGI控制服務器?
- 24. 是否可以通過鏈接調用Web服務?
- 25. 是否可以通過Windows Installer服務監控安裝?
- 26. 是否可以通過編程調用OS X服務?
- 27. 是否可以通過Javascript連接到UDP服務器?
- 28. 是否可以通過QtService編寫(Windows或Linux)服務?
- 29. 是否可以在微服務應用程序中代理POJO?
- 30. 我可以通過服務器實現客戶端 - 客戶端通信嗎?
是的,你應該通過API提供「視圖模型」,而不是從數據庫中提供實際的域對象。 – FlavorScape