首页 文章

WCF和ASMX Web服务之间有什么区别?

提问于
浏览
359

我在WCF和ASMX Web服务之间完全混淆 . 我在早期阶段使用过很多Web服务,现在引入了一个名为WCF的新东西 . 我仍然可以创建作为Web服务的WCF . 我认为WCF会有更多东西 .

WCF和Web服务之间有什么区别?什么时候应该使用?

5 回答

  • 376

    关于基于WCF的asmx Web服务的简单性,正在进行大量讨论 . 我在这里澄清几点 .

    • 新手Web服务开发人员可以在asmx Web服务中轻松入门 . Visual Studio为它们完成所有工作,并轻松创建Hello World项目 .

    • 但是如果你可以学习WCF(当然不会花费太多时间)那么你可以看到WCF也很简单,你可以轻松地继续 .

    • 重要的是要记住,WCF中的这些复杂性实际上归因于它带来的美丽特征 . 配置文件中提到了寻址,绑定, Contract 和 endpoints ,服务和客户端 . 美丽是您的业务逻辑被隔离和安全维护 . 明天如果您需要将绑定从 basicHttpBinding 更改为 netTcpBinding ,您可以轻松地在配置文件中创建绑定并使用它 . 因此,所有与客户端,通信通道,绑定等相关的更改都将在配置中完成,从而使业务逻辑安全且完整,这使得真正有意义 .

    • WCF "web services"是通过WCF启用的更广泛的远程通信范围的一部分 . 与传统的ASMX相比,您将在WCF中获得更高程度的灵活性和可移植性,因为WCF从一开始就是为了总结Microsoft提供的所有不同的分布式编程基础架构而设计的 . WCF中的 endpoints 可以像通过TCP /二进制文件一样轻松地通过SOAP / XML进行通信,并且更改此介质只是一个配置文件mod . 从理论上讲,这可以减少移植或更改业务需求,目标等所需的新代码量 .

    • Web服务只能通过HTTP访问,它可以在无状态环境中工作,WCF非常灵活,因为它的服务可以托管在不同类型的应用程序中 . 您可以在控制台,Windows服务,IIS和WAS中托管WCF服务,这也是在Visual Studio中创建新项目的不同方式 .

    • ASMX比WCF旧,ASMX可以执行的任何操作都可以是WCF(以及更多) . 基本上你可以看到WCF试图将所有不同的方式组合在一起,让两个应用程序在微软世界中进行通信; ASMX只是众多方式中的一种,因此现在归入WCF的功能范围 .

    • 您总是希望使用Visual Studio for .NET 4.0或4.5,因为它可以在创建WCF服务时轻松生活 .

    • 主要区别在于Web Services使用XmlSerializer . 但是WCF使用DataContractSerializer,与XmlSerializer相比,它在性能上更好 . 这就是为什么WCF比其他通信技术(如asmx,.NET远程处理等)更好地运行的原因 .

    不要忘记我是那些比WCF更喜欢asmx服务的人之一,但那次我并不了解WCF服务及其功能 . 我害怕WCF配置 . 但是我敢于尝试自己写几个WCF服务,当我学到更多WCF时,现在我对WCF没有任何限制,我向所有人推荐它们 . 快乐的编码!

  • 22

    ASMX Web服务只能由HTTP(带有.asmx的传统Web服务)调用 . 虽然WCF服务或WCF组件可以由任何协议(如http,tcp等)和任何传输类型调用 .

    其次,ASMX Web服务不灵活 . 但是,WCF服务非常灵活 . 如果你制作了新版本的服务,那么你需要公开一个新的结束 . 因此,服务是敏捷的,这是一种非常实用的方法,可以查看当前的业务趋势 .

    我们将WCF开发为 Contract ,接口,操作和数据 Contract . 作为开发人员,我们更专注于业务逻辑服务,无需担心通道堆栈 . WCF是用于任何类型服务的统一编程API,因此我们创建服务并使用配置信息来 Build HTTP / TCP / MSMQ等通信机制

  • 4

    这是一个非常古老的问题,但我并不认为ASMX的好处已被相当描述 . 虽然不是非常灵活,但ASMX Web服务使用和理解起来非常简单 . 虽然WCF更灵活,但站起来和配置也更复杂 .

    ASMX Web服务随时可以站起来,并在添加文件后立即添加为Web服务引用 . (假设你的项目 Build )

    对于 create webservice - > run webservice - > add webservice reference 的简单开发工作流程,ASMX Web服务几乎没有出错,不是很多你可能错误配置,这就是它的力量 .

    为了回应那些断言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>
    
  • 37

    WCF完全取代ASMX Web服务 . ASMX是执行Web服务的旧方法,WCF是当前的Web服务方式 . 客户端或服务器上的所有新SOAP Web服务开发都应使用WCF完成 .

  • 11

    Keith Elder在这里很好地比较ASMX to WCF . 看看这个 .

    ASMX和WCF的另一个比较可能是found here - 我不是100%同意那里的所有观点,但它可能会给你一个想法 .

    WCF基本上是"ASMX on stereoids" - 它可以是所有ASMX都可以 - 加上 a lot more! .

    ASMX是:

    • 简单易用,可编写和配置

    • 仅在IIS中可用

    • 只能从HTTP调用

    WCF可以是:

    • 托管在IIS,Windows服务,Winforms应用程序,控制台应用程序 - 您有完全的自由

    • 与HTTP(REST和SOAP),TCP / IP,MSMQ和更多协议一起使用

    简而言之:WCF完全取代ASMX .

    看看WCF Developer Center on MSDN .

    Update: 链接似乎已经死了 - 试试这个:What Is Windows Communication Foundation?

相关问题