我在WCF和ASMX Web服务之间完全混淆。我在早期阶段使用了很多Web服务,现在引入了一个名为WCF的新东西。我仍然可以创建作为Web服务的WCF。我认为WCF会有更多东西。
WCF和Web服务之间有什么区别?应该何时使用每一个?
答案 0 :(得分:385)
基思·埃尔德在这里很好地比较了ASMX to WCF。看看吧。
ASMX和WCF的另一个比较可能是found here - 我不是100%同意那里的所有观点,但它可能会给你一个想法。
WCF基本上是“ASMX on stereoids” - 它可以是ASMX所能做到的 - 加上更多!。
ASMX是:
WCF可以是:
简而言之:WCF将完全取代ASMX。
查看WCF Developer Center on MSDN。
更新:链接似乎已经死了 - 试试这个:What Is Windows Communication Foundation?
答案 1 :(得分:37)
ASMX Web服务只能由HTTP(带有.asmx的传统Web服务)调用。虽然任何协议(如http,tcp等)和任何传输类型都可以调用WCF服务或WCF组件。
其次,ASMX Web服务不灵活。但是,WCF服务非常灵活。如果您制作新版本的服务,则需要公开新的结束。因此,服务是敏捷的,这是一种非常实用的方法,可以查看当前的业务趋势。
我们将WCF作为合同,接口,运营和数据合同进行开发。作为开发人员,我们更专注于业务逻辑服务,而不必担心通道堆栈。 WCF是用于任何类型服务的统一编程API,因此我们创建服务并使用配置信息来建立HTTP / TCP / MSMQ等通信机制
答案 2 :(得分:23)
这是一个非常古老的问题,但我并不认为ASMX的好处已经得到了相当的描述。虽然不是非常灵活,但ASMX Web服务使用和理解起来非常简单。虽然WCF更灵活,但站起来和配置也更复杂。
ASMX Web服务随时可以站起来,并在添加文件后立即添加为Web服务引用。 (假设你的项目建立)
对于简单的开发工作流程
create webservice
- > run webservice
- > add webservice reference
,一个ASMX网络服务几乎没有什么可以出错,没有多少你可能会错误配置,这就是它的优势。
为了回应那些断言WCF取代ASMX的人,我会回复说WCF需要添加一个简化的K.I.S.S.配置模式,以完全取代ASMX。
ASMX Web服务的示例web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings />
<system.web>
<compilation targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
答案 3 :(得分:11)
WCF完全取代ASMX Web服务。 ASMX是执行Web服务的旧方法,WCF是当前的Web服务方式。客户端或服务器上的所有新SOAP Web服务开发都应使用WCF完成。
答案 4 :(得分:5)
关于通过WCF实现asmx Web服务的简单性,已经进行了很多讨论。我在这里澄清几点。
不要忘记我是那些比WCF更喜欢asmx服务的人之一,但那时我并不了解WCF服务及其功能。我害怕WCF配置。但我敢于尝试自己编写一些WCF服务,当我学到更多WCF时,现在我对WCF没有任何限制,我向任何人推荐它们。大家。 快乐的编码!!!