- PR -

Webサービスでの並行処理の制御

1
投稿者投稿内容
なぎ
会議室デビュー日: 2007/03/08
投稿数: 8
お住まい・勤務地: 福岡
投稿日時: 2007-03-09 10:59
こんにちは。なぎと申します。
言語はVBです。
ASP.NETの2.0でWebサービスを作成しています。
そのWebサービスでは別の既製品の
ライブラリを呼び出しています。
その既製のライブラリは内部でExcel起動しているため
並行処理に対応しておらず
並行処理(3つ以上)を行うとエラーが発生します。

そのためWebサービス側で処理数を制御しようと考えました。
当初、Global.asax内にPublic Sharedで変数を宣言し
SyncLockを使用して制御しようと考えていましたが
実現できませんでした。

次にGlobal.asaxのApplication_OnStart内で
アプリケーションオブジェクトに値を設定して制御しようと
考えましたが、これも仕様上実現できませんでした。

なぜ実現できないのか、どうすれば上記のような制御ができる様になるのか
色々調査してみましたが
Webサービスについてまだまだ勉強不足な点が多く
手詰まり状態になってしまいました。

ご存知の方がいらっしゃれば
教えていただけないでしょうか。

よろしくお願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-03-09 11:05
引用:

なぎさんの書き込み (2007-03-09 10:59) より:
当初、Global.asax内にPublic Sharedで変数を宣言し
SyncLockを使用して制御しようと考えていましたが
実現できませんでした。

次にGlobal.asaxのApplication_OnStart内で
アプリケーションオブジェクトに値を設定して制御しようと
考えましたが、これも仕様上実現できませんでした。


具体的にどうやったのかよく分からないのですが、
実現できなかったとはどういう状態ですか?
単一実行しかさせないなら一応はSyncLockでできるでしょうし、
同時実行数を制限するならセマフォとかでもできるでしょうし。
なぎ
会議室デビュー日: 2007/03/08
投稿数: 8
お住まい・勤務地: 福岡
投稿日時: 2007-03-09 11:25
なちゃさん

返信ありがとうございます。
分かりにくい説明で申し訳ありません。。。

具体的に実現できなかったというのは
Webサービスの場合だと
Global.asax内に変数を宣言しても
他のクラスからその変数を参照させる事ができなかったため
実現できませんでした。

Global.asax内のApplication_OnStartで
アプリケーションオブジェクトに値を設定する件は
排他制御を行う際にアプリケーションオブジェクト
全体が使用できなくなるという事で
他の処理との関係上実現できませんでした。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-03-09 11:42
排他処理自体は、Application オブジェクトにフラグを入れておいて、それを Application.Lock/Applcation.Unlock して参照・更新する、などいくらでも方法があるし、大した困難はないはずです。

むしろ、そんなところよりエラー処理をきちんと考えておかないと駄目だと思いますよ。
特に、排他処理がクラッシュした後のリカバーが必要なのだとしたら、そっちの設計に心を砕くべきと思います。

なぎ
会議室デビュー日: 2007/03/08
投稿数: 8
お住まい・勤務地: 福岡
投稿日時: 2007-03-09 11:56
渋木宏明(ひどり)さん

返信ありがとうございます。

Application.Lock/Applcation.Unlockして参照・更新する事は
アプリケーションオブジェクト全体が
使用できなくなるので他の処理との関係上、使う事ができません。

--------------------------------------------------------------------------------
むしろ、そんなところよりエラー処理をきちんと考えておかないと駄目だと思いますよ。
特に、排他処理がクラッシュした後のリカバーが必要なのだとしたら、そっちの設計に心を砕くべきと思います。
--------------------------------------------------------------------------------

ご指摘、ありがとうございます。
処理の実現ばかりに目がいってしまってました。
排他処理がクラッシュした後のリカバーなども含めて
もう一度、設計から見直してみたいと思います。

[ メッセージ編集済み 編集者: なぎ 編集日時 2007-03-09 11:57 ]
1

スキルアップ/キャリアアップ(JOB@IT)