0

私たちのシステムが大きく依存しているサードパーティのライブラリが不十分に作成されているため、問題が発生しています。このライブラリはスレッド セーフではなく (いくつかのバグと静的変数のため)、別のスレッドで各ユーザー要求を処理する ASP.NET Web サービスで使用する必要があります。

この問題に対して多くの解決策を試しました。私の意見では、現時点での最善の解決策は、サブプロセスにリクエストを処理させることです。1 つのサブプロセスが 1 人のユーザーの要求をリッスンして処理するため、ユーザーごとにライブラリ コードへのアクセスを同期できます。これは、要求間で静的変数を共有する場合よりもはるかに優れています。

IPC 通信で受信した要求を、一からやり直さずに適切な WebMethods にルーティングするにはどうすればよいですか? 可能であれば、通常の ASP.NET Web サービスでこれを処理する .Net のクラスを使用したいのですが、それらの名前を見つけるのに苦労しています。

TL;DR : WebMethodAttribute でマークされたいくつかのメソッドを持つクラス MyWebService (System.Web.Services.WebService から継承) があり、作成した HttpRequest (または HttpContext) をそれに渡し、「次のように処理する」ように伝えたい現在のプロセスがコンソール アプリケーションであるにもかかわらず、実際の HTTP サーバーからこれを受信して​​います。」

4

1 に答える 1

0

まず、下位互換性のためだけに保持されているレガシーテクノロジーであるASMXの代わりにWCFを使用することを検討することをお勧めします。

次に、別のオプションがあります。一度に1つのスレッドだけがサードパーティのライブラリを使用するようにします。サードパーティライブラリへのすべてのアクセスの周りにブロックを配置lockすると、問題が解決する場合があります。

于 2012-05-15T16:06:45.987 に答える