- PR -

スマートクライアントと排他制御

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-12-07 20:20
引用:

囚人さんの書き込み (2005-12-07 20:14) より:
Web サービスのセッション、コネクションを返す、どちらに対してでしたでしょうか?どちらもですね^^;
すみません。無理は承知でした。
できないことはないかなと思いまして^^;


舌足らずでした。
セッションに持つことは、上でも書きましたがやろうと思えば可能です。
※とてもお勧めはできないですっていうかやめたほうが無難です。

戻り値などで、クライアント側に返してやるのは無理です。
とにかく、何らかの形で「サーバ側で」リソースを維持する必要があるからです。
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-12-07 20:39

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

>OracleTransaction のインスタンスがあるのでしょう。

これは、どういう意味でしょうか?
現状、マニュアルにあるものでは、インスタンスらしきものが
見当たりません・・・。

>戻り値などで、クライアント側に返してやるのは無理です。
>とにかく、何らかの形で「サーバ側で」リソースを維持する必要があるからです。

Webサーバのクラス内の、一つのメゾット内で
接続、トランザクション開始、登録SQL発行、コミットっと
一連の流れしかできないって事でしょうか?

私がやりたい事は、最初に書いたとおり
>あるテーブルAをユーザの一人がアクセスした時点で
>他のユーザはアクセスできない(見れない)
↑(訂正:見れない×→見れるが編集ができない○。
この時は、編集できないよという事をユーザに知らせる機能も付加したいです。)
を実現したいと考えています。

(1)検索ボタンのイベントメゾット内でデータを取得。
(2)更新ボタンのイベントメゾット内で編集したデータを更新。
(1)と(2)は、Webサービス上では別々のトランザクション
となるから、何をすればいいのか、思案に暮れています・・・。

何か、ヒントまたはアイデアがあればご教示下さい。

宜しくお願いします。



囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-07 20:49
あーそうだ。Web サービスの戻りでそんなオブジェクトは返せないですね。バグってました。度々すみません。
引用:

何らかの形で「サーバ側で」リソースを維持する必要があるからです。


それよりも Web サービスとか関係ないという事ですね。

引用:

私がやりたい事は、最初に書いたとおり
>あるテーブルAをユーザの一人がアクセスした時点で
>他のユーザはアクセスできない(見れない)
↑(訂正:見れない×→見れるが編集ができない○。
この時は、編集できないよという事をユーザに知らせる機能も付加したいです。)
を実現したいと考えています。



思いつきで書きます。
static 変数でフラグでも持たせるとか。DB でもいいですが。
その変数自体へのアクセスは、普通に排他制御したらよいでしょう。

_________________
囚人のジレンマな日々
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-12-12 22:38
遅くなってしまいましたが、返信ありがとうございます。

static でロックかけてみましたが、ロックがかかりませんでした。
スマートクライアントだと、サーバ(DBアクセス)とクライアントが
1対1になっているようで、Webシステムでいうロックが
できませんでした。ロックかけている箇所がDLしたクライアントの
クラス内なので、それがまずいのかなと・・・!?

Webサービスはstaticで持たせても、requestならあまり意味ないかなって
思ってます。
(→セッションで管理する方法は別に検討中です。。。)

一つ質問なのですが、楽観的排他制御は、主流になっているのでしょうか?
一つ行に複数の人がアクセスする事がないなど、確率的な話になっている気がして、
気持ち的に乗り気ではないのですが・・・。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-13 09:05
引用:

さくさんの書き込み (2005-12-12 22:38) より:

一つ質問なのですが、楽観的排他制御は、主流になっているのでしょうか?
一つ行に複数の人がアクセスする事がないなど、確率的な話になっている気がして、
気持ち的に乗り気ではないのですが・・・。


こちらを読まれたことはございますか?

  楽観的ロックでいいじゃん!

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2005-12-14 23:56
返信&助言ありがとうございます。

楽観的排他制御の件ですが、教えてもらったサイトを一読しました。
(一応、知っていたのですが・・・・)

スマートクライアントでは、ちょっと面倒臭い処理になるなっていう
印象です。

例えば、
1)更新をかける時に検索した時に取得したデータと更新をかける
(トランザクション開始)時のデータをチェックして、
他ユーザによって変更されていないかという事を
チェックする。
2)1)がOKなら、「更新しますか?」っという
確認ダイアログを表示します。
3)実際に更新をかけに行く時にも1)と同じようにチェックし、
更新する。
完全な?排他制御をするためには上記処理をやらないといけないような気がしてます。。。。

自分のイメージが合ってるのか不安なので、ご教示のほど宜しくお願いします。

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