为什么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。
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:
- 情景2:
这是两种不同的技术,具有完全不同的编程模型。 所以开发者必须学习不同的技术
所以把所有的技术统一起来。 微软已经提出了一个名为WCF的新的编程模型。
WCF如何让事情变得简单?
一个实现一个服务,他/她可以根据需要configuration尽可能多的端点以支持所有的客户端需求。
为了支持上述2个客户端要求,我们要configuration2个端点,我们可以在configuration的终点指定我们要使用的协议和消息格式
参考文献:
- 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/zh-cn/library/ms731082(v=vs.110).aspx
- Windows通信基础基础http://www.codeproject.com/Articles/255114/Windows-Communication-Foundation-Basics
为了回答“现实世界”,我刚刚完成了一个调度系统,通过这个调度系统, Visual Basic 6.0 /访问警报接收器,WPF / SQL ERP系统和iPhone应用程序共享信息来安排和执行作业。
为什么它比传统的ASP.NET Web服务(.asmx)更有优势?
我的头顶上有几个是:
-
对于同一个服务调用,具有多个绑定的能力意味着消息不必串行化成XML,而只需要简单地在Web场内进行通信即可。
-
合同的定义方式在同一合同的多个版本中更为宽容。
从本质上来说,用例就是你希望两个单独的应用程序以某种方式彼此对话,并且它们的位置是未知的(可以是同一台机器(但不同的应用程序域 ),相同的networking或互联网的另一侧)
您可以轻松地将其embedded到Windows窗体应用程序中。 这是一个很好的发现。 它比.NET Remoting要容易得多。