CN101582066A - 网站系统及基于所述网站系统的数据交互方法 - Google Patents
网站系统及基于所述网站系统的数据交互方法 Download PDFInfo
- Publication number
- CN101582066A CN101582066A CNA2008100981204A CN200810098120A CN101582066A CN 101582066 A CN101582066 A CN 101582066A CN A2008100981204 A CNA2008100981204 A CN A2008100981204A CN 200810098120 A CN200810098120 A CN 200810098120A CN 101582066 A CN101582066 A CN 101582066A
- Authority
- CN
- China
- Prior art keywords
- web
- request
- module
- data
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种网站系统,包括浏览器端和Web数据库:所述浏览器端包括:用户接口模块,用于提供访问所述Web数据库的接口;所述Web数据库包括:存储模块,用于存储网站应用交互所需的数据;Web接口模块,用于接收所述浏览器端传送的用户对所述Web数据库的访问请求;解析模块,用于将所述请求解析成对应的一个或多个数据操作动作;数据处理模块,用于连接所述存储模块执行所述数据操作动作,并返回操作结果。本发明可以简化结构、提高效率、节约资源和降低成本。
Description
技术领域
本发明涉及网站架构及其应用领域,特别是涉及一种网站系统,以及,一种基于所述网站系统的数据交互方法。
背景技术
网站(Website)是指在因特网上,根据一定的规则,使用HTML等工具制作的、用于展示特定内容的相关网页的集合。简单地说,网站是一种通讯工具,就像布告栏一样,人们可以通过网站来发布自己想要公开的资讯,或者利用网站来提供相关的网络服务。人们还可以通过网页浏览器来访问网站,获取自己需要的资讯或者享受网络服务。目前的网站系统通常包括域名(俗称网址),网站源程序和网站空间。其中,域名的形式诸如:www.yahoo.com(一级域名),cn.yahoo.com/e000(二级/三级域名);网站空间由专门的独立服务器或租用的虚拟主机承担;网站源程序则放在网站空间里面,表现为网站前台和网站后台。这种网站系统一般基于B/S的交互模式,B/S是Brower/Server的缩写,即浏览器和服务器结构。客户机上只要安装一个浏览器(Browser),如NetscapeNavigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或SQLServer等数据库。浏览器通过Web服务器(Server)同数据库进行数据交互。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端实现的。具体地,现有的网站应用交互过程通常包含以下步骤:
步骤S1、将用户请求通过超文本传输协议(Hypertext TransferProtocol,HTTP)和超文本标记语言(HyperText Mark-up Language,HTML)提交至展现层(浏览器),展现层采用动态网页编程语言(PHP:HypertextPreprocessor,PHP)和通用网关接口(Common Gateway Interface,CGI)与服务器的动态交互层之间交互,动态交互层通过结构化查询语言(Structured Query Language,SQL)连接服务器端的数据库完成数据处理,并逐层返回数据处理结果至展现层,响应用户的请求。
基于这种网站系统,公开号为CN1510608的中国专利公开的一种面向对象的商业网站架设系统,该系统中包括有一Web服务器、一数据库服务器及一数据库,其中,Web服务器运行有一网站开发平台,用于在Web服务器上架设商业网站,该网站开发平台通过面向对象技术编程实现,包括有多个预设类别,由这些预设类别可衍生出适用于待架设的商业网站的商务逻辑对象。数据库服务器和数据库共同提供对网站开发平台和待架设的商业网站所需资料的存储和访问。通过上述的系统,网站设计者可以快速架设及简易维护商业网站;并且可以对所架设的商业网站进行扩展,在不重新编译的情况下,修改其中的商务逻辑对象。即通过在Web服务器上增加架设商业网站的网站开发平台,使开发人员可以快速架设和简易维护商业网站。
可以看出,目前的网站开发及应用完全依赖于这种现有的网站系统,在这种情况下,要开发一个网站,至少需要执行以下过程:
一、网站环境部署过程,包括:
1)购买或租用硬件服务器,可以是一台或多台;
2)部署或租用网页下载空间;
3)部署或者租用动态网页服务器端的开发空间;
4)部署或者租用数据库;
5)选取并购买一个域名,并将这个域名与自己租用或者购买的硬件服务器绑定等;
二、网站制作过程,包括:
1)选取动态网页服务器端开发语言(如Java,PHP等);
2)设计动态网页服务需要的数据库结构;
3)设计网站软件结构;
4)设计网站界面,并通过HTML、JavaScript等界面描述语言实现;
5)用选取的动态网页服务器开发语言开发网站软件;
6)开发测试完毕后部署到前述网站环境中。
显然,现有的网站需要具备完整的服务器、服务器端编程能力、数据库能力,以及服务器负载和扩展能力才能提供网络应用服务;并且,需要为大量的用户访问提供足够的带宽;还需要网站开发人员具备网站界面服务的界面设计的HTML、JavaScript知识,动态网页的服务器端脚本知识,数据库设计知识甚至包括架设网站环境需要的Unix/Linux等系统管理知识。网站开发成本较高、过程复杂,并且难度较高。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种网站系统,用以简化结构、提高效率、节约资源和降低成本。
发明内容
本发明所要解决的技术问题是提供一种网站系统和基于这种网站系统的数据交互方法,用以简化结构、提高效率、节约资源和降低成本。
为了解决上述技术问题,本发明实施例公开了一种网站系统,包括浏览器端和Web数据库:所述浏览器端包括:
用户接口模块,用于提供访问所述Web数据库的接口;
所述Web数据库包括:
存储模块,用于存储网站应用交互所需的数据;
Web接口模块,用于接收所述浏览器端传送的用户对所述Web数据库的访问请求;
解析模块,用于将所述请求解析成对应的一个或多个数据操作动作;
数据处理模块,用于连接所述存储模块执行所述数据操作动作,并返回操作结果。
优选的,所述Web数据库还包括:
原子封装模块,用于将所述多个数据操作动作封装为一个操作对象。
优选的,所述Web数据库还包括:
权限控制模块,用于判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述解析模块。
优选的,所述浏览器传送的请求为HTTP请求,所述解析模块包括:
协议解析子模块,用于将所述HTTP请求解析成对应的一个或多个数据操作动作。
优选的,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析模块还包括:
SQL解析子模块,用于解析所述SQL类请求,获得SQL执行语句。
优选的,所述用户接口模块由标准HTML和JavaScript生成。
优选的,所述Web接口模块采用标准HTTP协议基于REST架构实现。
优选的,所述Web数据库包括Web数据库集群。
本发明实施例还公开了一种基于权1所述的网站系统进行数据交互的方法,包括:
浏览器将用户提交的Web数据库访问请求传送至Web数据库;
所述Web数据库将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,并调用存储的网站应用数据执行所述数据操作动作,返回操作结果。
优选的,在执行多个数据操作动作前,本方法还包括:
将所述多个数据操作动作封装为一个操作对象。
优选的,在所述Web数据库接收所述请求后,本方法还包括:
判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述解析步骤。
优选的,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析步骤还包括:
解析所述SQL类请求,获得SQL执行语句。
与现有技术相比,本发明具有以下优点:
本发明通过进一步细化网站应用的分工,即提供网络基本流量和服务器托管服务的服务商不变(ISP),提供网站应用公共需求的服务商(即Web数据库服务商),和提供网站应用业务的服务商(ICP)。在这种情况下,ICP可以专心从事自己的业务,也就是用户和内容的互动的组织上,原来的:内容的存储、提取和网站建设的环节,都交给Web数据库服务商来服务。按照本发明的分工方式,网站应用的提供商可以在很大程度上简化结构、提高效率,达到节约成本(的目的。因为很多Web数据库服务商(比如雅虎)本身已经具备了大范围内一致的、良好性能和高度安全性的网站应用访问基础,因此网站应用服务商本身可以避免这样昂贵的网站环境建设环节的开销,而因为这样的优良的网站应用访问基础得以多家复用,从而提高了网站环境的使用效率,从而降低了所有人的总体拥有成本。从另一方面而言,网站应用服务商也可以避免有冗长臃肿的全方位的开发技能和环境,可以把技能集中在纯客户端的技术和普遍性的技术基础上,而不需要去组织很冗长臃肿的开发队伍,从而也提高了效率、降低了成本。
附图说明
图1是本发明的一种网站系统实施例1的结构框图;
图2是本发明的一种基于图1所示的网站系统进行数据交互的流程图;
图3是本发明的一种网站系统实施例2的结构框图;
图4是本发明的一种基于图3所示的网站系统进行数据交互的流程图;
图5是本发明的一种网站系统实施例3的结构框图;
图6是本发明的一种基于图5所示的网站系统进行数据交互的流程图;
图7是一种基于本发明的网站系统进行数据交互的方法实施例的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明实施例的核心构思之一在于,进一步细化网站应用的分工。具体而言,现有技术的网站应用分工是:提供基本网络流量和服务器托管服务的服务商(ISP),和提供网站应用的服务商(ICP),对于所有网站制作者来说,其自身都是ICP的概念,因此,它们需要自己处理所有的服务细节,包括内容的存储、内容的提取、内容的展现以及网站环境的建设、维护等等(比如采购服务器、部署服务器、日常运维、监控等等)以及在用户与内容之间互动的组织。而本发明提出的网站应用分工是:提供网络基本流量和服务器托管服务的服务商不变(ISP),提供网站应用公共需求的服务商(即Web数据库服务商),和提供网站应用业务的服务商(ICP)。在这种情况下,ICP可以专心从事自己的业务,也就是用户和内容的互动的组织上,原来的:内容的存储、提取和网站建设的环节,都交给Web数据库服务商来服务。按照本发明的分工方式,网站应用的提供商可以在很大程度上简化结构、提高效率,达到节约成本(的目的。因为很多Web数据库服务商(比如雅虎)本身已经具备了大范围内一致的、良好性能和高度安全性的网站应用访问基础,因此网站应用服务商本身可以避免这样昂贵的网站环境建设环节的开销,而因为这样的优良的网站应用访问基础得以多家复用,从而提高了网站环境的使用效率,从而降低了所有人的总体拥有成本。从另一方面而言,网站应用服务商也可以避免有冗长臃肿的全方位的开发技能和环境,可以把技能集中在纯客户端的技术和普遍性的技术基础上,而不需要去组织很冗长臃肿的开发队伍,从而也提高了效率、降低了成本。
参考图1,示出了本发明的一种网站系统架构的结构框图,可以包括以下模块:
浏览器端101,可以包括:
用户接口模块1011,用于提供访问所述Web数据库的接口;
优选的,所述用户接口模块可以使用标准的HTML和JavaScript,或者其它标准的浏览器支持技术生成,无需实现任何浏览器插件,或对浏览器进行扩展,只需标准的浏览网站功能支持即可;
Web数据库102,可以包括:
存储模块1021,用于存储网站应用交互所需的数据;
Web接口模块1022,接收所述浏览器端传送的用户对所述Web数据库的访问请求;
优选的,所述Web接口模块采用标准HTTP协议基于REST架构实现。公知的是,REST(Representational State Transfer)是一种针对网络应用的设计和开发方式,具有一些设计概念和准则,诸如:1.网络上的所有事物都被抽象为资源(resource);2.每个资源对应一个唯一的资源标识(resource identifier);3.通过通用的连接器接口(generic connectorinterface)对资源进行操作;4.对资源的各种操作不会改变资源标识;5.所有的操作都是无状态的(stateless)。
解析模块1023,用于将所述请求解析成对应的一个或多个数据操作动作;
数据处理模块1024,用于连接所述存储模块1021执行所述数据操作动作,并返回操作结果。
参考图2,示出了基于图1所示的网站系统进行数据交互的流程图,具体可以包括以下步骤:
步骤201、浏览器端的用户接口模块将用户提交的Web数据库访问请求传送至所述Web数据库的Web接口模块;
步骤202、所述Web数据库的解析模块将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,并传递给数据处理模块;
步骤203、所述数据处理模块连接所述存储模块执行所述数据操作动作,并返回操作结果。
可以看出,本发明实现了一个零服务器端(无需CGI、无需数据库,只需要HTML和JavaScript)的新一代的网站架构,以简化开发流程、降低网站成本;提高了网站(应用)的灵活性以及扩展网站(应用)开发的范围。本发明的改进之处之一在于,将对Web数据库的操作推进到了浏览器端,也就是说,直接在用户的浏览器端发起对Web数据库的查询和调用,以此来实现网站应用的交互。在这种情况下,用户至少可以省却一个访问数据库的动态网页环节,因而简化了整个网站架构、降低了成本,同时简化了网站开发的过程。
在实际中,为满足数据服务的需求,所述Web数据库也可以为一个数据库集群。例如,所述Web数据库可以为单机版PostgreSQL数据库和基于PL/Proxy的PostgreSQL数据库集群。需要说明的是,尽管本发明自身带有单机版的数据库和/或数据库集群,但还可以拥有其他关系型数据库作为后台,比如mysql数据库,MS SQL Server数据库,以及Oracle数据库等。即本发明为一种后端″即插即用″的松散式体系结构。在这种情况下,开发人员可以很容易地更换本发明的后端,或者开发新的后端。
本发明的又一改进之处在于,在Web数据库的Web接口模块实现了可编程的Web service。具体而言,现有技术中的Web service大多通过固化在服务器上的代码来提供针对特定应用目的和业务逻辑的接口。而本发明提供的服务则与具体的应用目的和业务逻辑无关,用户在客户端可以通过本发明提供的服务,自己定义新的接口和功能。例如:
1)本发明的web service界面直接提供了RestyScript语言,来让用户自己定义参数化的视图对象(即view),来生成全新的查询接口,从而实现对浏览器端进行数据库访问接口的个性化扩展。需要说明的是,RestyScript是一种用于web service编程的混合语言。它在语法上是标准SQL的一个非严格子集与HTTP命令记法的一种混合方式。RestyScript中的语句可以是一个类SQL语句,如:
update Post set comments=comments+1 where Post.id=5;
也可以是一条类HTTP命令,如:
PUT′/=/model/Post/id/5′{″comments″:2};
还可以混合在一起(以分号分隔),从而构成一个语句序列。RestyScript中可以使用参量变量,比如$var,来定义RestyScript模板,从而可以在使用时通过用户提供不同的参量值,从模板生成与之对应的最终的RestyScript脚本。RestyScript中还可以添加对条件分支语句,循环语句和结果集变量的支持。
2)本发明的web service界面直接提供了JavaScript语言来定义数据表格(model)中各列取值的合法性验证器(validators)和过滤器(filters)。
3)本发明的web service界面允许把用户的多个请求,连同RestyScript的数据修改及删除操作封装成一个整体,形成action对象,从而形成一个新的操作接口,供随后反复调用。同时,如此得到的action对象是保证事务性和原子性的。这点可以参考本说明书中系统实施例2和方法实施例2中的相关描述,在此就不详述了。
同时,相较于现有的web浏览器对AJAX(AsynchronousJavaScript and XML,异步JavaScript和XML,一种创建交互式网页应用的网页开发技术)请求的跨域操作有严格的限制。本发明在其web service接口中提供了相应的选项供用户开启对跨域AJAX请求的额外支持。因此,可以直接在客户端JavaScript代码中访问这些服务。借助于本发明的这种具有跨域功能的web service,用户可以使用纯客户端JavaScript语言编写整个网站,而不依赖于传统的服务器编程环境的支持,比如PHP,Java,.NET,Python,Ruby,和Perl等等服务器端编程语言,从而实现了纯客户端的零部署成本的网站。
优选的,所述浏览器传送的请求为HTTP请求,在这种情况下,所述解析模块可以包括:
协议解析子模块,用于将所述HTTP请求解析成对应的一个或多个数据操作动作。
基于前述描述可以得知,所述浏览器端传送的请求不仅可以包括直接数据的HTTP请求,还可以先将SQL类请求封装在HTTP请求中,通过浏览器内置的HTTP引擎进行数据的收发,再将该请求传送至Web数据库端。即在这种情况下,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析模块则还可以包括:
SQL解析子模块,用于解析所述SQL类请求,获得SQL执行语句。
在Web数据库端的Web接口模块接收浏览器发送过来的、封装了SQL类请求的HTTP请求之后,可以解析出对应的SQL请求,然后传递给Web数据库底层的SQL数据库进行处理,最后经逆顺序返回,从而实现了浏览器端对SQL数据库的访问。
需要说明的是,所述直接数据请求通常对应参数式的数据操作方法;SQL类请求则对应SQL语言描述的数据操作方法。SQL是StructuredQuery Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是高级的非过程化编程语言,允许用户在高层数据结构上工作。其不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。所述SQL类请求相对于直接数据请求更加灵活,也是本发明可以省略服务器的关键点所在,即通过Web数据库的SQL语句操作,实现现有服务器的相应功能。
以下分别通过两个例子来说明针对不同请求处理的情形。
例1、直接数据请求举例
假如用户发起同时获取用户账户的积分以及用户所在地的天气的请求,相应的过程为:
步骤A1、用户发起请求,在浏览器端生成类似以下代码所示的请求命令:
<请求>用户余额<参数>用户ID<参数值>123</参数值></参数><参数>密码<参数值>456</参数值></参数></请求><请求>天气<参数>地区<参数值>北京</参数></参数></请求>
步骤A2、Web数据库端的Web接口模块收到请求后,通过解析模块把上面的类XML的数据解析成两个请求,一个是请求用户余额,参数是值为123的用户ID、密码为456;另外一个是请求天气,参数是值为北京的地区;
步骤A3、数据处理模块进行如下处理:
A31、提取用户的ID和密码,检查是否正确,如果不正确,就返回错误提示信息;如果ID和密码正确,则查询用户余额;
A32、查询北京的天气
A33、把余额和北京天气组装成返回数据返回。
例2、SQL类请求举例
假如用户发起同时获取用户账户的积分以及用户所在地的天气的请求,相应的过程为:
步骤B1、用户发起请求,在浏览器端生成类似下面这样的请求命令:
POST/=/model/q=’select余额from用户表where用户ID=123and用户密码=456join(select天气from天气表where地址=北京)bon(1=1)’
步骤B2、Web数据库端的Web接口模块收到请求后,判断是SQL类请求,于是对该SQL类请求进行分析,确认没有安全漏洞后,进入下一步;
步骤B3、解析模块解析出相应的SQL执行语句;
步骤B4、数据处理模块根据所述SQL执行语句进行如下处理:
B41、服务器对数据库调用SQL语句:select余额from用户表where用户ID=123and用户密码=456检查用户的权限是否正确,如果不正确,则返回错误;如果正确,则数据库执行SQL语句:select余额from用户表where用户ID=123and用户密码=456join(select天气from天气表where地址=北京)bon(1=1)获取结果;
B42、服务器将结果集组装成返回数据返回给用户。
参考图3,示出了本发明的一种网站系统实施例2的结构框架图,可以包括浏览器端201和Web数据库202:
所述浏览器端可以包括:
用户接口模块2011,用于提供访问所述Web数据库的接口;
所述Web数据库202可以包括:
存储模块2021,用于存储网站应用交互所需的数据;
Web接口模块2022,用于接收所述浏览器端传送的用户对所述Web数据库的访问请求;
解析模块2023,用于将所述请求解析成对应的一个或多个数据操作动作;
原子封装模块2024,用于将所述多个数据操作动作封装为一个操作对象;
数据处理模块2025,用于连接所述存储模块执行所述数据操作动作,并返回操作结果。
参考图4,示出了基于图3所示的网站系统进行数据交互的流程图,具体可以包括以下步骤:
步骤401、浏览器端的用户接口模块将用户提交的Web数据库访问请求传送至所述Web数据库的Web接口模块;
步骤402、所述解析模块将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,并将多个数据操作动作通过原子封装模块封装成一个操作对象,传递给数据处理模块;
步骤403、所述数据处理模块连接所述存储模块执行所述数据操作动作,并返回操作结果。
在实际中,所述封装具有原子性,一个原子(即一个个操作对象)操作成功,则它包含的所有独立操作都成功;否则所包含的独立操作都失败。即把若干个独立操作当作一个整体来看待。所述封装操作可以理解为将一组操作封装为一种类似编程语中的“函数”的实体(即Action)。该实体可以带参数,并且有名字。用户创建了Action之后,就可以在webservice的接口中使用不同的实际参数反复调用。即相当于扩展了webservice的接口。一个Action可以调用其他的Action;同时,有名字的Action可以实现直接或者间接的调归调用,从而可以实现更高层次的复用。
需要说明的是,前述REST规范中的“无状态”,是指每个HTTP请求本身包含了执行目标操作所需的所有信息,与本发明的原子封装模块实现原子性批处理的操作并不矛盾,本发明可以将需要保证原子性的多个操作封装在一个Action实体中,因此对于该Action的定义和调用而言,仍是在一次HTTP请求中完成,而且确实在这样的请求中编码了所有所需的信息,因此仍是“无状态”的。
以下通过一个具体的例子进一步说明本发明的原子封装模块。
假设通过HTTP协议在Web数据库端创建了名为Foo的Action为:
POST/=/action/Foo
{″definition″:″POST/=/model/Comment/~/~{\″author\″:$author,\″comment\″:$comment,\″post\″:$post_id};update Post setcomments_count=comments_count+1 where id=$post_id″}
可以看出,Action Foo包含了两个操作,第一个操作是:
POST/=/model/Comment/~/~{″author″:$author,″comment″:$comment,
″post″:$post_id};
这是一条类HTTP动作。它的含义是向名为Comment的Model中插入一条记录,它引用了3个待定参量,$author,$comment,和$post_id。
第二个操作是:
update Post set comments_count=comments_count+1 where id=$post_id
这是一个类SQL操作。它的含义是将Post这个Model中的id为$post_id的行的comments_count增一。其中,$post_id和前面的$post_id引用的是同一个待定参量。
在这种情况下,浏览器端可以使用不同的参量值来调用这个FooAction;例如,GET/=/action/Foo/~/~?author=agentzh&comment=Hello&post_id=5
以上调用就将值′agentzh′,′Hello′,和′5′分别绑定到了参量$author,$comment,和$post_id上。
此外,还可以在定义的其他Action中调用Foo Action,比如
POST/=/action/Bar
{″definition″:″GET/=/action/Foo/~/~?author=$author&comment=$com
ment_1&post_id=$post_id;
GET/=/action/Foo/~/~?author=$author_2&comment=$comment_2&post
_id″}
此时通过相应的参数调用Bar Action就一次性实现了对Foo Action的两次调用。
简而言之,本发明可以通过先定义:
define_action:action_name=action_1&action_2&action_3
后使用:
some_url/action_name
即可以预先存储的(定义),然后再具体执行的,设计使用上更加灵活、方便,并且更容易实现很复杂的动作,比如,
可以把两个预定义的action_name组合成新的action:
define_action:action_name1=action_1&action_2
define_action:action_name2=action_3&action_4
define_action:action_name3=action_namel&action_name2
然后调用:
some_url/action_name3
实际上就调用了action_namel和action_name2。
当然,上述封装方法仅仅用于示例,本领域技术人员根据实际需要或经验采用任一种封装操作都是可行的,本发明对此不需要进行限定。
参考图5,示出了本发明的一种网站系统实施例3的结构框架图,可以包括浏览器端501和Web数据库502:
所述浏览器端可以包括:
用户接口模块5011,用于提供访问所述Web数据库的接口;
所述Web数据库502可以包括:
存储模块5021,用于存储网站应用交互所需的数据;
Web接口模块5022,用于接收所述浏览器端传送的用户对所述Web数据库的访问请求;
权限控制模块5023,用于判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述原子封装模块。
解析模块5024,用于将所述请求解析成对应的一个或多个数据操作动作;
原子封装模块5025,用于将所述多个数据操作动作封装为一个操作对象;
数据处理模块5026,用于连接所述存储模块执行所述数据操作动作,并返回操作结果。
参考图6,示出了基于图5所示的网站系统进行数据交互的流程图,具体可以包括以下步骤:
步骤601、浏览器端的用户接口模块将用户提交的Web数据库访问请求传送至所述Web数据库的Web接口模块;
步骤602、权限控制模块判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述解析模块执行步骤603;
步骤603、所述解析模块将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,并将多个数据操作动作通过原子封装模块封装成一个操作对象,传递给数据处理模块;
步骤604、所述数据处理模块连接所述存储模块执行所述数据操作动作,并返回操作结果。
在实际中,如果提交请求的用户没有相应数据的访问权限,可以向用户提示错误信息,并禁止用户的访问操作。
可以看出,本发明的又一改进之处在于,在web service内建了完整的角色系统。角色是一阶对象,即其地位与Model及View相同。通过用户接口可以对角色对象自身进行操作,而角色对象所关联的访问控制规则又反过来约束了当前用户所能进行的操作。具有足够权限的用户才能通过web service接口创建新的角色,或者修改已有的角色。角色可以通过密码,匿名,以及完成验证码图片(captcha)等多种方式进行身份验证。角色也可以通过继承方式加以创建。角色的访问控制规则(ACL)定义了接口中哪些操作是允许的。每一条规则都是一个二元组。二元组由对应操作的HTTP动作和该动作所作用的URL模式所组成。优选的,还可以通过HTTP动作和该动作所作用的URL模式以及URL强制参数这一三元组的方式来描述ACL访问控制规则。因此角色的ACL规则可以在整个数据库接口中精确而完整地定义该角色能访问的资源以及操作。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
参考图7,一种基于本发明的网站系统进行数据交互的方法实施例的流程图,具体可以包括以下步骤:
步骤701、浏览器将用户提交的Web数据库访问请求传送至Web数据库;
步骤702、所述Web数据库判断提交请求的用户是否具备相应数据的访问权限,如果是,则执行步骤703;
步骤703、将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,将所述多个数据操作动作封装为一个操作对象,并调用存储的网站应用数据执行所述数据操作动作,返回操作结果。
优选的,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析步骤还包括:解析所述SQL类请求,获得SQL执行语句。
由于图7所示的方法在本发明的网站系统上完成,相关内容和详细的实施过程可以参考前述系统实施例中的相应部分,在此就不再赘述了。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
基于本发明网站系统的网站开发过程则可以为:
一、网站环境部署过程,包括:
1)选取并购买合适的域名;
2)租用或者购买提供HTML、JavaScript下载的空间;
3)选用一个合适的Web数据库提供商;
4)绑定自己的域名;
二、网站制作过程,包括:
1)设计网站数据库;
2)设计网站界面和业务逻辑,可以用HTML和JavaScript实现;
3)将设计开发成具体的HTML和JavaScript代码;
4)将开发的代码部署到前述租用或购买的下载的空间。
基于上述开发过程可以看出,本领域技术人员只需要了解数据库基本知识和HTML、JavaScript知识即可,而无需完整掌握服务器端开发语言的知识,和现有的网站环境架设的大部分知识,只要懂得如何上传HTML、JavaScript文件到自己的购买和绑定的域名对应的空间即可。
以上对本发明所提供的一种网站系统和一种基于该网站系统进行数据交互的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1、一种网站系统,其特征在于,包括浏览器端和Web数据库:
所述浏览器端包括:
用户接口模块,用于提供访问所述Web数据库的接口;
所述Web数据库包括:
存储模块,用于存储网站应用交互所需的数据;
Web接口模块,用于接收所述浏览器端传送的用户对所述Web数据库的访问请求;
解析模块,用于将所述请求解析成对应的一个或多个数据操作动作;
数据处理模块,用于连接所述存储模块执行所述数据操作动作,并返回操作结果。
2、如权利要求1所述的网站系统,其特征在于,所述Web数据库还包括:
原子封装模块,用于将所述多个数据操作动作封装为一个操作对象。
3、如权利要求2所述的网站系统,其特征在于,所述Web数据库还包括:
权限控制模块,用于判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述解析模块。
4、如权利要求3所述的网站系统,其特征在于,所述浏览器传送的请求为HTTP请求,所述解析模块包括:
协议解析子模块,用于将所述HTTP请求解析成对应的一个或多个数据操作动作。
5、如权利要求4所述的网站系统,其特征在于,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析模块还包括:
SQL解析子模块,用于解析所述SQL类请求,获得SQL执行语句。
6、如上述任一项权利要求所述的网站系统,其特征在于,所述用户接口模块由标准HTML和JavaScript生成。
7、如权利要求6所述的网站系统,其特征在于,所述Web接口模块采用标准HTTP协议基于REST架构实现。
8、如权利要求7所述的网站系统,其特征在于,所述Web数据库包括Web数据库集群。
9、一种基于权1所述的网站系统进行数据交互的方法,其特征在于,包括:
浏览器将用户提交的Web数据库访问请求传送至Web数据库;
所述Web数据库将所述Web数据库访问请求解析成对应的一个或多个数据操作动作,并调用存储的网站应用数据执行所述数据操作动作,返回操作结果。
10、如权利要求9所述的方法,其特征在于,在执行多个数据操作动作前,还包括:
将所述多个数据操作动作封装为一个操作对象。
11、如权利要求10所述的方法,其特征在于,在所述Web数据库接收所述请求后,还包括:
判断提交请求的用户是否具备相应数据的访问权限,如果是,则触发所述解析步骤。
12、如权利要求9所述的方法,其特征在于,所述浏览器传送的请求为封装了SQL类请求的HTTP请求,所述解析步骤还包括:
解析所述SQL类请求,获得SQL执行语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100981204A CN101582066A (zh) | 2008-05-13 | 2008-05-13 | 网站系统及基于所述网站系统的数据交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100981204A CN101582066A (zh) | 2008-05-13 | 2008-05-13 | 网站系统及基于所述网站系统的数据交互方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101582066A true CN101582066A (zh) | 2009-11-18 |
Family
ID=41364214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100981204A Pending CN101582066A (zh) | 2008-05-13 | 2008-05-13 | 网站系统及基于所述网站系统的数据交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582066A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523307A (zh) * | 2011-12-31 | 2012-06-27 | 西南交通大学 | 一种基于b/s的数据传输系统 |
CN102571934A (zh) * | 2011-12-22 | 2012-07-11 | 深圳华强电子交易网络有限公司 | 一种web页面数据绑定的方法 |
CN103051706A (zh) * | 2012-12-19 | 2013-04-17 | 新浪网技术(中国)有限公司 | 应用于动态网站的动态网页请求处理系统和方法 |
CN103164270A (zh) * | 2011-12-12 | 2013-06-19 | 阿里巴巴集团控股有限公司 | java 系统应用程序编程接口调用方法及系统 |
CN103577182A (zh) * | 2012-08-10 | 2014-02-12 | 资拓宏宇国际股份有限公司 | 用户输入画面产生系统及其方法 |
CN104462463A (zh) * | 2014-12-17 | 2015-03-25 | 南京莱斯信息技术股份有限公司 | JavaScript基于SQL模板的数据访问方法 |
CN104980308A (zh) * | 2015-07-29 | 2015-10-14 | 上海斐讯数据通信技术有限公司 | 一种omci协议报文封装方法及装置 |
CN105488147A (zh) * | 2015-11-26 | 2016-04-13 | 南京莱斯信息技术股份有限公司 | 一种基于sql模板的持久化方法 |
CN103179125B (zh) * | 2013-03-25 | 2016-08-31 | 北京奇虎科技有限公司 | 网站认证信息的显示方法及浏览器 |
CN106126540A (zh) * | 2016-06-15 | 2016-11-16 | 中国传媒大学 | 数据库访问系统及其访问方法 |
CN108390844A (zh) * | 2017-06-30 | 2018-08-10 | 勤智数码科技股份有限公司 | 一种通过可信第三方进行数据安全访问的方法级装置 |
CN110278235A (zh) * | 2018-03-16 | 2019-09-24 | 上海远动科技有限公司 | 基于云技术的scada移动监控桌面系统 |
-
2008
- 2008-05-13 CN CNA2008100981204A patent/CN101582066A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164270B (zh) * | 2011-12-12 | 2017-08-04 | 阿里巴巴集团控股有限公司 | java系统应用程序编程接口调用方法及系统 |
CN103164270A (zh) * | 2011-12-12 | 2013-06-19 | 阿里巴巴集团控股有限公司 | java 系统应用程序编程接口调用方法及系统 |
CN102571934A (zh) * | 2011-12-22 | 2012-07-11 | 深圳华强电子交易网络有限公司 | 一种web页面数据绑定的方法 |
CN102523307B (zh) * | 2011-12-31 | 2015-04-29 | 西南交通大学 | 一种基于b/s的数据传输系统 |
CN102523307A (zh) * | 2011-12-31 | 2012-06-27 | 西南交通大学 | 一种基于b/s的数据传输系统 |
CN103577182A (zh) * | 2012-08-10 | 2014-02-12 | 资拓宏宇国际股份有限公司 | 用户输入画面产生系统及其方法 |
CN103051706A (zh) * | 2012-12-19 | 2013-04-17 | 新浪网技术(中国)有限公司 | 应用于动态网站的动态网页请求处理系统和方法 |
CN103179125B (zh) * | 2013-03-25 | 2016-08-31 | 北京奇虎科技有限公司 | 网站认证信息的显示方法及浏览器 |
CN104462463A (zh) * | 2014-12-17 | 2015-03-25 | 南京莱斯信息技术股份有限公司 | JavaScript基于SQL模板的数据访问方法 |
CN104462463B (zh) * | 2014-12-17 | 2018-08-14 | 南京莱斯信息技术股份有限公司 | JavaScript基于SQL模板的数据访问方法 |
CN104980308B (zh) * | 2015-07-29 | 2018-02-13 | 上海斐讯数据通信技术有限公司 | 一种omci协议报文封装方法及装置 |
CN104980308A (zh) * | 2015-07-29 | 2015-10-14 | 上海斐讯数据通信技术有限公司 | 一种omci协议报文封装方法及装置 |
CN105488147A (zh) * | 2015-11-26 | 2016-04-13 | 南京莱斯信息技术股份有限公司 | 一种基于sql模板的持久化方法 |
CN106126540A (zh) * | 2016-06-15 | 2016-11-16 | 中国传媒大学 | 数据库访问系统及其访问方法 |
CN106126540B (zh) * | 2016-06-15 | 2019-07-09 | 中国传媒大学 | 数据库访问系统及其访问方法 |
CN108390844A (zh) * | 2017-06-30 | 2018-08-10 | 勤智数码科技股份有限公司 | 一种通过可信第三方进行数据安全访问的方法级装置 |
CN110278235A (zh) * | 2018-03-16 | 2019-09-24 | 上海远动科技有限公司 | 基于云技术的scada移动监控桌面系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582066A (zh) | 网站系统及基于所述网站系统的数据交互方法 | |
CN101127655B (zh) | 集成现有基于万维网的系统的方法和系统 | |
CN103324470B (zh) | 一种Web系统生成的方法和装置 | |
US10585683B2 (en) | Defining application programming interfaces (APIs) using object schemas | |
CN102281311B (zh) | 一种基于开放应用编程接口实现网络业务的方法、系统及装置 | |
CA3025479C (en) | Extending object-schema-based application programming interfaces (apis) | |
CN110651252A (zh) | 内容管理系统扩展 | |
CN106657046A (zh) | 可配置的细粒度权限控制方法及装置 | |
CN103297475A (zh) | Mock服务系统及Mock服务的处理方法 | |
CN110109817A (zh) | 接口自动化测试方法、装置、设备及存储介质 | |
CN104216912A (zh) | 一种无侵入式的业务表单工作流化的实现方法与装置 | |
CN111414193A (zh) | 基于微服务框架的业务系统的实现方法及相关装置 | |
CN102866911B (zh) | Mashup应用建立方法及装置 | |
US11860963B2 (en) | Enhanced methods and systems for automated skill generation and management | |
Al-Zoubi et al. | RISE: A general simulation interoperability middleware container | |
CN101510881A (zh) | 一种网页提供方法及装置 | |
CN113641414A (zh) | 物联网设备接入方法、装置、计算机设备及存储介质 | |
CN114254606A (zh) | 微服务框架模型 | |
Abdullah et al. | Protocol specification and automatic implementation using XML and CBSE | |
Springborg et al. | Towards a secure API client generator for IoT devices | |
Liu et al. | Automatic generation of ifttt mashup infrastructures | |
CN109831496A (zh) | 一种终端数据的调试方法 | |
CN113037752B (zh) | 一种轻量级异构防火墙策略获取方法和系统 | |
de Oliveira et al. | An approach based on model driven engineering to support the development of web of things | |
CN101515939B (zh) | 用于在计算设备间进行网络交互的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1137251 Country of ref document: HK |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091118 |
|
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1137251 Country of ref document: HK |