为啥 WCF 如此重要,在啥情况下使用它?

Posted

技术标签:

【中文标题】为啥 WCF 如此重要,在啥情况下使用它?【英文标题】:Why is WCF so important and in what cases is it used?为什么 WCF 如此重要,在什么情况下使用它? 【发布时间】:2010-10-11 07:17:21 【问题描述】:

我在一定程度上理解它可以帮助应用程序进行通信,无论其位置如何。为什么它很重要?WCF 的实际使用示例是什么?

【问题讨论】:

【参考方案1】:

WCF 是一种通用通信机制,允许您在两方之间设置通用客户端/主机通信。 WCF 的巧妙之处在于它允许您配置服务属性,例如传输 (http/pipes/tcp/Tibco EMS)、安全模型(任何 W3C 标准)、压缩、编码、超时等,而无需更改任何代码.那是强大的。最重要的是,您可以对其进行配置,以便您可以使用 C# 提供服务和使用 Java(或任何其他语言或其他方式)提供客户端,只要它们都使用相同的机制进行通信。

您可以使用 WCF 创建一个标准的 HTTP SOAP Web 服务,并且有一天决定将其切换为使用更快的命名管道进行本地通信。您可以创建通过 TibcoEMS 进行通信的 Web 服务,并在队列级别轻松进行故障转移。您可以创建一个文件流式 Web 服务,将各种图像/视频分发到您的应用程序。

【讨论】:

嘿,谢谢你的解释,它正在澄清事情。【参考方案2】:

这里有一些我认为可能有助于理解整个场景的大脑转储。

创建 WCF 的原因:背景

现代应用[分布式应用]开发我们使用不同的架构和技术进行通信

即:

COM+ .NET 企业服务 MSMQ .NET 远程处理 网络服务

因为有各种技术。他们都有不同的架构。所以学习所有这些都是棘手和乏味的。

需要专注于每一种技术的开发而不是应用的业务逻辑

因此,微软将这些功能统一为单一的、通用的、通用的面向服务的通信编程模型。 WCF 提供了一种使用通用 API 的通用方法,开发人员可以专注于他们的应用程序而不是通信协议。

现在我们称之为 WCF。

注意:图片收集自 - http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics


WCF 服务究竟代表什么?

WCF 允许您异步消息将一个服务端点转换为另一个。

消息可以很简单

单个字符 一句话

以 XML 格式发送

作为二进制数据流的复杂数据结构

Windows Communication Foundation(WCF) 支持多种语言和平台。

WCF 为您的服务提供运行时环境,使您能够将 CLR 类型公开为服务并将其他服务作为 CLR 类型使用。


一些示例场景包括: 用于处理业务交易的安全服务。 一种向他人提供当前数据的服务,例如交通报告或其他监控服务。 一种聊天服务,允许两个人实时交流或交换数据。 一种仪表板应用程序,用于轮询一个或多个服务以获取数据并将其以逻辑表示形式呈现。 公开使用 Windows Workflow Foundation 作为 WCF 服务实现的工作流。 用于轮询服务以获取最新数据馈送的 Silverlight 应用程序。

为什么我们应该使用 WCF?

来自代码项目文章,感谢@Mehta Priya 我找到了以下场景来说明这个概念。让我们考虑两个场景:

第一个客户端正在使用 java 应用程序与我们的服务进行交互。因此,为了实现互操作性,该客户端希望消息采用 XML 格式,协议为 HTTP。 第二个客户端使用 .NET,目前性能要好得多,此客户端希望消息采用二进制格式,协议为 TCP。

没有 WCF 服务

现在,如果我们不使用 WCF 会发生什么情况,让我们看看下面的图片:

场景 1:

场景 2:

这是两种不同的技术,具有完全不同的编程模型。所以开发者必须学习不同的技术

以便将所有技术统一并集中在一个屋檐下。 Microsoft 提供了一种称为 WCF 的新编程模型。

WCF 如何让事情变得简单?

一个人实施一项服务,他/她可以根据需要配置尽可能多的端点来支持所有客户端需求。

支持以上2个客户需求 - 我们将配置 2 个端点 - 我们可以在配置的终点指定我们想要使用的协议和消息格式

参考资料:

    WCF:什么、为什么和什么时候https://vishalnayan.wordpress.com/2010/12/31/wcf-what-why-when/ 为什么我们使用 WCF 服务? http://www.codeproject.com/Tips/815742/Why-We-Use-WCF-Service-and-Sample-of-WCF-Service 什么是 Windows Communication Foundation https://msdn.microsoft.com/en-us/library/ms731082(v=vs.110).aspx Windows Communication Foundation 基础http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics

【讨论】:

【参考方案3】:

到目前为止,没有什么可以添加到回复中,尤其是来自“siz”的回复。

要补充一点的是,WCF 是当前在 .NET 平台上执行 Web 服务的方式。这不是“新”方式,而是当前方式。 ASMX Web 服务是陈旧且几乎没有维护的方式。一位 Microsoft 员工公开表示,只会对 ASMX 平台进行关键的安全修复,因此如果您打算让您的服务在一年多后仍然有用,请不要使用 ASMX。

除了典型的“Web 服务”用例之外,WCF 还处理非典型情况,例如通过命名管道、消息队列等进行的二进制通信。在很大程度上,您编写的服务支持简单的东西,例如基于 SSL 的 SOAP也可以支持这些其他协议,无需更改代码。

【讨论】:

【参考方案4】:

为了回答“现实世界”的问题,我刚刚完成了一个调度系统,Visual Basic 6.0/access 警报接收器、一个 WPF/SQL ERP 系统和一个 iPhone 应用程序都通过该调度系统共享信息以安排和执行作业.

【讨论】:

【参考方案5】:

本质上,用例是您希望两个单独的应用程序以某种方式相互通信并且它们的位置未知(可能是同一台机器(但不同 application domain)、同一网络或互联网的另一端)

您可以轻松地将其嵌入到Windows Forms 应用程序中。这是一个很好的发现。也比.NET Remoting 简单多了。

【讨论】:

【参考方案6】:

它优于经典 ASP.NET Web 服务 (.asmx) 的原因有很多。

我想到的其中几个是:

    对于同一个服务调用具有多个绑定的能力意味着,如果您只是想在网络场内进行通信,则消息不必序列化为 XML 并返回。

    当涉及到同一合同的多个版本时,合同的定义方式要宽容得多。

【讨论】:

以上是关于为啥 WCF 如此重要,在啥情况下使用它?的主要内容,如果未能解决你的问题,请参考以下文章

一个班级可以有两个公共部分吗?如果是,那为啥?我们在啥情况下这样做?

为啥要用invoke方法换句话说就是在啥情况下使用invoke方法?

为啥在原理图绘制过程中要使用网络标号和总线?在啥情况下适合采用部线连接?

在啥情况下可以使用指针混合?

在啥情况下 alloca() 有用?

为啥在某些情况下会加密 WCF SoapFault 响应?