JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java & XML、Web Service » Web Services  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Asynchronous Programming Model [Re:saijone]
saijone

Web Services

版主

發文: 470
積分: 24
於 2003-09-23 12:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Asynchronous Programming Model

Asynchronous 的意義在於 invoke 一個 method 之後, 不用去等待傳回值運算完成便
可以繼續其他的工作, 主要的目的在於平行處理. 一般來說, 多以兩種方式來
'asynchronously' 取得傳回值:

1. Polling: Acync. method 的 Caller 自己檢查傳回值是否運算完成 (一般來說, 用
Caller 自己的Thread), 檢查是否運算完成的 API 不會因為傳回值未運算完成就被
block, 所以 Caller 可以反覆檢查直到運算 完成或放棄(Timeout)為止, 至於多久檢查n一次或什麼情況下檢查由 Caller 的 Logic 決定( 屬於平行處理的設計).

2. CallBack/Listener: Caller 在使用acync. method時, 給予一個CallBack作為參數, 或
register 一個 Listener, 在傳回值運算完成時, Runtime 會有一個 Thread (一般來說,
不是Caller 的Thread) 呼叫 CallBack 上的 API 或通知 Listener 運算完成.

這樣 Asynchronous 的觀念已經在 .NET 上簡單得實現 ...
One of tenets of the .NET Framework:
Not necessary for a called object to do additional programming
to support asynchronous behavior by its clients.


因此.NET 的觀點, 是由Client 決定是否使用Asynchronous API.
至於 Server-side (Called object) , 則沒有必要對 Asynchronous 及 Synchronous 的
Programming model 作區別. 當然Server-side (Called object) 更可以不用是 .NET.
至於Server-side 何時(asynchronously or synchronously)送回 Response, 取決於
Application Logic.

.NET在從WSDL 產生的 Proxy/Stub 上, 對每一個 Web Service Operation 都會有三個
對應的 method:
1. <OperationName>: 與operation 同名
2. Begin<OperationName>: operation-name 前置"Begin"
3. End<OperationName>: operation-name 前置"End"

Begin<OperationName>作為啟動一個 Acync. Operation 之用, 除了原來的參數外,
可多帶一個 CallBack參數, 這樣的 method 直接傳回一個 IAsyncResult instance,
透過 IAsyncResult API可以檢查(polling)傳回值是否運算完成.
End<OperationName>結束一個 Acync. Operation 以 IAsyncResult 為參數取回傳回
值.

Synchronous Invocation:
1
2
 C#
string synReturn =  StockService.GetStockQuote("JSPTW");


Asynchronous Invocation:
1
2
3
4
5
6
7
C#
IAsyncResult AsyncResult =  StockService.
BeginGetStockQuote( "JSPTW", null, null);
while(AsyncResult.IsCompleted  == false) {
     //you can do something else
}
string ReturnValue =  StockService.EndGetStockQuote(AsyncResult);

然而這樣的Asynchronous Programming Model 目前必沒有出現在JAVA WebServices
相關的 Spec. 中. 相信 JAVA 並沒有忘掉這一個重要的功能. Asynchronous
Programming 應該會在未來的 Spec. 中出現.
BEA 在 WebLogic 8.1 上有提供類似 .NET Asynchronous Client-side的支援:
http://edocs.bea.com/wls/docs81/webserv/client.html#1069294


reply to postreply to post
You don't need a reason to help people
話題樹型展開
人氣 標題 作者 字數 發文時間
38411 [精華] Programming in C#(.NET) and Java Web Services saijone 1242 2003-09-22 04:20
39581 Hello Web Service saijone 1982 2003-09-22 11:48
36299 State and Session Management saijone 3363 2003-09-22 11:50
42539 Operation Style (Document/RPC) and Message format(literal/encoded) saijone 3234 2003-09-22 11:51
35069 Value Type to XML Mapping/Binding saijone 2828 2003-09-22 11:52
39981 SOAP Header saijone 3137 2003-09-23 12:22
37959 Asynchronous Programming Model saijone 2241 2003-09-23 12:31
15701 Re:Programming in C#(.NET) and Java Web Services canbes 23 2007-10-01 10:38
» JWorld@TW »  Java & XML、Web Service » Web Services

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8