0

サイトの元の開発者に満足できず、私を雇ってくれた会社の Web サイトを管理しています。このサイトの機能の 1 つは、新しい患者を追加することです。患者を追加するには、アプレットを介してクライアント マシンの USB ポートからデータを受信します。Java 7 update 21 以降、アプレットは機能せず、会社はアプレットを削除して別のソリューションに置き換えるように依頼しました。ただし、アプレットがサーバーからのクライアント USB ポートをリッスンしてデータを取得するため、これを行うのに問題があります。これを解決するためのいくつかのアイデアを考えましたが、それが可能かどうかわからず、オンラインで答えを見つけることができませんでした. ここの誰かが私のアイデアが可能かどうか教えてくれたり、正しい方向に向けてくれることを願っていました.

ユーザーが新しい患者を追加すると、Web サイトはサーバー上の Web サービスを呼び出します。次に、この Web サービスは、クライアント上で WCF がホストする Windows サービスを呼び出し、そのシリアル ポート リスナーをアクティブにします。クライアントの Windows サービスがデータを受信すると、WCF はサーバー上の Web サービスに応答し、データを解析します。

私が問題を抱えているのは、Web サービスがクライアントによってダウンロードされた WCF を呼び出して、USB ポートのリッスンを開始する方法を見つけることです。誰かがこれを行う方法を教えてくれたり、サーバーがシリアルポートをリッスンするクライアントを開始するためのより良い方法を提案したりできれば、私はそれを感謝します.

4

1 に答える 1

0

システム要件はありますか? 新しい患者を入力するとき、どのようなブラウザが期待されますか? これは 1 つのソリューションとして展開されますか、それともクライアントは、アプリケーションが最新のブラウザーをサポートできることを期待していますか?

主な問題は、実行できるコードの種類に関してブラウザーが非常に制限的であることです。デフォルトでは、ブラウザーは任意の wcf サービスの実行/インストールはもちろん、プラグインの実行/USB ポートの読み取りを許可しません。

したがって、要件に「最新のブラウザー」があると仮定すると、次のオプションがあります。

  1. Java / ActiveX アプレット プラグイン。これが、クライアント マシンで USB にアクセスする唯一の確実な方法だと思います。また、プラグインは信頼できる証明書で署名されている必要があります。または、クライアントが信頼されていないプラグインの実行を許可する必要があります (要件を再度確認してください)。Silverlight も有効な代替手段になると思いますが、私の調査によると (間違っている場合は修正してください)、そのセキュリティ モデルでは、いかなる種類の USB アクセスも許可されません。

  2. USB にアクセスできるブラウザー プラグイン/ヘルパー オブジェクトをダウンロードしてインストールするようユーザーに促します。そして、このプラグインを介して Web ページと通信します。

私の意見では、クライアント側にwcfサービス全体をインストールするのはやり過ぎです。ファイアウォール、閉じたポート、セキュリティ、自己ホスティング wcf ソリューションの作成などの問題を管理する必要があります。

しかし、クライアント側で wcf サービスをインストールしてホストすることができた場合:

ユーザーが新しい患者を追加すると、Web サイトはサーバー上の Web サービスを呼び出します。次に、この Web サービスは、クライアント上で WCF がホストする Windows サービスを呼び出し、そのシリアル ポート リスナーをアクティブにします。

ラウンドトリップを保存して、ページから直接クライアント サービスを呼び出してみませんか? サーバーはそれを呼び出すためにクライアントアドレスを知る必要がありますが、これは常に可能であるとは限りません。おそらく、Web ページは、wcf サービスがリッスンしている定義済みのポートで localhost にアクセスしようとする可能性があります。

クライアントの Windows サービスがデータを受信すると、WCF はサーバー上の Web サービスに応答し、データを解析します。

Web ページからの呼び出しに応答し (USB の読み取りが遅い場合はポーリングを使用)、それからサーバーに送信する方が簡単です。ブラウザはすでにデータの送信先を認識しており、送信する権限を持っています。ただし、サーバー アドレスがよく知られており、ドメイン名でアクセスできる場合は、クライアントの wcf から接続を試みることができます。

また、 client からの usb への接続について議論する、非常によく似たトピックがあります。

于 2013-05-20T22:31:21.290 に答える