您的位置:首页 > 编程语言 > Java开发

TCSF 拓科服务开发框架:JavaEE快速开发框架集

2020-03-01 19:24 453 查看

点击查看TCSF开发手册目录

 

一、背景介绍

    拓科项目业务范围并不单一,不仅是拓科,绝大多数软件公司并不会只涉及开发一个业务领域的软件。我们需要的是一个能够针对各种应用项目都能够进行快速迭代的框架。但经历众多项目开发之后,我们发现,一个框架仅能适应一个应用领域的快速开发,在项目业务领域跨度大的情况下,我们仅依靠一套开发框架,将会导致大量重复的却难以避免的工作量出现。另外一方面,如果我们在经过长期实践之后,将出现的功能都集成在框架里,这将会导致框架臃肿不堪,工作效率不升反降。

    说到这里,你一定能够想到书本上所学面向对象里的封装方法,将功能封装在组件中,在需要的时候引入即可。确实,封装可以在很大的程度上降低重复工作量和提升工作效率。但是,引入组件仅解决了微观上的功能复用,你无法解决在开发一个项目时需要引入众多组件及编写最佳的粘合代码所耗费的重复工作量。

 

二、TCSF诞生

    初看名称“拓科服务框架(TCSF)”,你可能会认为这是一个用于拓科内部使用的服务项目快速开发框架,然而TCSF,不是一个框架,而是一系列针对应用场景、具有继承关系的开发框架的集合。

为了最大化的提高工作效率,TCSF总结拓科的所有涉及的业务类型,为每一个业务场景设计一套快速开发框架,在项目开发中,仅需要根据业务类型选择最接近的框架导入即可开始开发,无需再对能够通用的功能模块及界面重新设计和编码。

如下为TCSF框架集合的堆叠关系:

    为了减少框架之间的重复功能代码,避免框架不必要的维护工作量,TCSF在框架之间加入了继承关系。

在框架集的最底层是一个管理后台框架,提供了常规的系统管理功能,包括系统用户管理、权限管理、资源管理和系统监控等。管理后台是几乎每一个项目都会使用到的,因此TCSF以管理后台框架来作为的最基础框架。

    基于管理后台框架之上,TCSF针对拓科目前最常见的项目开发类型 —— 手机APP来整理一套APP服务快速开发框架。在框架中定义了APP应用最常见的请求接口和协议标准,提供了独立管理后台的APP用户管理模块和整合了APP推送模块等。这一套不仅仅是在手机App应用中适用,包括Windows客户端应用也同样适用。

    另外一个目前非常常见的项目类型就是微信公众号系统,TCSF同样在管理后台框架之上制定了一套微信公众号快速开发框架,框架支持包括所有微信开放接口和微信公众号系统常用的后台管理功能,开发者只需导入框架即可开始编写业务代码。

    当然,在项目中经常会有同时开发APP + Wechat的需求,TCSF在支持独立的App快速开发框架及微信公众号快速开发框架的基础上,就像C++多继承特性一样允许同时继承App-Framework和Wechat-Framework框架,达到具备App + Wechat快速开发的效果。

    读到这里,需要向读者强调的是:TCSF是为了不同业务场景的快速开发而诞生的一系列框架,每一个业务场景里再细分,有些功能是必要的,有些功能是可选的,这在框架详细说明中都会具体定义。而这些功能模块,都会在拓科开发库中进行详细说明。(拓科开发库[TCLIB],不是拓科内部使用类库,而是类库、代码片段、文档及最佳实践的集合)

 

