刚学的时候,被微软.net的wcf和web api给弄糊涂了,查询了不少资料,大概搞清楚了它们的区别。
wcf出现的时间比较早,用来统一之前的各种通信技术,也就是所谓的分布式架构。主要是为了实现传统的c/s架构。
后来还出现了wcf rest 进化版本,也能做b/s架构
wcf的优点:
支持各种协议,包括不限于http,tcp,udp,命名管道,消息队列,自定义协议等等,支持各种服务器端和客户端,既可以用控制台,也可以寄宿在wpf,浏览器之上。
缺点也很明显,wcf功能太多,太强了,造成使用上和配置上比较麻烦,光详解wcf,就能出一本1000页的砖头书。
实际工作中,人们用不到这么强大的东西,所有有了一个简化的需求。
在2012年的时候,微软.net 框架推出了web api技术,它能完成90%的wcf功能,使用和理解起来简单得多。
因为简单,所以web api只支持http协议。
web api的名字也容易让人误解,以为它是专门为web开发用的,其实不是,web api 设计出来就是替代wcf,做服务器、客户端通信。
同样,web api的客户端既可以用控制台,也可以寄宿在wpf,浏览器之上,实现传统的c/s架构或者b/s架构。
还要把web api与asp.net mvc区别开,前者强调的是通信服务(只关注数据)、后者是专用网站开发的(关心数据也关心页面展示),只能做b/s架构,当然它们之间有共同点,网站开发也是建立在通信服务之上的,否则无法访问网站。
整个web api内部也可以分成mvc模式: