RIA+REST架构实现完美WEB开发
记得第一次看到REST的身影,是在InfoQ上的一篇介绍,随后又翻阅了后面的参考文章和Developerwork上一些资料,甚至随手翻了翻Roy博士的论文。所幸,在不少人还在体会REST到底是何方神圣的时候,我拿到并安装了最新版的ArcGIS Server 9.3,里面新增了一种新的GIS服务:ArcGIS Server REST服务。有了这样的一个落地的基于REST的服务,所有对REST基础概念的疑惑都迎刃而解:为所有“事务”定义ID;将所有“事务”链接在一起;使用标准方法;资源多重表述;无状态通信。所以,学习开发或开发理念,看文字没有看图片快,看图片没有动手操作快,动手操作没有导师亲自指导快,对于REST的学习,我对生涩的文字概念的理解时间被压缩到了最小。
ArcGIS Server REST服务的组织结构:

今天看到一则新闻,纽约时报通过Times Developer Network构建了一个基于REST的API,请求API之后将得到XML和JSON格式的返回数据,这些API包括:
Article Search API:能够搜索从1981年到现在纽约时报上的文章,可以获取标题、摘要及相关多媒体的链接
Best Sellers API:能够获取纽约时报所有的最佳业绩数据,包括特定销售商的等级历史
Campaign Finance API:根据美国联邦选举委员会的备案获取总统选举的捐助及花费数据
Community API:获取NYTimes.com用户发表的评论
Congress API:获取美国议会投票数据,包括具体议院和参议院议员的信息
Movie Reviews API:获取到评论和纽约时报评论家的链接以及根据关键字搜索电影评论
New York State Legislature API:获取纽约州参议院及大会的议员和委员会信息
Real Estate API:获取纽约市房地产及销售情况的聚合数据
Times Newswire API:获取最新时报文章的链接和元数据
TimesPeople API:获取时报读者的信息及活动数据
TimesTags API:获取与查询信息匹配的标准化术语,同时由时报字典进行过滤
微软同时发布了纽约时报Silverlight工具集,这和ArcGIS各种客户端API设计方法是类似的,过去大家包括我曾抱怨ArcGIS技术总是落后IT技术发展,如COM问题,这次,至少是在第一时间(2008年上半年)提供了RIA+REST完整的技术体系,目前在ArcGIS Server REST服务基础上可以使用的客户端技术有Javascript、Flex、Silverlight,大家可以到官方网站上了解:http://resources.esri.com/arcgisserver/index.cfm?fa=applications
下面以treenode在javaeye上总结的RIA+REST架构的优点,分析ArcGIS Server中的RIA+REST。
1.将表现层与后台彻底分离
从N年前讨论MVC开始就在讨论解耦、松耦合的设计方法,ArcGIS Server REST将GIS基础和核心功能全部进行了封装,并以服务的方式提供给客户端,如常见的地图展示、图层信息访问、空间几何查询、高级分析功能(网络分析、地理统计、空间分析统计、水文分析、地址编码、逻辑网络、坐标转换等)等等。这些全是GIS相关的功能,客户端无论是Javascript、Flex还是Silverlight无需关注GIS功能的实现,只用专心于人机交互和用户UI设计。
2.方便程序员和美工协同开发
对于Flex和Silverlight开发来说,这种界线更为明显,如微软专门为设计人员提供的Express Blend,程序员只需将精力集中在基于vs的代码编写上,而这些代码无需关注GIS功能实现的方法,只需要完成对ArcGIS Server REST服务的调用即可,结构一目了然。
3.有利于采用快速原型的开发方式
没有任何后台逻辑之前,表现层就可以开始设计,FlexViewer无疑是最好的说明,ArcGIS Silverlight API也将拥有类似的框架。
4.合理分配负载,减轻服务器压力
这不是GIS的特点,是Javascript、Flex、Silverlight的能力,用GIS应用中的一个典型用例说明:通过不同颜色渲染出全国各省的人口数量。这是一个专题图生成的功能,过去常用的方式是由GIS Server进行处理,然后将处理结果生成一张图片,通过虚拟目录地址返回,10000个并发的时候服务器肯定死掉了,然而基于RIA+REST的应用架构,REST负责将需要的数据传回客户端,压力较大的渲染工作放到客户端进行了,有效减轻了服务器的压力,用户体验更佳,视觉效果更好。
再如下面H1N1例子(在线演示),客户端要绘制上万个点,如用Soap API去动态绘制,速度会慢的难以忍受,而RIA做到了。