三、TCSF框架计划

    如文章开头所说,TCSF,不是一个框架,而是一系列针对应用场景、具有继承关系的开发框架的集合。目前TCSF已计划出7个面向不同业务场景的快速开发框架:

  1. Admin-Framework
  2. App-Framework
  3. Wechat-Framework
  4. App + Wechat Integration Framework
  5. CMS-Framework
  6. Shop-Framework
  7. Doc-Framework

    其中,前四个框架为确认必须的框架,后三个为计划开发的框架。

  Admin-Framework、App-Framwork、Wechat-Framework及App + Wechat Integration Framework是目前拓科业务中最常见、需求最旺盛的框架,所以TCSF是必须支持。而Cms-Framwork、Shop-Framwork以及Doc-Framework在目前的项目应用场景中较为少见,仅仅是计划,需按照实际需求来进行确认。

    随着时间推移和业务发展,在工作上将会接触到更多的项目业务场景,TCSF将会收集不同的项目业务开发经验进行总结,增加更多快速开发框架来推动项目开发的速度和质量。

 

四、Admin-Framework

    Admin-Framework 是一个管理后台框架,包含了绝大多项目都必须的后台管理功能,包括用户管理、权限管理、系统资源管理及系统监控等功能以及相应的界面资源。Admin-Framework作为TCSF最基础的框架,提供了扩展点供开发者在此基础上进行扩展和调用。

    如下图展示了Admin-Framework的整体架构:

    在Admin-Framework中,Commons是框架最基层的模块,包含了项目通用的工具类库,以及对上层模块的通用支持,包括通用Service、通用Controller等。

    在Commons模块之上,是Admin-Module模块。Admin-Module依赖于Commons模块实现了后台管理功能的业务逻辑代码,其通过后台管理接口向上层提供后台管理服务。

    Admin-Web则是Admin-Module在web上的应用工程,通过调用实现了后台管理服务接口的Admin-Module来对外提供web服务。Admin-Web中主要包括了Controller、界面资源和程序配置等。

    在Admin-Framework提供了两个扩展点(Extension-Web和Extension-Module)供开发者根据需要进行扩展来开发自己的应用项目。

    如果是做一个小型Web管理系统,业务简单,模块单一,一般0.5~1个人月就能完成。这时候就不需要对工程进行拆分,开发者仅需要根据提供的骨架创建一个Web项目,将自动继承Admin-Framework所提供的功能和界面,并且可以对Admin-Framework所提供的资源进行覆盖达到灵活定制的要求。

    如下图,根据骨架创建的项目将会继承于Extension-Web,Extension-Web为Admin-Framework提供了继承和覆盖的扩展点。

    若所开发的项目模块较为单一,但模块内业务逻辑或页面展示相对较为复杂,前后台工作量在短期内由一个人负责时间比较紧凑,这时候可以考虑对项目进行分层:Web层和Bussiness层。Bussiness层包括了业务逻辑和领域模型的定义,Web层负责控制跳转,页面资源。这类型的工程可以分配两个人:一个专门负责业务接口、过程和数据处理,另外一个负责页面设计、渲染和数据交互。一般这个类型的项目能够控制在1~2个人月。

    此开发场景下Admin-Framework对此提供的两个扩展点都能派上用场,开发者可使用提供的Web骨架创建Web工程,使用提供的Module骨架创建Module工程,Web工程依赖于Module工程,两个工程之间定义好业务接口即可进行同步开发。

    如下图,Module工程实际是通过依赖Extension-Module来达到拥有Admin-Framework框架Admin-Module的能力,而Web工程通过继承Extension-Web来拥有继承和覆盖Admin-Web的能力。

    当项目业务复杂、模块众多的情况下,只划分一个Web工程和Module工程是不够的。自古解决问题的方式无非依靠两点:分解和归纳。当一个模块业务逻辑复杂难以解决时,就应该进行分解,分解到能够轻松解决时,说明粒度够小了。在中大型项目中,往往会划分多个模块来降低业务的复杂度,另一方面划分多个模块是便于进行多人开发,模块之间划分好职责和交互接口,当开发进度紧凑时可以较为容易的增加人手。

    在上一个应用场景中,分层是属于水平划分,在本应用场景中,划分模块则是进行垂直的业务拆分。利用好这两种拆分方式,不仅在开发上有助于降低耦合、理清开发思路,在后期项目业务访问巨大时,还有助于进行分布式集群部署,支撑业务的吞吐量。

    如上图,TCSF允许开发者创建一个父工程Biz-Module依赖Extension-Module,通过继承Biz-Module来划分不同的模块Biz-Module-1、Biz-Module-2。这两个模块都将拥有Admin-Framework框架Admin-Module模块的能力,并且可以根据需要指定Biz-Module-1和Biz-Module-2之间的依赖关系。不过模块之间的依赖关系只能是单向的,若出现循环依赖则说明模块的划分是有问题的。在业务模块之上,Web工程也可以进行拆分,并指定依赖和覆盖关系来做到Web工程的垂直划分,这也有利于开发人员任务的划分。

 

    如上所描述的Admin-Framework应用场景,同样也适用于在Admin-Framework基础上建立的快速开发框架,应用模式是相同的,不同的只是Admin-Framework切换成其他的如App-Framework等其他框架,这是因为每个框架所提供的扩展点是一样的。

 

