buaashang 2016-12-05
SOFA MVC 是遵循 MVC 模式的 Web 开发框架。它是以 Spring MVC 为基础构建发展而成的独立 Web 开发框架,基本兼容 Spring MVC 的编程界面(API、注解),同时天然拥有 IoC、AOP、事务、安全等 Spring 原生能力。但 SOFA MVC 不是 Spring MVC (因此个别注解不承诺支持,同时不支持Spring MVC 特有的<mvc:..>
配置)。
SOFA MVC 采用了「微内核」+「插件化」的架构来构建各种 Web 层组件,这种设计模式使其能在提供丰富而全面的 Web 解决方案的同时保持核心逻辑的轻量,同时又提供灵活而松耦合的扩展能力。
SOFA MVC 可以借助 SOFA Lite 框架,在 Web 工程中引入丰富的分布式中间件,如 RPC、DMS、DDS等,反过来看,SOFA MVC 也可以视为 SOFA Lite 框架的一种 Web 开发解决方案,两者相辅相成,又在设计上相互解耦。关于两者的关系,也可参考 SOFA Lite 中 引入中间件 小节的说明。SOFA Lite + SOFA MVC 即为一套完整的分布式 Web 开发框架。
下图为整个框架的架构层次图,SOFA MVC 框架(MVC Kernel)支持插件扩展机制,支持模块化(Multi-CARS)开发 Web 工程,同时还提供了很多自定义标准实现的组件和服务简化开发。
MVC-Kernel 是整个框架的核心,可独立运行,主要包含 RESTful 开发支持模块、模块化支持模块、组件扩展体系、插件体系和插件生命周期管理模块以及各种核心插件。围绕 MVC-Kernel 存在的插件在运行时提供:请求参数校验、Web 安全、认证和授权、分布式 Session 等增强功能。下图是插件体系的概览:
容易上手:保留Spring MVC 的开发习惯(目前支持 Spring MVC 3.x),天然具备 Spring 的各种特性,支持标准 JavaEE 工程结构;
RESTful:基于 Spring MVC 的相关注解和框架默认提供的约定处理和内容协商能力,可轻松实现 RESTful 的开发支持,并与框架其它功能和组件无缝整合;
约定开发:既可以使用 Spring Web 推荐的基于注解的开发,也可以使用符合 SOFA MVC 约定的风格和规范进行开发;
插件化:框架提供了一套插件化标准,方便项目快速集成符合标准的二方或三方的 SOFA MVC插件。
丰富组件:为 Web 开发提供了丰富的扩展组件(大部分以灵活的插件形式存在),包括分布式 Session、认证与授权、参数校验、Web安全、可复用页面片段等,让开发者关注业务逻辑的开发。
灵活扩展:在为用户提供丰富的页面组件同时也向用户开放组件的扩展能力,用户可轻松复写或者扩展默认组件逻辑;
模块化开发:提供独有的 CAR 模型(CAR 表示 web Component Archive),在标准 WAR 的基础上提供了模块化划分的能力。基于 SOFA MVC 可以进行 CAR 分发共享。
页面复用:提供可复用的页面组件模型 Tile,方便同一个系统中不同模块间的页面复用,也支持分布式环境下跨系统的页面片段复用。