5.提高用户体验
这还用多说吗,RIA最直接的效果就是良好的用户体验,事实证明专业GIS用户更喜欢基于RIA的GIS应用,大众GIS应用如Google Map、MapABC也都推出了各自的Flex API。
任何技术没有100%完美,但是在GIS行业和更加广阔的IT技术应用中,RIA+REST在很多方面的确做得比前辈们更好。
RIA+REST架构实现完美WEB开发的更多相关文章
- 微服务架构Day03-SpringBoot之web开发配置
概述 SpringBoot开发: 1.创建SpringBoot应用,选中需要的场景模块. 2.SpringBoot已经默认将场景模块配置好,只需要在配置文件中指定少量的配置(数据库地址,用户名,密码) ...
- 微服务架构Day04-SpringBoot之web开发
引入项目 把html页面放在模板引擎文件夹templates下,这样能使用模板引擎的功能. 登录页面国际化 国际化:编写国际化配置文件 1.编写国际化配置文件,抽取页面需要显示的国际化消息 2.Spr ...
- [Java Web] 2、Web开发中的一些架构
1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸 ...
- 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)
对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...
- 基于asp.net的Web开发架构探索
问题由来 最近在研究适合团队开发的web架构解决方案,该架构即要适合分工协作又要有一定扩展性,适合不同的数据库需要,因此我查阅了一些资料,初步构想出了一套架构,请各位多多指教. 探索 web开发架构最 ...
- 全 Javascript 的 Web 开发架构:MEAN
http://developer.51cto.com/art/201404/434759.htm 全 Javascript 的 Web 开发架构:MEAN 引言 最近在Angular社区的原型开发者间 ...
- PHP. 01. C/S架构、B/S架构、服务器类型、服务器软件、HTTP协议/服务器、数据库、服务器web开发、PHP简介/常见语法、PHPheader()、 PHP_POST/GET数据获取和错误处理
C/S架构 Client/Server 指客户端,服务器 架构的意思 优点:性能性高:可将一部分的计算工作放在客户端上,服务器只需处理出局即可 洁面炫酷,可使用更多系统提供的效果 缺点:更新软件需 ...
- Web开发中B/S架构和C/S架构的区别
在web开发中有两种基本架构,即C/S架构和B/S架构那么这两种架构有什么区别呢?那么就一起来看看吧. C/S架构图: B/S架构图: C/S架构是 浏览/服务器端的交互,是早期的一种分布式架构,在该 ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
随机推荐
- SQL Server 2008管理工具出现 远程过程调用失败0x800706be解决方法
解决方法 出现此问题是因为在安装 Visual Studio 2012(VS2012) 时,会自动安装 "Microsoft SQL Server 2012 Express LocalDB& ...
- lintcode: 最小调整代价
题目 最小调整代价 给一个整数数组,调整每个数的大小,使得相邻的两个数的差小于一个给定的整数target,调整每个数的代价为调整前后的差的绝对值,求调整代价之和最小是多少. 样例 对于数组,最小的调整 ...
- 8 Types Of Friends You Need To Have in Your Life
8 Types Of Friends You Need To Have in Your Life一生中应该有的8种类型的朋友Did you know that people without frien ...
- NVDIMM典型应用及技术发展
1.典型应用之全系统保护 全系统保护采用超级内存作为系统主存.在系统异常掉电时,将整个系统的运行状态(包括CPU,芯片组,其他外设以及所有进程的信息)存入超级内存.在供电恢复后,利用超级内存中的数据, ...
- Mysql笔记——触发器简单实例
首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...
- centos磁盘爆满,查找大文件并清理
今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑.于是"df -h"查了查发现系统磁盘空间使用100%了.最后定位到是/var ...
- Linux命令-wc
wc命令用于统计指定文本的行数.字数.字节数 格式:wc [参数] 文本 [root@localhost test]# wc test.txt test.txt [root@localhost tes ...
- 自己用反射写的一个request.getParameter工具类
适用范围:当我们在jsp页面需要接收很多值的时候,如果用request.getParameter(属性名)一个一个写的话那就太麻烦了,于是我想是 否能用反射写个工具类来简化这样的代码,经过1个小时的代 ...
- Sales Order Flow Statuses
OE_ORDER_LINES_ALL.flow_status_code column values execute the below query to see the values. SELECT ...
- leetcode:Intersection of Two Linked Lists(两个链表的交叉点)
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...