WCF 面试题2025年3月16日 | 阅读13分钟 本文列出了许多公司经常问到的 WCF 面试题及答案。让我们来看看 WCF 面试题列表。 1) 什么是 WCF?WCF 代表 Windows Communication Foundation。它是一个用于构建、配置和部署可互操作的分布式服务的框架。使用 WCF,您可以将数据作为异步消息从一个服务终结点发送到另一个。服务终结点可以是 IIS 托管的持续可用服务的一部分,也可以是托管在应用程序中的服务。终结点可以是请求服务终结点数据的服务客户端。它提供了一种无需更改代码即可编写更安全、更灵活的服务的机制。它还提供了内置的日志记录支持。通过配置,您可以启用/禁用日志记录。 它的代号是“Indigo”。 2) 什么是 WCF 服务终结点?WCF 服务终结点有三个基本元素:地址、绑定和契约。 地址:它定义了标识服务位置的 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 服务的服务级别使用。它提供了可以从该服务执行的操作列表。 服务契约可以定义为 [ServiceContract] 10) WCF 中有哪些不同的实例模式?WCF 实例模式列表
11) 什么是 WCF 中的“每个调用”实例模式?当向服务发出请求时,它会为每个方法调用创建一个新的服务实例,并在响应发送给客户端后将其处置。整个过程称为每个调用实例模式。 12) 什么是 WCF 中的“每个会话”实例模式?每个会话实例模式在服务和客户端之间创建一个逻辑会话,并一直维护到会话结束。当客户端从服务请求时,将创建一个会话,并且该会话专用于该客户端的实例,直到客户端会话结束。 13) 什么是 WCF 中的“单例”实例模式?在“单例”模式下,所有客户端都连接到服务的单个实例,当服务配置为“单例”模式时,将在托管服务时创建一个实例,并在服务关闭时将其处置。 14) 什么是客户端?服务的客户端是消耗其功能的程序单元。客户端可以是任何东西,例如控制台应用程序、Windows 窗体、WPF 或 Silverlight 类或 ASP.Net 页面等。 15) WCF 如何工作?WCF 遵循“软件即服务”模型。在此模型中,所有功能单元都被定义为服务,并且对于通信,每个点都是客户端或其他服务的门户或连接。它是一个公开了一组终结点程序的集合。 16) ASMX Web 服务和 WCF 有什么区别?WCF 和 ASMX Web 服务之间的主要区别在于,ASMX 设计为仅使用 SOAP 通过 HTTP 发送和接收消息,而 WCF 则允许您使用任何传输协议上的任何格式发送和接收消息。 ASMX Web 服务只能托管在 IIS 中,而 WCF 服务具有以下所有托管选项
17) WCF 定义了多少种契约?WCF 定义了四种契约 服务契约 ServiceContract 属性将 CLR 接口(或推断出的接口,稍后您将看到)映射到技术中立的服务契约。ServiceContract 属性将 CLR 接口(或类)公开为 WCF 契约,独立于该类型的可见性。 数据契约 元数据中服务使用的数据类型的描述。这使得其他人可以与服务进行互操作。数据类型可以用于消息的任何部分,例如作为参数或返回值。如果服务仅使用简单类型,则无需显式使用数据契约。 故障契约 可以与服务操作关联,以表示可以返回给调用者的错误。 消息契约 描述消息的格式。例如,它声明消息元素是放在标头还是正文中,消息的哪些元素应应用何种级别的安全性,等等。 18) 托管 WCF 服务有哪些要求?至少需要一个托管进程、一个 ServiceHost 实例和一个配置好的终结点来托管 WCF 服务。 以下是托管服务的可能方法
19) WCF 中有哪些不同的隔离级别?以下是 WCF 中不同隔离级别的列表
20) WCF 中所有绑定的地址格式是什么?地址格式及其各自绑定的列表 TCF 地址格式 - net.tcp://:portnumber HTTP 地址格式 - https://:portnumber MSMQ 地址格式 - net.msmq://:portnumber 21) 解释 WCF RIA?WCF RIA 是用于开发 RIA(富互联网应用程序)的多层应用程序的框架。它用于 Rich Internet Apps,如 Silverlight、AJAX 等。WCF RIA 用于解决紧耦合等主要问题。 22) 如何为 WCF 生成代理?您可以通过以下步骤生成代理 使用 Visual Studio 使用 SvcUtil 23) 什么是绑定?绑定用于定义终结点如何与外界通信。它定义了传输,如 HTTP 或 TCP。它可能包含指定安全性机制(用于保护消息模式)等详细信息的绑定元素。 24) WCF 中有哪些通信模式?WCF 中有三种通信模式 单向 在单向操作模式下,客户端向服务器发送请求,不关心服务执行的成功与否。服务器端没有返回值,这是一种单向通信。 请求-回复 当客户端向 WCF 服务发出请求时,客户端会等待从服务接收响应(直到 receiveTimeout)。收到响应后,它将开始执行其余语句。 回调 这是服务调用客户端。在此,服务充当客户端,客户端充当服务。 25) WCF 中的请求-回复模式是什么?当客户端向服务发出请求时,它会一直等待直到收到响应。 如果在规定时间内未收到响应,则会显示错误。 如果客户端收到响应,则将执行下一条指令。 26) WCF 中有多少种绑定?WCF 支持九种绑定
27) WCF 支持哪些传输架构?WCF 支持以下传输架构
28) 托管 WCF 服务有哪些方式?托管 WCF 服务的方式是
29) WCF 中的双工契约是什么?在 WCF 中,双工消息传递或回调用于与客户端通信。通过不同的传输系统,WCF 中的双工消息传递可以通过 TCP、命名管道甚至 HTTP 进行。总而言之,这被称为 WCF 中的双工契约。基本上,双工服务契约是一种消息交换模式,其中两个终结点可以独立地向对方发送消息。因此,双工服务可以向客户端终结点发送消息,从而提供类似事件的行为。当客户端连接到服务并向服务提供一个通道以便服务可以向客户端发送消息时,就会发生双工通信。请注意,双工服务的类似事件的行为仅在会话内有效。 30) WCF 中 DataContracts 的用途是什么?在 WCF 中,我们可以通过消息与客户端服务器进行通信。因此,消息会在服务器和客户端之间来回传递。出于安全目的,我们会对通过网络发送的消息进行序列化。 “[DataContact]”属性在类级别给出,用于通过类属性上的“[Datamember]”属性来序列化类,因为在反序列化过程中,编译器将难以处理复杂的类。 31) 什么是 DataContractSerializer?DataContractSerializer 在 .NET 3.0 中引入,WCF 默认使用 DataContractSerializer。但现在这个序列化器也可以用于其他序列化目的。对于序列化,使用 WriteObject() 方法。 例如 32) 如何启用服务的元数据信息?以下是启用 WCF 元数据的两种方法 对于默认终结点:在 web.config 文件中使用 对于自定义终结点:在 web.config 文件中使用 33) WCF 中哪些绑定用于元数据配置?用于元数据的绑定列表
34) 如何在不创建客户端应用程序的情况下测试 WCF 应用程序?有一个名为“wcftestclient.exe”的工具,用于在不创建客户端应用程序的情况下测试 WCF 服务。可以从 Visual Studio 命令提示符打开此工具。 35) 什么是传输可靠性和消息可靠性?传输可靠性:它在网络包级别提供点对点保证交付,并保证数据包的顺序。 消息可靠性:它处理消息级别上的可靠性,而与传递消息所需的包数量无关。 36) WCF 中的传输可靠性是什么?“传输可靠性”指定了像 TCP 协议那样在网络上传输数据包的保证。它还维护数据包的顺序以及数据包的传输。 37) 什么是 SOA?SOA 代表面向服务架构。它是一组服务,用于确定两个计算实体之间如何通信以实现某些业务功能,以及一个实体如何代表另一个实体工作。 38) WCF 中“receiveTimeout”属性的用途是什么?“recieveTimeout”属性用于获取/设置使连接保持活动的间隔时间。 39) 如何使用 Svcutil 在 WCF 中生成代理?SvcUtil 是一个命令行实用程序。应输入以下命令生成代理 40) WCF 支持哪些模型样式?WCF 服务支持 2 种模型样式 RPC 样式:在 RPC 样式中,我们可以使用序列化类型,它提供了本地调用可用的功能。 消息样式:在消息样式中,WCF 允许自定义消息标头,并且还允许我们为正文和标头消息定义安全性。 41) WCF 中的单向模式是什么?解释一下。在 WCF 单向模式下,客户端向服务器发送请求,但不等待响应。它不关心请求是失败还是成功。在这种情况下,客户端不会被阻塞直到收到响应。 42) WCF 中的回调模式是什么?解释一下。答案:WCF 回调模式是一种特殊类型的模式,其中 WCF 在回调时调用客户端的方法,在此场景下,WCF 服务充当客户端,客户端充当服务。 “HTTPBinding”不支持此模式,因此在此模式下使用“WSDualHttpBinding”。 43) WCF 支持哪些不同类型的事务管理器?WCF 支持三种类型的事务管理器
44) WCF 中的 MEP 是什么?MEP 代表消息交换模式。允许三种消息交换模式
45) WCF 中的地址格式是什么?WCF 地址格式语法 46) WCF 中的节流是什么?在 WCF 中,“节流”用于限制应用程序级别创建的会话或实例。它用于提高性能。 47) Throttling 中“maxConcurrentCalls”的用途是什么?节流中的“maxConcurrentCalls”属性用于限制将要发送到服务实例的总调用数。其默认值为 16。 48) WCF 中的“Know Types”是什么?KnowType 是一个属性,用于父类,因为如果您将复杂类定义为类的属性,那么在反序列化过程中编译器将非常困难。 49) 给出一个 KnowType 的例子。请看这个例子 |
我们请求您订阅我们的新闻通讯以获取最新更新。