@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

webサービスの非同期メソッドの実装について

投稿者投稿内容
そら豆
常連さん
会議室デビュー日: 2007/05/10
投稿数: 21
投稿日時: 2007-05-23 10:42
いつもお世話になっております。

VS2003 .NetFreamWork1.1にて、

Webサービスを新たに作成する事になりました。

同期Webメソッドは、以前に作成した事があるのですが、

非同期Webメソッドにつては作成した事もなく、知識が全くありません。

プログラミングを始めてまだ2ヶ月と日が浅く、

どのように実装すればよいか皆目検討がつかない状況です。

WEBサービスの非同期実装(非同期メソッド)について

サンプルや、解説などが詳しく紹介されているHPが御座いましたら、

教えていただけないでしょうか?

どうぞよろしくお願い申し上げます。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-23 11:39
WebService BeginInvoke などで検索するとぽろぽろ出てくると思います。
ヘルプやMSDNも参照してください。
_________________
かるあ のメモスニペット
sorceress
会議室デビュー日: 2007/05/24
投稿数: 2
投稿日時: 2007-05-24 14:52
web service を提供する側では非同期のメソッドを作っておく必要がないと思います。
client側で web service のメソッドを呼び出す時に、同期か、非同期か選択できると思います。
begain<メソッド名>(xxx)
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2007-05-24 17:40
諸農です。

引用:

WEBサービスの非同期実装(非同期メソッド)について
サンプルや、解説などが詳しく紹介されているHPが御座いましたら、
教えていただけないでしょうか?



こちらが参考になると思います。

.NET Framework 開発者ガイド
非同期プログラミングのデザイン パターン
http://msdn2.microsoft.com/ja-jp/library/ms228969(VS.80).aspx

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-05-24 17:56
引用:

そら豆さんの書き込み (2007-05-23 10:42) より:
同期Webメソッドは、以前に作成した事があるのですが、

非同期Webメソッドにつては作成した事もなく、知識が全くありません。

プログラミングを始めてまだ2ヶ月と日が浅く、

どのように実装すればよいか皆目検討がつかない状況です。


直接の回答ではないのですが、Web サービスを非同期でやる必要性は乏しいと思います。呼ぶ側が、非同期で呼べば良いだけのことですから。

たしかに、.NET の Web サービス側のインターフェースに非同期用のインターフェースが存在するみたいですが、私の何年か前の遠い記憶ですが、「本当にこれ使って非同期にして使えるの?使って意味があるの?」と思ったことがあります。漠然とした見解ではありませんが、当時私はこう感じました、という例でした。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-05-24 19:05
引用:

直接の回答ではないのですが、Web サービスを非同期でやる必要性は乏しいと思います。呼ぶ側が、非同期で呼べば良いだけのことですから。

たしかに、.NET の Web サービス側のインターフェースに非同期用のインターフェースが存在するみたいですが、私の何年か前の遠い記憶ですが、「本当にこれ使って非同期にして使えるの?使って意味があるの?」と思ったことがあります。漠然とした見解ではありませんが、当時私はこう感じました、という例でした。


クライアント側にはありますが、Web サービス側のインターフェースに非同期用のインターフェースってありましたっけ?

.NET の内部実装を知っているわけではありませんが、クライアントの非同期呼び出しをプロキシが「自動で」やってくれているだけだと思います。当たり前ですが、サーバーがクライアントをコールバックしてくれるわけでもありません。
なので、「呼ぶ側が非同期で呼べば良いだけ」という事しかできないと思います。

_________________
囚人のジレンマな日々
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-05-24 20:21
.NET Framework絡みで、非同期、Webサービス、というキーワードが出る場合、
考えられるいくつかの話があります。
元質問者がどれについて聞いているのか、あるいはキーワードのみしか
意識していないのかなどが分からないと、何を求めているのか判断できません。


・いわゆる一般的なWebサービスでの非同期処理的な話

Webサービスの呼び出しを、非同期処理のジョブ投入のようなイメージで捉える場合の話です。
例えば処理開始要求のWebサービスを同期的に呼び出して、ジョブIDのようなものを返してもらいます。
クライアントは処理要求後、適当なタイミングでジョブIDをパラメータとして結果取得用のWebサービスを呼び出します。
※まあこれはこういった処理を行う場合のやり方の一例に過ぎませんが。

この場合、Webサービス自体も、呼び出し側も、低レベルでの実装的には非同期ではありません。
Webサービスの実質のジョブが、Webサービス自体とは非同期に処理を行うというイメージです。


・クライアントからWebサービスを非同期で呼び出す話

同期的に実装されたWebサービスを、クライアントから非同期で呼び出します。
非同期なのはあくまでクライアント側のプロキシが提供する機能であり、Webサービスそのものは同期的です。
※単にクライアントで、時間のかかる処理を非同期で呼び出すだけです。


・Webサービスの非同期実装

非同期のWebサービス、というようなものを実装する機能のように見えますが、Webサービス自体はあくまで同期的です。
ただし、Webサービス内の処理で他の時間のかかるリソースを呼び出す場合に、
Webサービスのワーカースレッドが長時間ブロックされて占有されるのを防ぐため、
非同期のリソースアクセスと組み合わせることで、ワーカースレッドをすぐに開放するように実装します。

これはあくまでWebサービスの実装詳細レベルの話で、外から見れば単なる同期的なWebサービスに過ぎません。

※MSDNではこれを「非同期Webサービスメソッド」といっているようですね。


質問者さんが聞いているのはどのような内容についてでしょうか?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-05-24 21:07
引用:

囚人さんの書き込み (2007-05-24 19:05) より:
引用:

直接の回答ではないのですが、Web サービスを非同期でやる必要性は乏しいと思います。呼ぶ側が、非同期で呼べば良いだけのことですから。

たしかに、.NET の Web サービス側のインターフェースに非同期用のインターフェースが存在するみたいですが、私の何年か前の遠い記憶ですが、「本当にこれ使って非同期にして使えるの?使って意味があるの?」と思ったことがあります。漠然とした見解ではありませんが、当時私はこう感じました、という例でした。


クライアント側にはありますが、Web サービス側のインターフェースに非同期用のインターフェースってありましたっけ?


ご指摘ありがとうございます。私が「Web サービス側」と書いたのはたぶん間違いです(間違いであるかどうかも未確認です)。おそらくクライアント側にあったのを、私が見て、私が勘違いしたのだろうと思います。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

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