你对WCF最有趣的用途是什么?

时间:2009-08-11 00:47:13

标签: .net wcf

WCF提供了ASP.NET Web服务中不存在的丰富特性和功能。我想知道那些在生产环境中使用该技术的实际经验的人是否可以分享他们现在可用的有趣用法的经验,因为新的功能。我认为这将是一个有用的来源“哦,你可以做什么?”对于那些从ASP.NET Web Services进入它的人。

2 个答案:

答案 0 :(得分:1)

这是一个相当广泛的问题。 WCF做的远远超过asp web服务。

我使用WCF构建代理ADO.Net数据提供程序,该提供程序通过WCF服务路由所有操作。这使您可以使用可在服务器上访问的数据库,但不能使用客户端计算机。

答案 1 :(得分:1)

那么,Web服务的主要问题是什么呢?

  • 没有内置加密机制:你 必须自己加密,或使用 HTTPS。
  • 无法对用户进行身份验证: 您可以传递用户名/密码 当然,但如果你想做什么 Windows身份验证?关于什么 X509证书?
  • 无法选择 传输机制:HTTP是一个 相对冗长的协议。它是一个 基于TCP / IP的基于文本的协议。
  • 重定向:如果你有防火墙, 你需要重定向消息 加密时,你不能。这是 除非防火墙未加密, 看到目的地并转发 消息。
  • 压缩:压缩 必须在之前进行 消息通过电汇发送。

微软通过一个名为Web Service Extensions版本2.0和3.0的中间版本解决了这些问题。这些问题一下子解决了这些问题。但是,这些是一个附加组件。我有经验 使用它,肯定需要一些手工制作代码。添加它们是为了符合W3C Organsisations制定的WS- *标准。

如果您想使用WSE的其他功能,则必须最终重新编译代码。客户端上的代理必须从新的基类继承。您必须添加其他配置信息。您可以基本的4/5步骤来更新您的客户端。但是,这不是最方便的。

比较WSE 3.0和WCF时,您会发现所有功能都更容易实现。如果我将它与上面的列表进行比较:

  • 加密可以是消息级别(加密“数据”部分),也可以是传输级别(通过线路加密),只需在App.config中添加类似“messageAlgorithm = Basic128”的内容即可。
  • 您可以无缝地使用正在运行的应用程序的Windows身份验证,并且还需要在调用之前使用特定证书安装在客户端计算机上。
  • 可根据需要更改运输机制。我们有HTTP,HTTPS,TCP,命名管道(用于进程间调用)和MSMQ。请注意,如果您愿意,可以添加这些内容,只需实现新的基类并覆盖所需的方法即可。 企业内部网络上的TCP远比HTTP快得多,而且如果你真的很偏执,你也可以实施加密。
  • 重定向是在WSE 3.0中实现的,我肯定会进一步扩展它。使用重定向很重要,因为许多组织只有少量机器暴露在互联网上,并在内部基于IP地址进行过滤。但是,还有一种称为UDDI的东西,它允许多台机器注册为具有服务。所以你不一定要打到你想要的同一台机器。
  • 压缩是按照WS- *标准实现的,并且在WSE 3.0中实现。有一个压缩标准被定义为将文档“附加”到XML消息。

除了这些功能外,WCF还更公开地实现了4个SOA“规则”。 SOA是一个很大的主题,可以在互联网上搜索。已经写完了整本书 在SOA上,但只是接受WCF是SOA架构的实现。

其中一条SOA指南要求您提供“合同”(模式),而不是对象/类,因为对象/类可能表示与OO语言的搭配。模式在XML中指定为与语言无关。

WCF还通过“合同”定义服务。基本原则是您定义合同,即可以先执行的操作。在.NET中,这是作为一个接口实现的,用某些属性装饰。

然后,当.NET开发人员将接口实现为具体类(用其他一些属性修饰)并对方法进行编码以实现其功能。这意味着“契约”是从界面中提取的,我们的类只提供它的实现。这样.NET就提供了自己的方式 实施标准。

尽管您可以对所有这些进行编码,但WCF允许您在配置文件中指定它 - 例如URI,加密机制,灵活性的传输机制。另一个SOA标准是能够灵活地实现您的实现。

真的是一个快速概述。我希望它有助于你的脚趾浸泡而不是太具体。