我们的产品底层是一个平台,提供基础业务,以及扩展API。在平台之上,通过个性化配置,和定制开发,得到最终的产品
本文不谈配置的事,只说说定制
平台发布到不同的项目之后,各项目自行定制。由于不同的项目需求差异较大,有时候平台提供的扩展API无法满足,项目就直接修改或增加平台的代码。但是这样就有个问题,平台就不能随意升级了,因为项目对平台代码的修改不可控,平台升级之后,很可能与定制的代码冲突
延伸一下,我想到其实用到的各种开源框架也有这个情况
以struts2为例,把struts2也看做一个平台。初级的开发者,只会用到平台默认的功能。高级的开发者,会对平台进行扩展,比如自定义Interceptor、Validator等
这种扩展,都是基于平台事先设计开放的API来进行的,是“合理的扩展”,或者说是“预期的扩展”。在struts2升级的时候,只要有意识地保持这些API的稳定,那么用户自定义的扩展就不会受到影响
另一种扩展,则是在struts2没有“预料”到的地方,直接修改了平台的源代码,那么这种扩展,就跟本文前面提到的现象一样,是一种“意外的扩展”,实际上不叫扩展,而是"hack",或者说“侵入”,是不鼓励的,因为框架升级以后,这些扩展很可能就冲突了。有时用户被逼无奈,必须做出这种选择。如果这种情况很多的话,那么可以认为框架的“扩展性”是比较差的
所以一个框架,应该在设计时,事先识别出扩展点,开放相应的API,以达到较好的扩展性。在升级时,也要注意向下兼容,尽量不要修改现有的接口
顺便也想通了一个问题,为什么很多开源框架都提供user guide和developer reference:
user指的是普通用户,不做扩展
developer指的是高级用户,会对现有框架做扩展,甚至修改,有时就是框架的作者
当然,这2类人群,实际上都是程序员
分享到:
相关推荐
在"新一代js与native交互框架具有安全简单高可扩展性"这一主题下,我们可以深入探讨以下几个关键知识点: 1. **JavaScriptBridge**:JavaScriptBridge是实现JavaScript与Native通信的基础,它充当了两者之间的桥梁...
综上所述,这个Java通用网络框架具备强大的扩展性和兼容性,涵盖了网络通信的基本需求,如异步处理、数据压缩、安全性以及与流行框架如Spring和JMX的集成。开发者可以利用这些特性快速构建高效、可靠的网络应用。...
通过这些优化措施,可以有效提升集中式集群资源调度框架的可扩展性和性能,使其更好地服务于大规模的大数据处理场景。然而,任何优化都必须权衡复杂性、性能和稳定性,因此需要根据实际应用场景进行定制化设计。
2. 兼容性:确保.NET组件与MFC应用程序的兼容性,特别是考虑到不同的版本和平台。 3. 错误处理:处理.NET异常和MFC错误机制之间的差异,确保程序的健壮性。 4. 学习曲线:掌握.NET和MFC的结合使用可能需要额外的...
同时,需要考虑到技术框架的简单性和广泛性,如是否支持广泛使用的开源标准、是否开源、是否易于更改或扩展等。 此外,需要注意到陷阱,如某些大数据套件采用数据驱动的付费方式,需要为自己处理的每个数据行付费。...
zino是 Rust 中可组合应用程序的下一代框架 它强调简单性、可扩展性和生产力。开箱即用的功能,可快速开发应用程序。最小的设计、可组合的架构和高级抽象。采用 API 优先的开放标准进行开发。采用实用惯例以获得最佳...
本源码是基于Java开发的SOFARPC高可扩展性高性能Java RPC框架设计,包含1466个文件,其中包括1202个....该项目是一个生产级的Java RPC框架,具有高可扩展性和高性能特点,在蚂蚁金服已经经历了十多年及五代版本的发展。
这提高了系统的灵活性和响应速度,尤其适用于需要频繁更新功能的场景。 - **SpringBoot基础**:此框架建立在SpringBoot之上,利用其自动化配置、依赖管理和微服务特性,简化了插件的创建和管理。 2. **设计原理** ...
vs-mef, Visual Studio 使用的托管扩展性框架( MEF ) 实现 ( 管理扩展性框架工作室的视觉风格) 特性一个新的,更快的主机,为你现有的MEF部件重用已经使用的MEF属性ExportFactory<T> 支持创建具有作用域生命周期的子...
一个扩展性很强的Java通用网络框架
- 在实际项目开发过程中,SSH框架可能在性能、安全性、扩展性等方面存在一定的不足,需要通过集成其他技术来弥补。 3. SSH框架的扩展与集成技术: - 通过集成J2EE相关技术,如Spring MVC、Spring Security、...
缺点是对开发人员要求较高,不是懂点 web 技术就行的,当官方封装的控件、API 无法满足需求时就必然需要懂一些 native 的东西去扩展,扩展性仍然远远不如 web,也远远不如直接写 Native Code。 Flutter 是一个移动...
CircleChat平台采用Nginx反向代理技术,实现负载均衡和反向代理,提高平台的性能和可扩展性。 知识点8: Uni-App框架 CircleChat平台采用Uni-App框架,实现跨端开发,支持多种平台和设备,提高开发效率和灵活性。 ...
5. **扩展性**:C扩展框架允许自定义PHP的内置函数,创建新的数据类型,甚至扩展PHP的语法。 为了充分利用这个框架,开发者需要具备一定的C语言基础,理解PHP的ZEND API,以及熟悉PHP的内部工作原理。在实际开发...
6. 应用框架的设计:设计应用框架时需要考虑架构模式(如MVC、MVVM等)、可扩展性、性能、安全性和部署策略等因素。 7. 实现应用框架:在.NET平台中实现框架涉及编写代码、构建项目、进行单元测试和集成测试、以及...
大数据平台技术框架选型需要考虑多个方面,包括功能需求、技术架构、商业服务性价比、安全性和可靠性等。同时,需要根据业务需求和技术架构进行选型和集成,确保技术框架的可靠性、可扩展性和可维护性。 四、选型...
"数字政府架构框架 参考模型 团体标准" 以下是从给定的文件中生成的相关知识点: 数字政府架构框架是指政府机构...该架构框架具有统一性、可扩展性和灵活性等特点,可以应用于智慧城市建设和政府机构信息化建设中。
网易同事 周永昶 基于node.js的高可扩展游戏服务器框架 设计与实现 Node.js与游戏服务器; 游戏服务器框架的可扩展性和设计,以及pomelo的框架
在实际项目开发中,例如使用"MyQEE PHP开源优越的扩展性多项目开发框架.zip"中的源码,开发者可以快速搭建项目结构,通过预设的模版和组件快速生成基础代码。通过阅读和理解框架源码,可以深入理解PHP编程的最佳实践...