目前,各种开发框架非常流行,那么,什么是框架(Framework)?框架是如何产生的?为什么要使用框架,以及使用框架能给我们的开发带来什么样的好处呢?
下面就以我们熟悉的web框架为基础来加深对框架的理解。
在不使用Struts或者SpringMVC等web层框架时,一直是由Servlet完成业务逻辑的实现,但是,随着Servlet的增多,web.xml的配置会不断的膨胀,从而变得难以维护。针对这一问题,web框架提出的方案是:提炼一个核心的Servlet覆盖对所有http请求的处理。Spring MVC中是DispatcherServlet,Struts2是一个FilterDispatcher。 这样,web.xml中只需要对核心控制器进行配置就可以了,代码变得简洁且固定了。
提炼出了核心控制器,还需要考虑后面的事情,就是怎样将不同的http请求分发到不同的action/controller对象上去进行业务处理,怎样将对应的处理结果返回到客户端。这一系列的逻辑流程由谁控制,又由谁负责具体实现,这些实现又如何关联到一起?
我们使用框架就是为了不再自己控制这些公共的问题,而将更多的精力放在业务的处理上,那么,这些事情自然是由框架来完成了。
以SpringMVC为例,核心控制器DispatcherServlet将从http请求开始到输出返回结果这期间的每一个处理步骤分派到不同的组件中进行处理,HandlerMaping负责将一个url指定到一个对应的controller上,HandlerMapping负责指定执行 controller中的哪个方法,ViewResolver根据controller中返回的viewName,结合配置文件信息,创建出合适类型的 view对象,而DispatcherServlet这个类本身负责初始化需要的组件以及对组件方法的调用。可以理解为核心控制器规范处理流程,各个组件实现处理流程。
Struts和SpringMVC框架还给我们提供了收集表单数据,完成数据类型转换,表单验证、异常处理等功能,这这细节也为开发人员提供了很大的便利。
从上面通俗的描述,我们应该可以理解到:
框架是为了解决在某个领域开发中所碰到的困境,包含了一系列的最佳实践,作用是解决某个领域的问题。
框架是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例之间交互的方法.
框架是包含了一些通用功能的半成品,开发人员可以在框架的基础上进行二次开发。