簡體   English   中英

單向操作與異步調用

[英]One-Way operations vs Asynchronous calls

本文第一部分所述 (.chm文件 - 請參閱下面的注釋)

單向調用不等同於異步調用。 當單向呼叫到達服務時,它們可能不會立即全部調度,並且可能在服務端排隊等待一次調度一次......如果排隊消息的數量超過了隊列的容量,那么即使發出單向呼叫,客戶端也會阻止。

如果調用單向調用,它何時將控制權返回給調用者? 同一篇文章的介紹表明, 單向調用用於“即發即棄”操作 ,從而模擬一種異步調用。 如果會話WCF服務具有啟動會話的Login()單向方法,此方法何時將控制權返回給調用者? 在方法實際執行服務之前它是否返回? 如果是這樣,我怎么能確定該方法是在服務上執行的?

如果我希望服務返回到客戶端登錄過程中可能發生的錯誤,那么異步調用是實現“即發即棄”行為的唯一方法嗎?


注意:上面的引用來自一篇名為WCF Essentials的文章- 你需要了解的關於單向調用,回調和事件的內容,由Juval Lowy提供,可以在2006年10月的MSDN雜志中找到。 上面的鏈接是MSDN上的幫助文件(.chm)格式。 如果您無法使鏈接的CHM文件起作用(我不能),您可以使用7zip打開它。

如果會話WCF服務具有啟動會話的Login單向方法,此方法何時將控制權返回給調用者?

對於OneWay呼叫:一旦調度或排隊服務呼叫,呼叫者將繼續執行。 基本上,只要服務成功接收到呼叫。

我怎么能確定該方法是在服務上執行的?

如果客戶端沒有獲得異常,則執行(或將要)服務調用。 當服務調用實際運行或者是否成功或拋出異常時,客戶端都不知道。

如果我希望服務返回到客戶端登錄過程中可能發生的錯誤,那么異步調用是實現“即發即棄”行為的唯一方法嗎?

這根本不符合邏輯。 根據定義,“一勞永逸”意味着忘記結果。 沒有任何價值或錯誤返回給客戶端。 但是,異步調用不會發送,並且會返回錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM