まず、すべてのプログラマーに乾杯 [ 今日 = プログラマーの日 :) ]
次に、サーバーをフロント エンドとして使用し、アプリケーションをバック エンドとして使用することが仕様で要求されるプロジェクトに取り組んでいます。このプロジェクトは、高度なスマート ホーム システムです。サーバーは、クライアントからインターネット経由で送信されるコマンドを処理し (たとえば、家の外からのリモコンのように)、それらを (通信チャネル経由で) アプリケーション (JAVA アプリケーションの使用を計画中) に送信します。アプリケーションはメイン ロジックを処理します。ハードウェアの制御 (照明など)、マイクからの読み取り (ローカル マイク)、音声認識システムとして機能するデータベースへのアクセス (オフライン) などです。
現在、私はまだ計画段階にあり、このプロジェクトに最適なテクノロジがわかりません。サーバーとしてNode.jsまたはApacheを使用し、バックエンドとしてJavaアプリケーションを使用し、アプリケーションの SRS 用に任意のSQL データベースを使用することを考えています。
この図がシステムの仕組みを明確に示していることを願っています。
主な質問は次のとおりです。
Java アプリケーションをサーバーと通信させる最善の方法は何ですか (通信チャネル [双方向でなければなりません])?
そして、この仕事のために言及されたもの以外の特定のサーバーをお勧めしますか?
これまでに頭をよぎったこと:
1- JSP とサーブレット (サーバーの作成もアプリケーションです)。しかし、サーバーにオフラインの処理をさせたくないので、Java サーブレットがハードウェア インターフェイスにアクセスできるかどうかわかりません。また、サーバーを重要な決定を下すことから分離したいと考えています (セキュリティ上の理由と、ローカル [オフライン] システムほど頻繁に使用されないため、別のレイヤー)。
2-通信チャネル :
A-共有ファイルですが、ファイルの内容が変更されたか (コマンドを受信したか)、時々変更されていないか (過度の操作) をアプリケーションに確認させたくないので、これは悪い考えです。
B- A ポートを介したプロセス間通信 (ソケット通信) が最善の解決策のようですが、運用コストと通信エラーの点でどうなるかわかりません。
使用OS: Linux Raspbian
編集:
このタスクには ZMQ+Apache で十分だと思いますが、WebServices (SOAP など) と比較してどうですか? 標準実装とセキュリティの観点から、WebServices はより優れたソリューションでしょうか?
関連するすべての提案を歓迎します、TQ