个性化阅读
专注于IT技术分析

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定义了四种合同类型:

服务合同

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  
{  
}
赞(0) 打赏
未经允许不得转载:srcmini » WCF面试问题和答案精华合集
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