“框架”与“库”在概念上的差异分析

来源:互联网 发布:英雄杀探宝固定数据 编辑:程序博客网 时间:2024/06/06 09:43

“框架”与“库”在概念上的差异分析

在我过去的工作和学习中大多时间都使用C++语言作为主要编码语言,在学习C++以及使用C++解决问题的过程中经常会使用到STL或诸如Boost、ACE、Qt等第三方库来提高开发效率或使用这些库提供的接口来处理自己并不关注或不擅长的相关基础流程或细节。所以,库提供的丰富、高效的接口和方法使得其在应用软件开发方面显得非常重要和理所当然。

接触框架的概念是自己开始学习Web应用的时候,对于一个习惯使用C/C++处理问题的程序员而言,起初对于Web应用开发的思维模式大致是这样的:

1、实现HttpServer,完成主要协议处理(或者有比较高效的开源库使用);
2、如果自己实现一个简易的HttpServer,使用何种策略关联和调度CGI处理;
3、CGI程序要如何实现,如何管理。

以上是我最初大致的思维过程,但从中不难发现我的聚焦点并没有集中在自己需要实现的真正业务或需求处理上,而是在考虑平台的搭建,显然这种实施策略并不利于快速实现我的真正需求。

Web框架这个名称是我在一个Java程序员的案头书上看的,第一眼看到的疑惑是“框架”这个名词。我并没有实际的JAVA经验,但自己也尝试过Java的一些小程序,并且JAVA与C++同样是面向对象的语言,为什么C++很少提到框架的概念,而像Java,python这样的的解释性语言会如此频繁的使用到框架这个概念,库与框架有什么区别。带着这样的疑惑我学习了Web运用中常用到的两个python框架,Flask和Django。当我使用Flask完成第一个Web运用的Demo时,深深叹了一口气。so cool….

下面我们回到正题来阐述一下库与框架在概念上的异同以及他们间的关系。

1、库,封装高效的算法、数据结构、处理流程、类供用户使用,库并不面向某类型的具体应用,而只提供基础零件。库要求用户将其提供的零件组装到用户自己的程序流程和机构中;
2、框架,封装某类运用的基础处理流程,为该类运用中需要面对的问题提供基本解决策略。由此而形成某类运用程序的基本实现框架,框架提供灵活便利的调用接口或注册机制供用户使用,从而将开发者从繁复的细节和基础流程中解脱,更多的去关注于自身业务逻辑的处理,并能够高效快捷的将相关的处理attach到框架中。框架需要用户将自己实现的逻辑处理过程(部件)嵌入到框架中去;

从我个人的角度来看,“库”要更加抽象于“框架”的概念。一个库如果足够的庞大和综合,其内部就有可能包含若干应用框架。

0 0
原创粉丝点击