术语“框架”对不同的人,含义不同。
政治家用这个词描述某些政策和解决问题的某些措施。
建筑师用这个词描述建筑物的骨架或结构。
软件架构师用这个词描述有助于软件应用开发的一组可重用的设计和代码。
应用框架为开发者提供了结构和模板,开发者以此为基线(baseline)来构建他们的应用系统。这样一个框架通常会包含抽象类(abstract classes)、具体类(concrete classes)和类之间的预定义交互(predefined interaction)。开发者在框架之上构建应用,通过重用由框架提供的代码和设计,减小了开发工作量。
Java和.NET都是旨在支持所有业务类型的应用系统的通用框架,因此,它们不能包含任何业务领域相关的类和设计。
IBM(后来收购了Taligent)也开发了自己的面向业务领域的框架,被称为San Francisco项目。它是用Java开发的,由针对不同业务领域的应用框架组成,例如,订单管理、仓库管理、财务会计核算(general ledger management)等。与Java和.NET这些通用框架不同,San Francisco框架是专门为特定业务领域而设计的。
使用应用框架有五大优点:模块化(modularity)、可重用性(reusability)、可扩展性(extensibility)、简单性(simplicity)和可维护性(maintainability)。
框架本身有了很高的可扩展性,就能适应更多类型的业务应用。然而,在创建框架时,其可扩展性总应根据它将支持的应用的设想和上下文来决定。框架的可扩展性越高,使用框架的开发者需要编写的代码就越多,他们需要了解的框架机制细节也越多,这样就会降低开发效率。
开发应用框架并非易事,也不廉价。为了开发出高度可用和可扩展的框架,你需要首先找到合适的人选——他们不但是业务领域的专家,还是软件设计和开发的专家。上述两项技能缺一不可:没有业务知识,就无法开发特定业务领域框架层(business-domain-specific framework layer),应用开发人员要依靠该层弥补他们业务领域知识的欠缺;没有软件开发技术知识,就无法将框架思想贯彻到具体的框架代码中去,会导致应用开发人员无法重用和扩展这些代码。开发高质量框架,找到业务领域和软件开发的双料专家是第一关。
框架的设计者必须决定:应用开发者如何从框架提供的服务和架构中获益;如何去抽象应用中特定的通用逻辑,以使开发者通过框架重用这些逻辑;如何在框架的恰当处提供扩展点(hot spot),以使开发者能插入代码获得特定结果。
框架的开发生命周期和常规应用的相似,要经过一系列迭代周期(iteration),即反复地进行分析、设计、实现和稳定工作。框架开发是非常典型的进化型工作。
框架的成本。可能使用框架节约的成本还没有开发框架投入的成本多。(有时候编码可以写个工具生成,但是写工具的成本和节约的成本也需要考虑。)
政治家用这个词描述某些政策和解决问题的某些措施。
建筑师用这个词描述建筑物的骨架或结构。
软件架构师用这个词描述有助于软件应用开发的一组可重用的设计和代码。
应用框架为开发者提供了结构和模板,开发者以此为基线(baseline)来构建他们的应用系统。这样一个框架通常会包含抽象类(abstract classes)、具体类(concrete classes)和类之间的预定义交互(predefined interaction)。开发者在框架之上构建应用,通过重用由框架提供的代码和设计,减小了开发工作量。
Java和.NET都是旨在支持所有业务类型的应用系统的通用框架,因此,它们不能包含任何业务领域相关的类和设计。
IBM(后来收购了Taligent)也开发了自己的面向业务领域的框架,被称为San Francisco项目。它是用Java开发的,由针对不同业务领域的应用框架组成,例如,订单管理、仓库管理、财务会计核算(general ledger management)等。与Java和.NET这些通用框架不同,San Francisco框架是专门为特定业务领域而设计的。
使用应用框架有五大优点:模块化(modularity)、可重用性(reusability)、可扩展性(extensibility)、简单性(simplicity)和可维护性(maintainability)。
框架本身有了很高的可扩展性,就能适应更多类型的业务应用。然而,在创建框架时,其可扩展性总应根据它将支持的应用的设想和上下文来决定。框架的可扩展性越高,使用框架的开发者需要编写的代码就越多,他们需要了解的框架机制细节也越多,这样就会降低开发效率。
开发应用框架并非易事,也不廉价。为了开发出高度可用和可扩展的框架,你需要首先找到合适的人选——他们不但是业务领域的专家,还是软件设计和开发的专家。上述两项技能缺一不可:没有业务知识,就无法开发特定业务领域框架层(business-domain-specific framework layer),应用开发人员要依靠该层弥补他们业务领域知识的欠缺;没有软件开发技术知识,就无法将框架思想贯彻到具体的框架代码中去,会导致应用开发人员无法重用和扩展这些代码。开发高质量框架,找到业务领域和软件开发的双料专家是第一关。
框架的设计者必须决定:应用开发者如何从框架提供的服务和架构中获益;如何去抽象应用中特定的通用逻辑,以使开发者通过框架重用这些逻辑;如何在框架的恰当处提供扩展点(hot spot),以使开发者能插入代码获得特定结果。
框架的开发生命周期和常规应用的相似,要经过一系列迭代周期(iteration),即反复地进行分析、设计、实现和稳定工作。框架开发是非常典型的进化型工作。
框架的成本。可能使用框架节约的成本还没有开发框架投入的成本多。(有时候编码可以写个工具生成,但是写工具的成本和节约的成本也需要考虑。)