两种常见的分布式应用架构风格包括:DO(分布式对象)、RPC(远程过程调用)。这两种架构风格在企业应用中得到了广泛的应
用,然而,Web架构的设计者们却有意避免采用这两种架构风格。主要的原因是运行Web应用的互联网环境,与运行企业应用的企业内网环境有很大的差别。
那么,互联网环境有哪些独有的特点呢?
1. 可伸缩性要求难以预测和无法控制:一个Web应用的并发访问量,是开发者难以预测和无法控制的。
2. 安全性要求难以预测和无法控制:一个Web应用所接受的请求格式,是开发者难以预测和无法控制的,有可能出现大量恶意构造的请求格式。
3. 松耦合至关重要:因为存在着大量异构的系统,必须要追求最大限度的松耦合。
4. 简单性至关重要:不可引入复杂的编程模型,必须降低开发者开发Web应用的门槛。

软件应用所处的运行环境会对其架构设计产生巨大影响。设计软件应用的架构,一定要深入考虑软件所处的运行环境。脱离开软件所处的运行环境,比较不同架构
之间的优劣是没有意义的。

REST这种架构风格,正是为面向互联网的Web应用量身定制的。它由一组架构约束组成:
1. 客户-服务器
2. 无状态
3. 缓存
4. 统一接口
5. 分层系统
6. 按需代码(可选)

上述内容来自《REST实战》译者序。.NET上的分布式应用架构风格从WCF开始统一了Remoting,SOAP,以及对REST的支持。现在我们来看下最新的.NET平台上都有哪些REST框架和工具库:

  1. WCF WebHttp Services in .NET 4 :WCF 3.5开始支持REST,实现方式上还是RPC 方式,Windows Communication Foundation (WCF)Web HTTP 编程模型可以向非 SOAP 终结点公开 WCF 服务操作。文档地址 http://msdn.microsoft.com/zh-cn/library/bb412169.aspx

  2. ASP.NET Web Api:这是完全按照HTTP模型实现的REST,目前还处于预览版,ASP.NET Web API允许开发人员通过HTTP开放他们的应用程序、数据和服务。这允许开发人员可以充分利用HTTP作为应用程序的协议,应用程序可以和丰富的客户端进行交互,不仅仅是浏览器、移动设备、桌面应用还是其他的后端服务。

  3. Open Rasta:OpenRasta是一个基于MIT协议开源的支持.NET 2.0以上的Rest开发框架,重点围绕这资源和HTTP方法开发的REST框架。文档地址:https://github.com/openrasta/openrasta-stable/wiki

  4. Service Stack :是一个高性能的开源 .NET/Mono  REST服务框架 地址:http://www.servicestack.net/

  5. RestSharp :这只是一个支持WindowsPhone,Mono for Android, MonoTouch跨平台的Rest 客户端开发库。地址:http://restsharp.org/

  6. Hammock是个免费开源的框架,托管在github上 对网络操作进行了很好的封装,包含OAuth。地址:https://github.com/danielcrenna/hammock

转载于:https://www.cnblogs.com/shanyou/archive/2012/01/15/2323049.html

.NET 4 上的REST 框架相关推荐

  1. openshift_云上的播放框架变得简单:Openshift模块

    openshift 仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说考虑自动缩放,单命令部署,持续集成等问题了 ...

  2. 云上的播放框架变得简单:Openshift模块

    仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说甚至考虑自动缩放,单命令部署,持续集成等事情,这都是科幻小说. ...

  3. 在Windows平台上安装Dubbox框架

    在Windows平台上安装Dubbox框架 一.分布式系统概述 分布式处理方式越来越受到业界的青睐--计算机系统正在经历一场前所未有的从集中式向分布式架构的变革.分布式系统是一个硬件或软件组件分布在不 ...

  4. 如何在Genymotion虚拟设备上安装Google框架(Play,Accounts等)? [重复]

    本文翻译自:How do you install Google frameworks (Play, Accounts, etc.) on a Genymotion virtual device? [d ...

  5. 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题...

    http://blog.csdn.net/lovexieyuan520/article/details/9814273 使用github上的开源框架SlidingMenu环境的搭建,以及getSupp ...

  6. 奔跑吧Caffe(在MNIST手写体数字集上用Caffe框架训练LeNet模型)

    数据集背景: MNIST 是一个大型的手写体数字数据库,广泛应用于机器学习领域的训练和测试,由纽约大学Yann LeCun教授整理. MNIST包括60000个训练集和10000测试集,图片固定尺寸为 ...

  7. 手把手教你在应用里用上iOS机器学习框架Core ML

    2017-06-10 Cocoa开发者社区 2017年的WWDC上,苹果发布了Core ML这个机器学习框架.现在,开发者可以轻松的使用Core ML把机器学习功能集成到自己的应用里,让应用变得更加智 ...

  8. 【MyBatis学习01】宏观上把握MyBatis框架

    今天开始学习mybatis框架,博客主要记录学习过程中的一些总结,如有错误之处,欢迎留言指正~先用mybatis的鸟鸟来镇个楼,咳咳~~ mybatis框架是一个持久层框架,是Apache下的顶级项目 ...

  9. 大文件分片上传前端框架_js实现大文件分片上传的方法

    文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...

最新文章

  1. oracle sql判断相等,获取多行相等的人员(Oracle SQL)
  2. C++ 三五法则,看看你能不能理解
  3. sqlite 数据类型 全面
  4. raft算法动画演示
  5. 电脑端腾讯视频如何设置离线下载完成后自动关机
  6. T1042/T2080芯片工控主板对比
  7. 35岁前成功黄金法则
  8. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...
  9. 深入理解SpringBoot的过滤条件--AutoConfigure
  10. 人人都能懂的Vue源码系列—08—initLifecycle
  11. 如何成为合格的企业邮箱管理员
  12. win10中 有道词典不能联网/发音解决方法
  13. win7局域网共享教程
  14. 预约小程序开发:小程序开发的费用都包含了哪些?
  15. Android 自定义字体
  16. 有借必有贷,借贷必相等
  17. 解决 Missing GL version
  18. lsof u mysql wc l_MySQL:为什么lsof会看到这么多临时文件
  19. 交换机、路由器、网关的概念,并知道各自的用途
  20. Docker 入门看这一篇就够了,万字详解!

热门文章

  1. 网站提示java已被阻止_Win7系统下打开网页提示应用程序已被JAVA安全阻止
  2. 重庆理工大学计算机考研就业,重庆理工大学专业硕士含金量高吗?好就业吗?
  3. MyBatis的useGenerateKeys的使用方法
  4. 025_JDK的hashCode方法
  5. 注册界面php mysql_php:用户登录注册并存入数据库的简单网页示例
  6. linux nginx ssl 文件路径,linux – 如何将SSL证书从Apache服务器传输到NGINX服务器
  7. 正则表达式中匹配的特殊字符
  8. console 立即输出 调试_Javascript调试利器console的使用
  9. android 原始定位,安卓原生定位
  10. Docker容器网络管理