4

ユーザーが ASP と Winform アプリケーションの間で通信できる方法を探しています。

私は soluto.com のようなものを探しています。ユーザーが Web サイト経由で他のコンピューターにコマンドを送信できるようにしたいと考えています。たとえば、ユーザーが 10 台のコンピューターにサインアップし、mvc アプリに登録されているとします。ユーザーは 10 台のコンピューターすべてを選択し、ボタンをクリックするだけで「このタスクを実行してください」を送信できます。

私は、Winform が httplisten サーバーを作成するようなことを考えています。winform が開くたびに、「私はオンラインです」という投稿が IP:Port とともに mvc に送信されます。サーバーは、必要に応じてその ip:port にリクエストを送信します。

ただし、そのアプローチは非常に安全ではないように思われます。ポートを開いたり、ファイアウォールを構成したりすることは、やり過ぎのようです。

これを達成する他の方法があるかどうか疑問に思っていました。

お手伝いありがとう。

PS これがばかげた考えであると主張する前に、Piriform はこのようなことも行っています。Agomo.comをご覧ください

4

3 に答える 3

4

適切に設計された Web および Windows アプリケーション (MVP、MVC など) でSingalRを使用します。

ウィンドウ クライアント (WPF) を使用した SignalR

コンソール アプリと SignalR

于 2013-10-05T02:03:55.307 に答える
0

WinForm アプリケーション内で WCF サービスを作成し、エンドポイントを指定 (およびエンドポイントを適切に保護) し、WCF サービスに接続するのと同じ方法で ASP.NET アプリケーションから上記のエンドポイントに接続します。

于 2013-10-05T01:52:45.290 に答える
0

Winforms アプリで標準の HttpClient または WebRequest を使用してサービスを定期的に (おそらく 5 秒ごとに) ポーリングし、実行する必要があるタスクがあるかどうかを尋ねてみませんか?

リアルタイム、低遅延、高パフォーマンスの通信が必要でない限り、これはクライアント側のセットアップまたはセキュリティ構成を最小限またはゼロにすることで問題を解決する最も簡単な方法です。

私がそれを行う方法は、データ永続化レイヤーのスタックのように実装することです。そのため、各クライアントは、タスクがキューに入れられたときに追加されるテーブルに行を持つことができます。クライアントが HTTP GET 要求を MVC サーバーに送信すると、そのクライアントのタスクの配列が返されます。データベースからタスクをすぐに削除するか、クライアントが後で HTTP コマンドを送信するのを待って、どれを示すかを指定できます。完了したタスク。

タスクは、いくつかのプロパティを持つ単純なデータ オブジェクトとして表すことも、適切なコードを呼び出すために何らかの方法でクライアントを検索できる文字列または int として表すこともできます。

妥当なセキュリティを確保するために、各クライアントには GUID などの一意のキーを指定するだけでよく、後でサーバーに送信して ID を検証することもできます。これは、Cookie、シークレット、または API キーとも呼ばれます。

于 2013-10-05T02:18:58.623 に答える