2011-07-14 18 views
3

我一直在準備MS 70-513考試和自定進度的培訓工具包內容CD有一些練習測試。在WCF中實例化服務對象的默認行爲是什麼?

以下是我懇求某人解釋的那些測試的一個問題。正確標記的答案是A,但我不明白爲什麼D不是正確的答案。

問題:

在WCF中實例化服務對象的默認行爲是什麼?

A - 每個實例都與一個用戶定義的服務對象關聯。

B - 每個實例處理請求應用程序生命週期的所有請求。

C - 爲每個客戶端請求創建一個新實例。

D - 爲每個新客戶端會話創建一個新實例。

Thakns提前, 布魯諾

回答

3

我從msdn論壇得到了答案,我想我相信它。

http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2e35729f-603a-4a52-a3b7-920c9f3a8100/

引用答案:

這是一個棘手的一個 - 我假設d原因是不正確的是 不是每個客戶端創建一個會話。例如,basicHttpBinding 不支持會話。所以,如果你不總是有一個會議 - D是不是 總是如此。然而,A始終是真實的(除非你創建自己的 定製行爲),因爲每次的InstanceContext對象包裝單 用戶定義的服務對象(根據您的 服務類型創建的對象)

0

我認爲d是正確的爲好,因爲InstanceContextMode默認情況下(link)設置爲PerSession

+0

這是我的想法! – Bruno

2

這是PerSession

http://msdn.microsoft.com/en-us/library/ms733040.aspx

如果您使用WCF默認實例化行爲,WCF客戶端對象之間的所有呼叫都通過相同的服務實例處理。因此,在應用程序級別,您可以將會話視爲啓用類似於本地通話行爲的應用程序行爲。例如,創建本地對象時: 調用構造函數。 所有對WCF客戶端對象引用的後續調用都由同一個對象實例處理。 當對象引用被銷燬時調用析構函數。 只要使用默認服務實例行爲,會話就會在客戶端和服務之間啓用類似的行爲。如果服務合同要求或支持會話,則可以通過設置IsInitiating和IsTerminating屬性將一個或多個合同操作標記爲啓動或終止會話。

相關問題