我一直在准备MS 70-513考试,并且有自学进度训练套件内容cd,有一些练习测试。
以下是我要求有人解释的那些测试的一个问题。正确标记的答案是A,但我不明白为什么D不正确。
问题:
在WCF中实例化服务对象的默认行为是什么?
A - 每个实例都与一个用户定义的服务对象相关联。
B - 每个实例处理请求应用程序生命周期的所有请求。
C - 为每个客户端请求创建一个新实例。
D - 为每个新客户会话创建一个新实例。
提前Thakns, 布鲁诺答案 0 :(得分:3)
我从msdn论坛得到了答案,我想我已经确信了。
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2e35729f-603a-4a52-a3b7-920c9f3a8100/
引用答案:
这是一个棘手的问题 - 我认为D不正确的原因是 并非每个客户都创建会话。例如basicHttpBinding 不支持会议。所以,如果你不总是有一个会话--D不是 总是如此。但是,A总是如此(除非你创建自己的 自定义行为)因为每个InstanceContext对象都包装一个 用户定义的服务对象(根据您的对象创建的对象) 服务类型)
答案 1 :(得分:2)
它的PerSession
http://msdn.microsoft.com/en-us/library/ms733040.aspx
如果在WCF中使用默认的实例化行为,则WCF客户端对象之间的所有调用都由同一服务实例处理。因此,在应用程序级别,您可以将会话视为启用类似于本地调用行为的应用程序行为。例如,在创建本地对象时: 调用构造函数。 对WCF客户端对象引用的所有后续调用都由同一对象实例处理。 销毁对象引用时会调用析构函数。 只要使用默认服务实例行为,会话就会在客户端和服务之间启用类似的行为。如果服务合同需要或支持会话,则可以通过设置IsInitiating和IsTerminating属性将一个或多个合同操作标记为启动或终止会话。
答案 2 :(得分:0)
我认为D也是正确的,因为InstanceContextMode
默认设置为PerSession
(link)。