`

框架和平台的扩展性

阅读更多
我们的产品底层是一个平台,提供基础业务,以及扩展API。在平台之上,通过个性化配置,和定制开发,得到最终的产品

本文不谈配置的事,只说说定制

平台发布到不同的项目之后,各项目自行定制。由于不同的项目需求差异较大,有时候平台提供的扩展API无法满足,项目就直接修改或增加平台的代码。但是这样就有个问题,平台就不能随意升级了,因为项目对平台代码的修改不可控,平台升级之后,很可能与定制的代码冲突

延伸一下,我想到其实用到的各种开源框架也有这个情况

以struts2为例,把struts2也看做一个平台。初级的开发者,只会用到平台默认的功能。高级的开发者,会对平台进行扩展,比如自定义Interceptor、Validator等

这种扩展,都是基于平台事先设计开放的API来进行的,是“合理的扩展”,或者说是“预期的扩展”。在struts2升级的时候,只要有意识地保持这些API的稳定,那么用户自定义的扩展就不会受到影响

另一种扩展,则是在struts2没有“预料”到的地方,直接修改了平台的源代码,那么这种扩展,就跟本文前面提到的现象一样,是一种“意外的扩展”,实际上不叫扩展,而是"hack",或者说“侵入”,是不鼓励的,因为框架升级以后,这些扩展很可能就冲突了。有时用户被逼无奈,必须做出这种选择。如果这种情况很多的话,那么可以认为框架的“扩展性”是比较差的

所以一个框架,应该在设计时,事先识别出扩展点,开放相应的API,以达到较好的扩展性。在升级时,也要注意向下兼容,尽量不要修改现有的接口

顺便也想通了一个问题,为什么很多开源框架都提供user guide和developer reference:

user指的是普通用户,不做扩展
developer指的是高级用户,会对现有框架做扩展,甚至修改,有时就是框架的作者

当然,这2类人群,实际上都是程序员
分享到:
评论

相关推荐

    新一代js与native交互框架具有安全简单高可扩展性

    在"新一代js与native交互框架具有安全简单高可扩展性"这一主题下,我们可以深入探讨以下几个关键知识点: 1. **JavaScriptBridge**:JavaScriptBridge是实现JavaScript与Native通信的基础,它充当了两者之间的桥梁...

    集中式集群资源调度框架的可扩展性优化.docx

    通过这些优化措施,可以有效提升集中式集群资源调度框架的可扩展性和性能,使其更好地服务于大规模的大数据处理场景。然而,任何优化都必须权衡复杂性、性能和稳定性,因此需要根据实际应用场景进行定制化设计。

    一个扩展性很强的Java通用网络框架

    综上所述,这个Java通用网络框架具备强大的扩展性和兼容性,涵盖了网络通信的基本需求,如异步处理、数据压缩、安全性以及与流行框架如Spring和JMX的集成。开发者可以利用这些特性快速构建高效、可靠的网络应用。...

    mfc应用程序在.net框架下的扩展

    2. 兼容性:确保.NET组件与MFC应用程序的兼容性,特别是考虑到不同的版本和平台。 3. 错误处理:处理.NET异常和MFC错误机制之间的差异,确保程序的健壮性。 4. 学习曲线:掌握.NET和MFC的结合使用可能需要额外的...

    大数据平台技术框架选型分析

    同时,需要考虑到技术框架的简单性和广泛性,如是否支持广泛使用的开源标准、是否开源、是否易于更改或扩展等。 此外,需要注意到陷阱,如某些大数据套件采用数据驱动的付费方式,需要为自己处理的每个数据行付费。...

    基于Rust语言的新一代组装式应用开发框架 zino是Rust中可组合应用程序的下一代框架它强调简单性、可扩展性和生产力

    zino是 Rust 中可组合应用程序的下一代框架 它强调简单性、可扩展性和生产力。开箱即用的功能,可快速开发应用程序。最小的设计、可组合的架构和高级抽象。采用 API 优先的开放标准进行开发。采用实用惯例以获得最佳...

    基于Java的SOFARPC高可扩展性高性能Java RPC框架设计源码

    本源码是基于Java开发的SOFARPC高可扩展性高性能Java RPC框架设计,包含1466个文件,其中包括1202个....该项目是一个生产级的Java RPC框架,具有高可扩展性和高性能特点,在蚂蚁金服已经经历了十多年及五代版本的发展。

    Spring-Boot插件式开发框架,为动态扩展系统而生的插件开发框架

    这提高了系统的灵活性和响应速度,尤其适用于需要频繁更新功能的场景。 - **SpringBoot基础**:此框架建立在SpringBoot之上,利用其自动化配置、依赖管理和微服务特性,简化了插件的创建和管理。 2. **设计原理** ...

    SSH框架-社区共享平台

    此外,Spring的AOP特性可以用于实现如日志记录、性能监控等功能,提升代码的可维护性和可扩展性。 Struts2是基于MVC设计模式的Web应用框架,它处理HTTP请求并负责视图和控制器的交互。在“SSH框架-社区共享平台”中...

    vs-mef, Visual Studio 使用的托管扩展性框架( MEF ) 实现.zip

    vs-mef, Visual Studio 使用的托管扩展性框架( MEF ) 实现 ( 管理扩展性框架工作室的视觉风格) 特性一个新的,更快的主机,为你现有的MEF部件重用已经使用的MEF属性ExportFactory<T> 支持创建具有作用域生命周期的子...

    基于Rust语言的新一代组装式应用开发框架,它强调 简单性、可扩展性和生产力

    基于Rust语言的新一代组装式应用开发框架,它强调 简单性、可扩展性和生产力。用于快速应用程序开发的开箱即用功能。最小设计、可组合架构和高级抽象。采用 API 优先的 approch 进行具有开放标准的开发。采用实用的...

    一个扩展性很强的Java通用网络框架1

    一个扩展性很强的Java通用网络框架

    具有高性能和强扩展性的 Go HTTP 框架,用于构建微服务 .zip

    赫兹English |中文 Hertz [həːts] 是一个帮助开发者构建微服务的高可用性、高性能、高扩展性的 Golang HTTP 框架。其设计参考了fasthttp、gin...高可扩展性Hertz 采用分层设计,提供较多接口和默认扩展实现,用户也可

    SSH框架扩展与集成的研究

    - 在实际项目开发过程中,SSH框架可能在性能、安全性、扩展性等方面存在一定的不足,需要通过集成其他技术来弥补。 3. SSH框架的扩展与集成技术: - 通过集成J2EE相关技术,如Spring MVC、Spring Security、...

    移动跨平台APP开发框架比较

    缺点是对开发人员要求较高,不是懂点 web 技术就行的,当官方封装的控件、API 无法满足需求时就必然需要懂一些 native 的东西去扩展,扩展性仍然远远不如 web,也远远不如直接写 Native Code。 Flutter 是一个移动...

    CircleChat:基于SpringBoot和Uni-App框架的圈聊平台的设计与实现.pdf

    CircleChat平台采用Nginx反向代理技术,实现负载均衡和反向代理,提高平台的性能和可扩展性。 知识点8: Uni-App框架 CircleChat平台采用Uni-App框架,实现跨端开发,支持多种平台和设备,提高开发效率和灵活性。 ...

    简单高性能优雅的phpc扩展框架

    5. **扩展性**:C扩展框架允许自定义PHP的内置函数,创建新的数据类型,甚至扩展PHP的语法。 为了充分利用这个框架,开发者需要具备一定的C语言基础,理解PHP的ZEND API,以及熟悉PHP的内部工作原理。在实际开发...

    应用框架的设计与实现:.NET平台.pdf

    6. 应用框架的设计:设计应用框架时需要考虑架构模式(如MVC、MVVM等)、可扩展性、性能、安全性和部署策略等因素。 7. 实现应用框架:在.NET平台中实现框架涉及编写代码、构建项目、进行单元测试和集成测试、以及...

    大数据平台技术框架选型.docx

    大数据平台技术框架选型需要考虑多个方面,包括功能需求、技术架构、商业服务性价比、安全性和可靠性等。同时,需要根据业务需求和技术架构进行选型和集成,确保技术框架的可靠性、可扩展性和可维护性。 四、选型...

Global site tag (gtag.js) - Google Analytics