0

私はHTTPを使用するクライアント/サーバーアプリケーションを使用しています。私の目標は、HTTPに新しい機能を追加することです。自分のコードを特定のイベントにフックすることでクライアントを拡張できますが、残念ながらサーバーはカスタマイズできません。クライアントとサーバーの両方がWindows環境にあります。

私の現在の問題は、サーバーから大量のデータを受信するとパフォーマンスがひどくなることです。データの送信と処理に時間がかかります。解決策は、サーバー側にアプリケーションを配置して処理を実行し、結果のみを送信することです(これははるかに小さいです)。問題は、サーバーからの応答を送信する前に操作する組み込み関数がないことです。

ポート80ですべてのトラフィックをリッスンし、関連するHTTP応答を識別して、応答をブロックしながらアプリケーションに送信することを考えていました(クライアントによって処理されない大量のデータを送信しないようにするため)。ネットワークの知識が不足しているので、その方法を考えると少し迷ってしまいます。

WinPCapのような低レベルのパケットインターセプト方法をいくつか見てきましたが、必要なことを行うには多くの作業が必要なようです。さらに、このAPIでは応答をブロックまたは変更することはできないと思います。

特定の要求または応答によってユーザースクリプトをトリガーできるようにするリバースプロキシは完璧ですが、この傍受/送信を他の場所で行う簡単な方法はないのではないかと思います。

この動作を可能にするための最も簡単でクリーンな方法は何でしょうか?

ありがとう!

4

2 に答える 2

1

HTTPサーバーにアクセスするための単純なリバースプロキシの作成を終了しました。次に、リバースプロキシは、サーバーの応答から関連情報を抽出してサーバー側の処理コンポーネントに送信し、応答から抽出された情報を、クライアントが他のコンポーネントに処理結果を取得するように要求するために使用するIDに置き換えます。http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx
の記事は、リバースプロキシの最初のドラフトを作成するのに非常に役立ちました。

于 2010-11-17T08:31:32.640 に答える
0

うーん....選択肢が多すぎます。2つのアイデア:すべてのクライアントでHttpプロキシを構成します。(スクリプト、プラグインを使用して)両方向に通過するものを操作できるものがいくつかあります。または、ポート80をリッスンし、必要なものをポート8080(元のサーバーアプリが実行されている場所)に転送するパススループロジェクトを作成します

問題は、サーバーアプリが実行されているソフトウェアと、どのような知識(開発者)を持っているかということです。ああ。そして「巨大なデータ」とは何ですか?キロバイト?メガバイト?ギガバイト?

于 2010-07-05T15:10:02.660 に答える