AFAIK FieldingはRESTが良いと主張したわけではなく、Webの事実上のアーキテクチャを説明しているだけでした。
それが少し強調されていると思います。結局のところ、RESTはフィールディングがHTTP / 1.1仕様のチーフアーキテクトとして使用していたアーキテクチャスタイルの列挙です。
しかし、実際にはRESTがこのドメインに望ましいアーキテクチャであると考える理由はありますか?HATEOASがマシンツーマシン通信の有益な設計原則であるという証拠はありますか?
"場合によります"。HATEOASはRESTの統一されたインターフェイス制約の一部です。
一般的なソフトウェアエンジニアリングの原則をコンポーネントインターフェイスに適用することにより、システムアーキテクチャ全体が簡素化され、相互作用の可視性が向上します。実装は、提供するサービスから切り離されているため、独立した進化が促進されます。ただし、情報はアプリケーションのニーズに固有の形式ではなく、標準化された形式で転送されるため、均一なインターフェイスでは効率が低下します。RESTインターフェースは、大規模なハイパーメディアデータ転送に効率的で、Webの一般的なケースを最適化するように設計されていますが、他の形式のアーキテクチャの相互作用には最適ではないインターフェースになります。
それでは、これが何を意味するかについて少し考えてみましょう。ワイヤレスルーターで問題が発生した場合、stackexchangeに回答を送信するために使用するのと同じブラウザーを使用して、ワイヤレスルーターと通信できます。特に、どのブラウザを使用しているか、またはブラウザが期待しているものより遅れている(または進んでいる)更新があるかどうかは関係ありません。ブラウザを作成したエンジニアリング組織が、ルーターインターフェイスを作成した組織から完全に独立していることは問題ではありません。
それ だけで動作します。
もちろん、普遍的ではありません。 フィールディング、2008年に次のように書きました。
だからといって、誰もがRESTアーキテクチャスタイルに従って独自のシステムを設計するべきだと思うわけではありません。RESTは、複数の組織にまたがる長寿命のネットワークベースのアプリケーションを対象としています。制約が必要でない場合は、使用しないでください。
RESTアーキテクチャスタイルを形成する制約は、それらが引き起こすプロパティに対して選択されました。これらのプロパティがユースケースにとって価値がない場合、対応する制約の削除を絶対に検討する必要があります。
マシンツーマシンが難しくなるのは、人間が表現によって提供されるセマンティクスとあいまいに一致する能力を失ったことです。クライアントはメディアタイプだけを知っていればうまくいきますが、通常、意味を引き出すためのセマンティックキューを見ている人間がいます。
schema.orgは、機械可読な語彙を作成する取り組みの一部です。マシンエージェントはクライアントを使用してセマンティックヒントを見つけ、その意味の独自の理解を適用して、実行する正しいアクションを選択します。
しかし、それは仕事です。リソースのマシンフレンドリーな表現の開発に投資する必要があり、それらの表現が上位および下位互換性を維持し、クライアントが独立して開発できるようにする必要があります。
単一の組織がクライアントとサーバーの両方を制御する場合、この独立性の利点ははるかに小さく、その場合、制約は適切なアーキテクチャの選択ではない可能性があります。