Client application
-> Front-end API cloud server
->のような3層システム用のREST APIを設計していますuser's home API server (Home)
。
Home
はホームデバイスであり、Front-end
Websocketまたは長い投票(これは、RESTに違反している最初の場所です。後でさらに悪化します)を介した接続を維持することになっています。Front-end
ほとんどの場合、Client
要求をHome
接続にトンネルし、一部の呼び出し自体を処理します。にHome
通知を送信することがありますClient
。
Front-end
Home
基本的に同じAPI を持っています。LAN経由で直接Client
接続している可能性がありますHome
。この場合、それ自体にHome
いくつかのClient
アクションを登録する必要がありFront-end
ます。
このシステムでのRESTの長所は次のとおりです。
- RESTは人間が読める形式です。
- RESTには、動詞(CRUDなど)、名詞、および応答コードのプロトコルオブジェクトへの明確に定義されたマッピングがあります。
- HTTP上で動作し、可能なすべてのプロキシを渡します。
RESTコントラは次のとおりです。
- リクエストとレスポンスのコミュニケーションスタイルだけでなく、パブリッシュサブスクライブも必要です。
- 3層通信エラーを処理するには、HTTPエラーコードでは不十分な場合があります。必要な接続が壊れていて、あるはずだったことを知るためだけに、非同期呼び出しに
Front-end
戻る場合があります。202 Accepted
Home
503
Home
にメッセージを送信する必要がありますClient
。Client
ポーリングするFront-end
か、接続を維持する必要があります。
我々は考えているWAMP / アウトバーンを、それがすでにメッセージキューのように見ていることを私を襲ったとき、機能をパブリッシュ/サブスクライブを取得するのWebSocketの上に。
一種のメッセージングキューをトランスポートとして評価する価値はありますか?
メッセージキューの逆のように見えます:
- CRUD動詞とエラーコードをメッセージレベルで自分で定義する必要があります。
- 「メンテナンスコストが高い」と書いてありますが、どういう意味ですか?
これらの考慮事項はどのくらい深刻ですか?
@Jimmy Hoffa
有効なポイント、ありがとう。その通りですが、完全ではありません。これは一般的なデータベース、ストレージなどです。@Javier
ありがとう、それは答えの良い部分です。
@Mike Brown
丁度。してください。