0

web.configに同時実行構成がないWCF Webサービスがあるため、デフォルトでパーセッションとして実行されていると思います。このサービスでは、COBOL 仮想マシンを使用して、COBOL Vision ファイルからデータを取得するコードを実行します。COBOL VM の開発者によると、これはシングルトンです。

一度に複数のユーザーがサービスにアクセスすると、定期的に Web サービスがクラッシュします。私が信じているのは、あるプロセスが実行されているときに、別の別のプロセスがほぼ同時に実行されるということです。最初のプロセスが終了し、通常の終了手順で VM を閉じます。2 番目のプロセスはまだ実行中で、データの読み取り/書き込みを試みていますが、VM がシャットダウンされ、クラッシュします。Web サービスのコンストラクターで VM のインスタンスが作成され、一連のメソッドが完了すると、サービスがクリーンアップされ、VM が閉じられます。

私は WCF Web サービスでのシングルトン同時実行について調べており、代わりにこれに切り替える必要があるかもしれないと考えています。このようにして、COBOL VM を開いて永久に存続させ、メソッドで VM をシャットダウンするコードを排除できます。リクエスト間で共有する必要がある唯一のデータは、COBOL VM のステータスです。

私が考えている代替案は、VM を開いて維持し、代わりに Web サービスがそのプロセスを介して読み取り/書き込み要求を行えるようにするサーバー プロセスを作成することです。

これは正しい道のように聞こえますか? 私は基本的に、WCF Web サービスの状況で仮想マシンを維持し、仮想マシンに対してコードを実行し続ける方法を探しています。COBOL VM システムは、再試行または待機を処理するために使用できる読み取り/書き込みに関するロック情報を返信します。

ありがとう、マーティン

4

1 に答える 1

0

Web サービスは次のようにマークされます。

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]

私が理解していることから、これにより、一度に Web サービスを介して実行できるスレッドは 1 つだけになります。他のリクエストは、最初のリクエストが完了するまでキューに入れられます。私のWebサービスは高い同時実行性を必要としないため、これは私の状況で機能する簡単な修正でした。一度にやってくるリクエストの数は決して少なくありません。

于 2012-08-23T12:22:15.617 に答える