創建Web服務時需要考慮的各種參數是什麼,這些參數會將糟糕的Web服務變爲可擴展的Web服務?我認爲更大的服務器和調優應該是一條路。但我不知道應該考慮哪些調整因素。如何構建可伸縮的Web服務
回答
1:不要找一個官方的 「REST標準」
REST Web服務是一個概念,而不是一個標準。沒有要求您的REST Web服務以任何特定方式工作。與此同時,雖然...
2:堅持標準,反正
...您的REST Web服務應堅持至少一些標準!例如,用於身份驗證的OAuth,用於數據的JSON和XML,用於傳輸和控制本身的HTTP以及URI標準。如果你想要一個更完整的包裝,OData可以作爲一個更大的物品。僅僅因爲沒有人說「REST必須遵守這些標準」並不意味着你應該自己編寫。
3:確保你的文檔是完美無瑕
隨着SOAP,還有就是Web服務定義語言(WSDL)系統,這使得它很容易與服務工作,如果你有一個工具來自動根據WSDL生成代碼。但是對於REST,服務的定義不太嚴格,並且依賴於被正確調用才能正確工作。這意味着服務文檔至關重要。確保如果您正在創建REST Web服務,該文檔是100%正確的。
4:提供JSON輸出
JSON標準已迅速成爲網絡上很重要的。起初,這很方便,因爲它允許JavaScript輕鬆使用Web服務輸出,並且只需最少的編碼。現在有很多庫允許服務器端和本機客戶端代碼使用JSON。
5:不要忘記XML
說到輸出,XML輸出仍然是重要的,因爲它一直是。爲什麼同時支持XML和JSON?因爲不是每個系統都可以使用JSON,但是如果系統可以進行Web服務調用,它將提供XML處理規定。例如,那裏有一堆遺留系統,它們使用XML而不使用JSON,並非所有開發人員都想開始混合並匹配JSON和XML。確保你的服務支持這兩種格式。 HTTP請求中的「接受」標頭是一種很好的方式,而不是有一個參數或不同的服務URL。
6:理解動詞
之一在REST Web服務的關鍵概念是,功能是在由HTTP協議定義很大一部分。而其中最基本的部分是HTTP動作動詞,如GET和POST。儘管在REST中很好理解了基本功能,但是一些想法,例如使用PATCH來更新實體的特定屬性而不是整個實體,仍然不斷涌現。
7:瞭解URI的路由
RESTful Web服務在很大程度上取決於對URI來決定做什麼的重要性。例如,在「GET」請求中,URI路徑通常包含要檢索的實體的主鍵值(或其他標識符)。例如,「http://www.example.com/service/entityname/76」將檢索名稱爲「entityname」且主鍵值爲76的實體。對於REST Web服務,URI不僅是訪問服務的手段,而且是控制它和信號的一種方式您的需求。
8:無版本的服務
這將是誘人的,因爲你做出改變,以保持只有一個版本的服務,不要做出改變。不要這樣做!確保每次發佈更改時都保持獨立的版本。這樣做的最簡單,最常用的方法是將URI的版本號作爲服務的一部分,通常在路徑的一部分中。人們需要的最後一件事是讓服務的功能在沒有警告的情況下改變。
9:保持聯繫與您的用戶
由於缺乏自動發現的,它是你留在你的用戶和消費者聯繫更爲重要。例如,當您發佈新版本的服務時,應該向用戶發送一封電子郵件,讓他們知道該服務,並提供有關棄用舊版服務的信息。
10:提供樣品代碼
一個你能做的最好的事情是爲開發者提供使用的示例代碼。確保您的代碼至少爲所有主要語言或運行時提供:Java,.NET,JavaScript,Ruby和Python。如果你必須聘請顧問把這些代碼放在一起,因爲這對於你的服務的採用是絕對至關重要的。確保您的授權示例代碼的方式可以讓您的客戶無後顧之憂地使用它,例如MIT或BSD許可證。
你可能想看看微服務。
https://www.nginx.com/blog/introduction-to-microservices/是一個很好的關於microsrvices的系列文章。
您可以通過分發服務實例或通過提升特定服務實例的h/w來縮放微服務。
- 1. 可伸縮的WCF Web服務
- 2. J2EE Web服務的可伸縮性如何處理?
- 3. 如何構建健壯/可伸縮異步等待回顯服務器?
- 4. 如何使用Web服務中的數據構建可伸縮的報表解決方案?
- 5. 用於設計可伸縮的Web服務的模式
- 6. 構建一個可伸縮的ASP.NET MVC Web應用程序
- 7. 水平可伸縮的RESTful服務?
- 8. 使用Cocoa的可伸縮服務器
- 9. Azure服務結構中的可伸縮工作人員
- 10. 構建Web服務
- 11. 構建可伸縮前端體系結構的任何資源?
- 12. 構建Android的Web服務
- 13. 伸縮構造
- 14. Web內容聚合的可伸縮性
- 15. Laravel Web App的可伸縮性
- 16. 可伸縮的web應用程序體系結構
- 17. Java - 我如何構建應急服務層調用Web服務
- 18. socket.io的可伸縮體系結構
- 19. 在沒有Web服務器的情況下構建Web服務
- 20. 設計可伸縮Web架構時需要考慮什麼
- 21. Web API併發性和可伸縮性
- 22. 如何創建Web服務
- 23. ASP.NET網站 - 如何爲Web窗體網站構建Web服務
- 24. *客戶端*可伸縮性,適用於大量遠程Web服務調用
- 25. 構建可同時處理數百萬用戶的可伸縮聊天服務器
- 26. 如何構建一個perl Web服務基礎結構
- 27. 構建一個可伸縮的Spring MVC應用程序
- 28. Ant jwsc中的java.lang.IllegalAccessException web服務構建
- 29. 構建Web服務的代理servlet
- 30. codeigniter可伸縮文件夾結構
謝謝,我想知道如何確保Web服務可以擴展? – noobCoder
您的問題可能會解決此鏈接https://www.w3.org/2001/03/WSWS-popa/paper33 – Archish