五、App-Framework

    App-Framework是基于Admin-Framework进行扩展的针对APP开发场景的快速开发框架。

    从下图可以看出App-Framework是采用上一节Admin-Framework所支持的两个扩展点所拓展得出的一个新的框架。同样的,TCSF每个快速开发框架都会提供两个扩展点,以便于在此基础上进行项目开发和延伸出更深入业务领域的新框架。

    App-Framework在拥有Admin-Framework后台管理功能的基础之上,增加了支持APP账号管理、APP接口支持和推送消息的支持等功能,这能够让开发人员迅速的开始app的开发,不过这需要app开发上的配合。假如服务端由TCSF搭建和开发,App却是其他公司或不遵循TCSF App-Framework接口标准,开发人员恐怕需要仔细考虑如何应用App-Framework或者自己重新从Admin-Framework开始开发这款app的服务端。

 

六、Wechat-Framework

    Wechat-Framework也是一款基于Admin-Framework构建的快速开发框架,主要面向微信公众号开发,在框架中已提供好微信开放接口的调用以及通用的微信公众号后台管理功能。见下图,其架构形式与App-Framework并无区别。

七、App + Wechat Integration Framework

    在项目开发中,经常可以遇到多种应用组合的系统,例如App+Wechat、App+网站等等。在拓科,App+Wechat形式较为常见,所以TCSF定义了App + Wechat Integration Framework,结合了App-Framework和Wechat-Framework两个框架的功能。如下图,Integration-Module依赖了App-Module、Wechat-Module,Integration-Web依赖并允许覆盖App-Web和Wechat-Web,通过Extension-Module和Extension-Web将Integration Framework的扩展点暴露给开发者。

    在本质上,App-Module、Wechat-Module是没有关系的两个模块,Integration Module通过依赖来将两个模块聚合在一起,并在Ingration Module之上整合两个模块的业务。Interation-Web通过依赖和覆盖达到两个Web工程能够提供统一的Web服务。

下图为App + Wechat Integration Framework架构图:

    TCSF并非仅支持单继承的形式来进行项目开发,亦支持多继承的形式来达到对不同框架功能之间的整合。按照如此的架构形式能够对框架功能进行深度复用,避免了大量的零碎繁琐且重复的工作。

 

八、结束语

    本文站在宏观的角度对TCSF的架构形式进行介绍,包括TCSF中各框架的意义及框架之间的关系,不涉及技术实现和原理上的讲解。

    框架是在实践中总结得到的,也是在实践中进行验证的。TCSF框架将在项目实践中不断的完善,本文所讨论的内容将会不断进行更新,以适应不同的业务场景和瞬息万变的项目需求。

转载于:https://my.oschina.net/souljava/blog/877744

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chongzhan8218 发布了0 篇原创文章 · 获赞 0 · 访问量 336 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: