WCF面试问题和答案精华合集

WCF面试常见问题解答和答案在许多公司中已经问过。让我们看看WCF面试的主要问题清单。
1)什么是WCF?
WCF代表Windows Communication Foundation。它是用于构建, 配置和部署可互操作的分布式服务的框架。使用WCF, 你可以将数据作为异步消息从一个服务端点发送到另一个服务端点。服务端点可以是IIS托管的连续可用服务的一部分, 也可以是应用程序中托管的服务。端点可以是从服务端点请求数据的服务的客户端。它提供了一种无需编写任何代码即可编写更安全, 灵活的服务的功能。它还为日志记录提供了内置支持。它有助于你使用配置启用/禁用日志记录。
它的代号为” Indigo” 。
2)WCF服务端点是什么?
WCF服务端点具有三个基本元素:地址, 绑定和合同。
地址:它定义URL的地址, 该URL标识服务的位置并指定接收消息的位置。它被指定为统一资源标识符(URI)。 URI模式部分命名用于到达地址的传输机制, 例如HTTP和TCP。 URI的分层部分包含一个唯一位置, 其格式取决于传输机制。
端点地址使你可以为服务中的每个端点创建唯一的端点地址, 或者在某些情况下可以在端点之间共享地址。以下示例显示了使用带有非默认端口的HTTPS协议的地址:
https:// cohowinery:8005 / ServiceModelSamples / CalculatorService
绑定:它定义了如何访问服务, 端点如何与世界进行通信。它由称为绑定元素的一组组件构成, 这些组件一个堆叠在另一个之上, 以创建通信基础结构。至少, 绑定定义了传输方式(例如HTTP或TCP)和所使用的编码(例如文本或二进制)。绑定可以包含指定细节的绑定元素, 例如用于保护消息的安全性机制或端点使用的消息模式。
合同:它定义了服务公开的内容。将多个相关操作捆绑到一个功能单元中。合同可以定义服务级别的设置, 例如服务的名称空间, 相应的回调合同以及其他此类设置。在大多数情况下, 通过使用你选择的编程语言创建一个接口并将ServiceContractAttribute属性应用于该接口来定义合同。实际的服务代码是通过实现接口得出的。
经营合同
操作合同定义参数并返回操作类型。创建定义服务合同的接口时, 可以通过将OperationContractAttribute属性应用于合同的每个方法定义来表示操作合同。可以将操作建模为获取一条消息并返回一条消息, 或者建模为一组类型并返回一个类型。在后一种情况下, 系统将确定该操作需要交换的消息的格式。
留言合同
描述消息的格式。例如, 它声明消息元素是否应该放在标头而不是正文中, 应该对消息的哪些元素应用何种安全级别, 等等。
故障合同
可以与服务操作关联, 以表示可以返回给调用者的错误。一个操作可能有零个或多个与其相关的故障。这些错误是在编程模型中建模为异常的SOAP错误。
数据合约
服务使用的数据类型的元数据中的描述。这使其他人可以与该服务进行互操作。数据类型可以在消息的任何部分中使用, 例如, 用作参数或返回类型。如果服务仅使用简单类型, 则无需显式使用数据协定。
3)WCF中使用了哪些基本组件?
WCF中使用的基本组件列表:
服务等级
服务运行时层包含仅在服务的实际操作期间发生的行为, 即服务的运行时行为。节流控制要处理的消息数, 如果对服务的需求增长到预设的限制, 则可以更改。
终点
WCF服务是一个公开端点集合的程序。每个端点都是与世界交流的门户。所有WCF通信都是通过端点进行的。端点由三个组件组成。
主机环境
服务必须在某些过程中托管。主机是控制服务寿命的应用程序。服务可以自行托管, 也可以通过现有托管流程进行管理。
4)WCF中端点的” 地址” 属性是什么?
“ 地址” 属性是服务级别中定义的端点的一部分。此属性用于指定服务所在的位置。
5)WCF中端点的” 绑定” 属性是什么?
“ 绑定” 属性是服务级别中定义的端点的一部分。此属性用于指定类型协议, 编码和传输。
所有这些因素均由双方共同决定。
6)WCF中端点的” 合同” 属性是什么?
“ 合同” 属性只是客户端和服务器之间的接口, 客户端和服务器之间可以进行相互通信。合同用于指定可用的操作。
7)服务是什么?
服务是向全世界公开的一组功能。面向服务(SO)是用于构建面向服务的应用程序的一组抽象的原则和最佳实践。
8)什么是WCF中的服务代理?
WCF代理用于在客户端和服务器之间进行通信。通过交换请求和响应形式的消息进行通信。它将具有服务路径, 协议详细信息等详细信息。
9)什么是WCF中的” 服务合同” ?
Service Contracts属性在WCF服务的服务级别上使用。它提供了可以从该服务执行的操作的列表。
服务合同可以定义为:
[服务合同]
10)WCF中有哪些不同的实例模式?
WCF中的实例模式的列表:

  • 每次通话
  • 辛格尔顿
  • 每节
