工作久了,碰到的專案也多,接觸各式各樣的Web API 服務
有時候會想,到底哪一種比較好?
但其實並沒有哪一個比較好,只有比較適合
每一種技術會出現都是為了解決某一個問題
Web app | Web RESTful API | WebSocket | SOAP | gRPC | |
---|---|---|---|---|---|
格式 | JSON, HTML, XML...etc | JSON, HTML, XML...etc | JSON..etc | XML | Protobuf (small、binary) |
傳輸協定 | HTTP | HTTP | TCP, TLS 雙向 | HTTP, SMTP, UDP...etc | HTTP/2 雙向 |
安全性 | 支援 HTTPS, SSL | 支援 HTTPS, SSL | 中 | 高 支援SSL, ACID 交易 | 高 TLS |
程式撰寫難度 | 低 (快速) | 低 | 中 | 高 | 高 |
意義 | HTTP傳輸協定 | 具象狀態傳輸 | 全雙工通訊 | 簡單對象訪問協定 | 全雙工通訊 |
方法 | 事件驅動 | 資料驅動 | 事件驅動 | 功能驅動 | 事件驅動 |
適合產業 | 移動服務, 社交網路, 公共API | 移動服務, 社交網路, 公共API | 資訊交換, 通訊軟體, 高頻交易, 證券服務 | 企業, 高安全性系統, 金融服務, 支付關網, 電信服務 | 微服務, 點對點即時通訊, 網路受限的環境 |
耦合性 | 低 | 低 | 中 | 高 | 低 |
特點 | 頻寬小 支援快取 支援瀏覽器 無狀態 不用貫徹RESTful精神 | 頻寬小 支援快取 支援瀏覽器 無狀態 | 讓客戶端與伺服器端之間交換變簡單 | 使用頻寬大 預設無狀態(SOAP API有狀態) | 精簡且有效率 傳輸量很小 |
除了以上的Web API,當然還有比較舊的HTTP Handler”.ashx”、Web Service、etc…
但有時候在趕專案時候,RESTful有時候會稍微綁手綁腳 XD”
資料也許有誤,歡迎提出討論