服务层框架:
服务就是系统提供出来可访问的功能集合。可以通过Ajax来访问,也可以直接输入一个URL来访问,无论是通过Ajax来访问还是通过非Ajax来访问,其实都是需要先进行业务处理,不同的是业务处理完的渲染,有时候需要将结果数据以一定的形式返回,有时候需要返回一个JSP页面返回展示。
目前开源有很多调用服务的框架,比如Struts、SpringMVC、DWR等,但是或多或少的有一些不尽人意的地方,Struts和SpringMVC都是比较重型一些,第一方面,服务的发布需要配置的地方有些多了,另一方面,实现服务需要太多的类了,其实我们要的实现功能很简单,就是一个服务(一个类的其中一个方法)。DWR调用简单,但本身只支持Ajax方式调用,还不够。
设计原则:
(1)前后台分离,遵守一定的协议规则和数据交互规则。
(2)编写很少的代码,就可以实现业务功能的前后台交互。
(3)很好的维护性,易于跟踪和分析。
(4)易于扩展,支持开闭原则。
要点说明:
(1) 前后台数据交互格式转换
数据在不同地方有不同的表现形式,比如在浏览器端,数据总是以弱类型的方式表示,在后台Java里面,数据则表现为Java对象的强类型表示,前台传递到后台基本都是以字符串的格式传递过去的,怎么把这些字符串参数转换为Java对应的对象类型是前后台数据交互的一个非常重要的问题。
(2)前后台交互协议
后台总是以服务的形式提供各种各样的功能出来,前台通过调用这些服务来实现数据库的各种各样操作,所以如何才能做到很容易的将后台的类发布成可访问的服务、前台怎么最简单的访问这些发布出来的服务才是我们关注的重点。前台应该给后台传递怎么样的数据格式,后台处理完后应该给前台返回怎么样的数据格式。这些也是一个必须考虑的问题。
功能特性:
(1)支持基于SpringBean的服务发布(只需将服务类注册成一个Bean就可以访问该Bean的方法)或者支持通过类路径直接访问类的方法
(2)支持前提传入JSON格式的数据,后台方法接收对象参数
(3)支持请求数据和处理数据对象自动邦定功能(前台提交数据自动会组装到服务方法的传入参数对象中)
(4)支持多种处理结果渲染器(Json、JSP等)
(5)支持统一的服务测试页面