11)什么是WCF中的” 按呼叫” 实例模式?
服务请求完成后, 它将为每个方法调用创建一个新的服务实例, 一旦响应到达客户端, 该服务实例将被丢弃。这整个过程称为每个呼叫实例模式。
12)什么是WCF中的” 每会话” 实例模式?
每个会话实例模式在服务和客户端之间创建一个逻辑会话, 它将一直保持到会话结束。当客户端从服务请求时, 将创建会话, 并且该会话专用于该客户端的实例, 并且在客户端会话结束时会话将结束。
13)什么是WCF中的” 单例” 实例模式?
在” Singleton” 模式下, 所有客户端都连接到该服务的单个实例, 并且当服务配置为” Singleton” 模式时, 将在托管服务时创建一个实例, 并在关闭该实例后将其丢弃。
14)你的客户是什么意思?
服务的客户端是消耗其功能的程序单元。客户端可以是控制台应用程序, Windows窗体, WPF或Silverlight类或ASP.Net页面等任何东西。
15)WCF如何工作?
WCF遵循” 软件即服务” 模型。在此模型中, 所有功能单元都定义为服务, 并且为了进行通信, 每个点都是与客户端或其他服务的门户或连接。它是一个公开端点集合的程序。
16)ASMX Web服务和WCF有什么区别?
WCF和ASMX Web服务之间的主要区别在于, ASMX被设计为仅使用SOAP over HTTP发送和接收消息, 而WCF则使你可以通过任何传输协议使用任何格式发送和接收消息。
ASMX Web服务只能在IIS中托管, 而WCF服务具有以下所有托管选项:
  • 及其
  • WAS(Windows进程激活服务)
  • 控制台应用
  • Windows NT服务
  • WCF提供的主机
  • ASMX Web服务支持仅限于HTTP, 而WCF支持HTTP, TCP, MSMQ, NamedPipes。
  • ASMX安全性受到限制。通常, 身份验证和授权是使用IIS和ASP.NET安全配置以及传输层安全性完成的。为了确保消息层安全, 可以使用WSE。
  • WCF为任何协议提供一致的安全编程模型, 并且支持许多与IIS和WS- *安全协议相同的功能, 此外, 它提供对基于声明的授权的支持, 与基于角色的安全性相比, 该声明对资源提供了更细粒度的控制。无论用于实现WCF服务的主机如何, WCF安全性都是一致的。
  • 另一个主要区别是ASMX Web服务使用XmlSerializer进行序列化, 而WCF使用DataContractSerializer, 其性能远优于XmlSerializer。
17)WCF定义了几种合同类型?
WCF定义了四种合同类型:
【WCF面试问题和答案精华合集】服务合同
ServiceContract属性将CLR接口(或推断的接口, 你将在后面看到)映射到技术中立的服务合同。 ServiceContract属性将CLR接口(或类)公开为WCF合同, 而与该类型的可见性无关。
数据合约
服务使用的数据类型的元数据中的描述。这使其他人可以与该服务进行互操作。数据类型可以在消息的任何部分中使用, 例如, 用作参数或返回类型。如果服务仅使用简单类型, 则无需显式使用数据协定。
故障合同
可以与服务操作关联, 以表示可以返回给调用者的错误。
消息合同
描述消息的格式。例如, 它声明消息元素是否应该放在标头而不是正文中, 应该对消息的哪些元素应用何种安全级别, 等等。
18)托管WCF服务有哪些要求?
你至少需要一个托管进程, 一个ServiceHost实例和一个配置为承载WCF服务的端点。
以下是托管服务的可能方法:
  • 托管在托管应用程序/自托管中:
  • 控制台应用
  • Windows应用程序
  • Windows服务
  • 在Web服务器上托管
  • IIS 6.0(ASP.NET应用程序仅支持HTTP)
  • Windows进程激活服务(WAS), 即IIS 7.0支持HTTP, TCP, NamedPipes, MSMQ。
