2009-08-11 46 views
1

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

+0

我不确定这会非常有用。考虑一下你可以用WCF做的几乎所有事情都是你无法用ASMX web服务完成的。 – 2009-08-11 03:37:26

回答

1

那么,Web服务站在他们的立场上有什么明显的问题。

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

那么微软用一个名为Web Service Extensions 2.0和3.0的中间版本解决了这些问题。这些问题一举解决。但是,这些是附加组件。我有经验 与它合作,并肯定需要一些手工制作的代码。它们被添加以符合W3C机构颁布的WS- *标准。

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

当比较WSE 3.0和WCF时,您会看到所有功能都更容易实现。如果我比较它上面的列表:

  • 加密可以在消息级别(加密“数据”部分),或在传输层(在导线加密的话),通过简单地添加类似于“messageAlgorithm = Basic128“添加到App.config。
  • 您可以无缝地使用正在运行的应用程序的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还是提供了在配置文件中指定它的选项 - 例如URIs,加密机制以及用于灵活性的传输机制。另一个SOA标准是能够灵活执行。

这真是一个快速概览。我希望这可以帮助你蘸点脚趾,而不是太具体。

+0

很好的答案,但它是一个与问题不同的问题的答案。他没有问WCF有什么好处 - 他要求WCF的良好用法,这是ASMX服务无法做到的。 – 2009-08-11 22:57:57

1

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

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