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

sim*_*yme 40 wcf

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

Szy*_*zga 59

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

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


ala*_*min 12

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

创建WCF的原因:背景

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

即:

  • COM +
  • .NET企业服务
  • MSMQ
  • .NET Remoting
  • 网页服务

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

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

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

现在我们称之为WCF.

WCF背景

NB:图像采集自 - 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 App与我们的服务进行交互.因此,对于互操作性,此客户端希望XML格式的消息和协议是HTTP.
  • 第二个客户端使用.NET到目前为止更好的性能,这个客户端想要二进制格式的消息,协议是TCP.

没有WCF服务

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

  • 场景1:

没有WCF的互操作性

  • 场景2:

没有WCF的互操作性

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

所以统一并将所有技术集中在一个屋檐下.微软已经推出了一种名为WCF的新编程模型.

WCF如何让事情变得简单?

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

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

没有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


Joh*_*ers 9

到目前为止,回复几乎没有,特别是来自"siz"的回复.

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

除了典型的"Web服务"用例之外,WCF还处理非典型情况,例如命名管道上的二进制通信,消息队列等.在很大程度上,您编写的服务支持像SOAP over SSL这样简单的服务也可以支持这些其他协议,没有对代码进行任何更改.


Ste*_*Cav 6

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


Qui*_*ome 5

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

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