19)WCF中哪些隔离级别不同?
以下是WCF中不同隔离级别的列表:
  • 读取未提交:也称为脏隔离级别。这样可以确保无法读取损坏的数据。这是最低的隔离级别。
  • 读取已提交:确保不读取任何其他应用程序已更改但尚未提交的数据。这是默认级别。
  • 重复读取:停止使用污物读取和不可重复读取。它指出通过查询获取的数据将被锁定, 任何其他事务都不会更新。
  • 可序列化:在交易完成之前, 不允许任何修改和添加新数据。这被认为是非常严格的级别。
  • 快照:修改任何事务已更改的数据时会引发错误。
20)给出WCF中所有绑定的地址格式。
地址格式及其绑定的列表:
TCF地址格式-net.tcp://本地主机:端口号
HTTP地址格式-http://本地主机:端口号
MSMQ地址格式-net.msmq://本地主机:端口号
21)解释WCF RIA?
WCF RIA是用于开发RIA(Rich Internet App)的n层应用程序的框架。它用于Silverlight, AJAX等Rich Internet Apps中。WCFRIA用于解决紧密耦合之类的主要问题。
22)你将如何生成WCF代理?
你可以使用以下步骤生成代理:
使用Visual Studio
使用SvcUtil
23)什么是绑定?
绑定用于定义端点如何与世界进行通信。它定义了诸如HTTP或TCP之类的传输方式。它可以包含指定细节的绑定元素, 例如用于保护端点使用的消息模式的安全性机制。
24)WCF中有哪些不同的通信模式?
WCF中有三种通信方式:
单程
在单向操作模式下, 客户端将向服务器发送请求, 而不管服务执行是成功还是失败。服务器端没有返回, 这是单向通信。
请求-回复
当as客户端向WCF服务发出请求时, 客户端将等待从服务获得响应(直到receiveTimeout)。得到响应后, 它将开始执行该语句的其余部分。
打回来
呼叫客户是一项服务。其中, 服务将充当客户端, 而客户端将充当服务。
25)WCF中的请求-答复模式是什么?
当客户端向服务提出请求时, 它将等待直到获得响应。
如果在给定时间之前未收到响应, 它将显示错误。
如果客户端得到响应, 则将执行下一条指令。
26)WCF中有几种绑定类型?
WCF支持九种绑定类型:
  1. 基本绑定
  2. TCP绑定
  3. 对等网络绑定
  4. IPC绑定
  5. Web服务绑定
  6. 联合Web服务绑定
  7. 双向WS绑定
  8. MSMQ绑定
  9. MSMQ集成绑定
27)WCF支持哪些传输模式?
WCF支持以下传输模式:
  • HTTP
  • TCP协议
  • PEER网络
  • IPC(进程间通信)
  • MSMQ
28)托管WCF服务的方式有哪些?
承载WCF服务的方式为:
  • 及其
  • 自托管
  • WAS(窗口激活服务)
29)WCF中的双工合同是什么?
在WCF中, 双工消息传递或回叫用于与客户端进行通信。通过不同的传输系统, WCF中的双工消息传递就像TCP, 命名管道甚至HTTP一样完成。在WCF中, 这统称为双工合同。基本上双工服务合同是一种消息交换模式, 其中两个端点都可以独立地将消息发送给另一个端点。因此, 双工服务可以将消息发送回客户端端点, 从而提供类似事件的行为。当客户端连接到服务并为服务提供一个通道, 服务可以在该通道上将消息发送回客户端时, 就会发生双工通信。请注意, 双工服务的类似事件的行为仅在会话中起作用。
30)WCF中DataContracts的用途是什么?
在WCF中, 我们可以通过一条消息从客户端与服务器进行通信。因此, 消息将在服务器和客户端之间往返。为了安全起见, 我们正在序列化通过网络发送的消息。
在类级别提供” [DataContact]” 属性, 以通过在属性上使用” [Datamember]” 属性来序列化该类。
31)什么是DataContractSerializer?
.NET 3.0中引入了DataContractSerializer, 而WCF使用DataContractSerializer作为默认值。但是现在, 该序列化程序也可以用于其他序列化目的。对于序列化, 使用” WriteObject()” 方法。
例如:
DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(MyTestClassType));

