为什么WCF这么重要,在什么情况下使用?

我在某种程度上理解它可以帮助应用程序沟通,而不pipe它们的位置。 为什么它很重要,现实世界中使用WCF的例子是什么?

WCF是一种通用的通信机制,允许您在双方之间build立通用的客户端/主机通信。 关于WCF的简洁之处在于,它允许您在不更改任何代码的情况下configuration服务属性,如传输(http / pipes / tcp / Tibco EMS),安全模型(任何W3C标准),压缩,编码,超时等。 这是强大的。 最重要的是,您可以对其进行configuration,以便您可以使用C#和Java中的客户端(或任何其他语言或其他方式)进行服务,只要它们使用相同的机制即可。

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

到目前为止,还没有什么补充,特别是“siz”。

有一点要补充的是,WCF是目前在.NET平台上进行Web服务的方式。 这不是“新”的方式,这是目前的方式。 ASMXnetworking服务是旧的,几乎没有维护的方式。 一名微软员工已经公开表示,只有重要的安全补丁才会被提交给ASMX平台,所以如果你打算在一年多的时间内使用你的服务,请不要使用ASMX。

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

这里有一些脑转储,我认为可能有助于了解整个情况。

创buildWCF的原因:背景

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

即:

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

由于有各种技术。 他们都有不同的体系结构。 所以学习它们都是棘手而乏味的。

一个需要关注每种技术而不是应用业务逻辑

所以微软将这些function统一到单一的,通用的面向通信的通用面向服务的编程模型中。 WCF提供了一个通用的方法,使用一个通用的API,开发人员可以把重点放在他们的应用程序上,

现在我们称之为WCF。

WCF背景

NB:图像收集 – http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics


什么是正确的WCF服务的立场?

WCF可让您将asynchronous消息转换为另一个服务端点。

消息可以是简单的

  • 单个字符
  • 一个字

以XML格式发送

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

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

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


一些示例场景包括:

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

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

从一个代码项目文章,由于@梅塔普里亚我find了下面的scheme来说明这个概念。 让我们考虑两个情景:

  • 第一个客户端使用Java应用程序与我们的服务进行交互。 所以对于互操作性来说,这个客户端需要XML格式的消息和HTTP协议。
  • 第二个客户端使用.NET迄今为止更好的性能,这个客户想要的消息在二进制格式和协议是TCP。

没有WCF服务

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

  • 情况1:

没有WCF的互操作性

  • 情景2:

没有WCF的互操作性

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

所以把所有的技术统一起来。 微软已经提出了一个名为WCF的新的编程模型。

WCF如何让事情变得简单?

一个实现一个服务,他/她可以根据需要configuration尽可能多的端点以支持所有的客户端需求。

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

没有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/zh-cn/library/ms731082(v=vs.110).aspx
  4. Windows通信基础基础http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics

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

为什么它比传统的ASP.NET Web服务(.asmx)更有优势?

我的头顶上有几个是:

  1. 对于同一个服务调用,具有多个绑定的能力意味着消息不必串行化成XML,而只需要简单地在Web场内进行通信即可。

  2. 合同的定义方式在同一合同的多个版本中更为宽容。

从本质上来说,用例就是你希望两个单独的应用程序以某种方式彼此对话,并且它们的位置是未知的(可以是同一台机器(但不同的应用程序域 ),相同的networking或互联网的另一侧)

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