概述
JS/SQL MVC框架. 顾名思义, 就是JavaScript和SQL MVC框架. 只要掌握JavaScript和SQL就可以快速开发出一个复杂的基于MVC的BS结构的系统.
由于该框架是在MVC框架进行改进的框架. 它继承了MVC框架的优点
- 一个模型提供不同的多个视图表现形式.
- 模型可复用
- 提高开发效率
通过该框架自带的程序生成器和存储过程解决了原有MVC框架的几个不足
- 通过程序生成器,自动生成相应程序, 存储过程 解决了原有MVC系统结构和实现的复杂的问题。
- 通过透明调用存储过程, 解决了视图与控制器间的过于紧密的连接问题。
- 通过存储过程和Viewdata减少了数据的调用, 将大量数据计算查询在数据库端实现, 解决了视图对模型数据的低效率访问。
除此之外该框架还有以下的优点
- 无需开发环境. 基本功能不需更改程序, 只要更改JS和sql即可.
- 跨语言, 该框架支持c#, php(正在开发), java(正在开发), 由于中间层透明, 可以很容易做到一次开发, 多语言, 多平台支持.
- 嵌入式系统支持,由于支持php(正在开发), java(正在开发), 占用资源少, 该系统很容易发布在linux嵌入式系统上.
项目背景
由于工作需要,使用了一套框架, 标准的.net mvc框架. 四层结构.
- View: Cshtml 用于页面的布局Js 页面数据的显示,操作,主要通过jquery easyui 实现,
- Entity 实体和表格映射,
- Service 操作数据,对数据进行增,删,改, 查询.
- Controller 连接页面和service.
该框架自带一个简单的程序生成器. 可以一次生成5个文件. 但修改页面是就比较麻烦.一个简单的表改动会涉及5个文件.
项目的开发过程中, 我发现 entity, service, controller 可以合在一起, 并且与页面无关. 就是说一个controller可以对应多个页面, 而所有数据库逻辑操作, 通过存储过程实现. 页面和存储过程之间的关系存在表中. 于是现在的结构就变成了
- Cshtml 用于页面的布局,
- Js 页面数据的显示,操作,主要通过jquery easyui 实现,
- Stored procedure, 操作数据,对数据进行增删改, 查询.
通过传递参数调用控制器, 来显示不同的页面.
经过一年的开发, 改进. 该框架基本满足了所有的需要. 新员工经过简单培训后, 一周就可以上岗. 在开发过程中, 由于使用了程序生成器. 基本的程序不用人工编写, 对于特殊需要可以通过修改js, html,sql 和设置数据库来改变. 将程序员从繁杂的工作中解放出来, 把精力放在业务流程和逻辑. 由于逻辑控制比较清晰, 程序质量比较高, 开发非常快捷, 扩展容易. 整个流程在数据库中, 框架自带在线帮助功能, 很容易生成技术和使用文档.
框架工作原理
该框架的整个逻辑,菜单,权限管理全部在数据库端. Js和html来显示数据.如果没有特殊的需求,基本不用改控制器程序.
该框架最基本的功能模块是页面. 每个页面有若干个布局区域. 每个布局区域, 或者几个布局区域对应一个表.
所有表数据是通过ajax或者页面初始时调用存储过程来得到. 而这个存储过程在页面中有一个唯一的名字. 称作动作.
一个动作对应一个存储过程或者sql语句. 一个存储过程可以对应多个动作. 这些动作可以是不同页面中的动作, 也可以是同一页面里面的动作. 一个存储过程可以返回一个表, 多个表或者不返回数据. 动作是该框架基础,每个页面对应多个动作.
对于管理界面(需要授权检查),每个动作还有一个按钮和它对应, 用于权限检查.每次js发出一个ajax动作请求, 后台程序先检查该动作对应的用户,页面是否合法. 如果合法, 则执行对应的存储过程, 返回执行结果.
存储过程的参数是由系统自动填入的. 在执行存储过程时, 系统先得到参数来源(session, config, url parameter, post data). 如果位定义来源, 首先,先检查ajax 参数是否包含了所需参数, 如果没有则检查session, url parameter, web config. |