32)你将如何启用服务的元数据信息?
以下是为WCF启用元数据的两种方法:
对于默认端点:在web.config文件中使用< serviceMetadata> 标记而不指定端点。
对于自定义端点:在web.config文件中使用< serviceMetadata> 标记并指定已定义的端点。
33)哪些绑定用于WCF中的元数据配置?
用于元数据的绑定列表:
  • mexHttpBinding
  • mexNamedPipeBinding
  • mexHttpsBinding
  • mexTcpBinding
34)如何在不创建客户端应用程序的情况下测试WCF应用程序?
有一个名为” wcftestclient.exe” 的工具, 用于在不创建客户端应用程序的情况下测试WCF服务。可以从Visual Studio命令提示符中打开此工具。
35)传输和消息的可靠性是多少?
传输可靠性:它在网络数据包级别提供点对点保证的传送, 并保证数据包的顺序。
消息可靠性:它处理消息级别的可靠性, 而与传递消息所需的数据包数量无关。
36)什么是WCF中的运输可靠性?
“ 传输可靠性” 规定了与协议TCP一样通过网络传送数据包的保证。它还维护数据包的顺序以及数据包的传递。
37)什么是SOA?
SOA代表面向服务的体系结构。它是服务的集合, 这些服务确定两个计算实体之间如何进行通信以实现某些业务功能, 以及一个实体如何代表另一实体工作。
38)在WCF中” receiveTimeout” 属性的用法是什么?
” receveTimeout” 属性用于获取/设置使连接处于活动状态的时间间隔。
39)如何在WCF中使用Svcutil生成代理?
SvcUtil是命令行实用程序。你应该编写以下命令来生成代理:
40)WCF支持哪些样式的模型?
WCF服务支持2种样式的模型:
RPC样式:在RPC样式中, 我们可以使用序列化类型, 并且它提供可用于本地调用的功能。
消息样式:在消息样式中, WCF允许自定义消息头, 还允许我们定义正文和头消息的安全性。
41)WCF中的单向模式是什么?说明。
在WCF单向模式下, 客户端向服务器发送请求, 但不等到响应到来。不管请求是成功还是失败。在这种情况下, 直到收到响应, 客户端才会被阻止。
42)什么是WCF中的回调模式?说明。
回答:WCF回调模式是一种特殊的模式, 其中回调中的WCF调用客户端的方法, 在这种情况下, WCF服务充当客户端, 而客户端充当服务。
” HTTPBinding” 不支持此模式, 因此在此模式下使用” WSDualHttpBinding” 。
43)WCF支持哪些不同类型的事务管理器?
WCF支持以下三种事务管理器:
  1. 重量轻
  2. WS-原子交易
  3. OLE交易
44)WCF中的MEP是什么?
MEP代表消息交换模式。允许使用三种类型的消息交换模式:
  1. DataGram
  2. 请求和回应
  3. 双工
45)WCF中的地址格式是什么?
WCF中地址格式的语法:
46)WCF中的节流是什么?
在WCF中, “ 限制” 用于限制要在应用程序级别创建的会话或实例。它用于提高性能。
47)节流中” maxConcurrentCalls” 的用法是什么?
节流中的” maxConcurrentCalls” 属性用于限制前往服务实例的呼叫总数。默认值为16。
48)什么是WCF中的” 知道类型” ?
KnowType是用于父类的属性, 因为如果将复杂类定义为类的属性, 那么在反序列化过程中编译器将非常困难。
49)举一个KnowType的例子。
请参阅以下示例:
[KnownType(typeof(TestClassCar))] [KnownType(typeof(TestClassTruck))] [DataContract] public class TestClassVehicle { } [DataContract] public class TestClassCar : TestClassVehicle { } [DataContract] public class TestClassTruck : TestClassVehicle { }

    推荐阅读