为什么WCF如此重要以及在什么情况下使用它?

时间:2009-03-04 15:52:10

标签: wcf

我在某种程度上理解它可以帮助应用程序进行通信而不管它们的位置如何。为什么它很重要,什么是实际使用WCF的例子?

6 个答案:

答案 0 :(得分:59)

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

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

答案 1 :(得分:11)

以下是我认为可能有助于理解整个情景的一些脑转储。

创建WCF的原因:背景

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

即:

  • COM +
  • .NET Enterprise Services
  • MSMQ
  • .NET Remoting
  • 网络服务

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

需要关注每种技术的开发而不是应用程序业务逻辑

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

现在我们称之为WCF。

WCF Background

N.B:从 - http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics收集的图像


什么是WCF服务代表什么?

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

消息可以简单为

  • 单个角色
  • 一句话

以XML格式发送

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

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

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

<小时/> 一些示例场景包括:

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

为什么在地球上我们应该使用WCF?

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

  • 第一个客户使用 java 应用与我们的服务进行互动。因此,对于互操作性,此客户端需要 XML格式的消息和协议为HTTP。
  • 第二个客户端使用.NET到目前为止更好的性能,客户希望二进制格式的消息和协议是TCP。

没有WCF服务

现在对于所述情况,如果我们不使用 WCF 那么会发生什么让我们看到以下图片:

  • 场景1:

interoperability without WCF

  • 场景2:

interoperability without WCF

这是两种不同的技术,并且具有完全不同的编程模型。因此开发人员必须学习不同的技术

所以要统一&amp;将所有技术集中在一起。微软已经推出了一种名为WCF的新编程模型。

WCF如何让事情变得简单?

实现服务,他/她可以配置支持所有客户需求所需的端点。

支持上述2个客户要求 - 我们将配置2个端点 - 我们可以指定我们要在配置的终点

中使用的协议和消息格式

interoperability without WCF

参考文献:

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

答案 2 :(得分:9)

到目前为止,回复几乎没有,特别是来自“siz”的回复。

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

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

答案 3 :(得分:4)

为了回答“真实世界”这一点,我刚刚完成了一个调度系统,Visual Basic 6.0 /访问警报接收器,WPF / SQL ERP系统和iPhone应用程序共享信息以便安排和执行工作。

答案 4 :(得分:3)

与传统的ASP.NET Web服务(.asmx)相比,它有多种原因。

我的头脑中有几个是:

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

  2. 当涉及到同一合同的多个版本时,合同的定义方式更为宽容。

答案 5 :(得分:3)

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

您可以轻松地将其嵌入Windows Forms应用程序中。这是一个很好的发现。它比.NET Remoting容易得多。