SOでそのテーマを中心に展開するいくつかの質問を見てきましたが、本当に満足できる答えはありません。
自分が感じたことを言葉にしようとしているのに、いつも周りの人を納得させるほど明確に表現できずにいます。私が間違っているのかもしれません。適切な議論を見つけるには、私の理解が十分に深くないのかもしれません。
「従来の」API アプローチではなく「サービス指向アプローチ」に従ってアプリケーションを開発することをどのように比較しますか?
ここではっきりさせておきたいのは、サービスとは、必ずしも Web サービスを意味しているわけではないということです。
ここに私が見るいくつかの違いがあります。私が間違っている場合は修正してください:
- サービスは、与えられた明示的なプロトコルに従って、会話できる「生き物」です。ライブラリはアプリケーションのランタイムを使用しますが、サービスには独自のランタイムがあります。その「生き物」を好きなところに移動できる
- ライブラリはコードベースの統合を可能にしますが、サービスは伝統的にメッセージベースの統合を使用します (ただし、メッセージの交換に基づいてライブラリを作成することを実際に妨げるものは何もありません)。
- サービスは発見可能です
- コントラクトは明示的であり、実行中のコードの「外部」で表現されます
- サービスは自律的です (ただし、ここでも、自律型 API を作成できますよね?)
- 境界は明示的です
ここで何が欠けていますか?サービスと高レベル API を実際に区別するものは他にあるでしょうか?