几种对架构与框架的理解

(一)

    架构、框架、模式是一种从大到小的关系,也是一种组合关系。
    架构一般针对一个行业或一类应用,是技术和应用完美的结合。
    框架因为比较小,很多表现为中间件,框架一般是从技术角度解决同类问题,例如J道数据增删改查框架就解决了所有数据库系统中大量数据增删改查的功能开发,框架是从技术的横切面去解决实际应用问题。
    模式则更小了,越小越灵活,可重用的范围更广。
    一个框架可能使用了多个模式,而一个架构有可能应用了多个框架,这样一个大型系统的设计基本从主骨干到骨架基本能够被设计者考虑设计到,也可以想见,一个系统被细化成了很多工作量,例如一个部分细化到工厂模式,那么就可以要求程序员实现工厂模式的代码即可。

 

(二)

    看一下架构(Architecture)和框架(Framework)的定义:
    Architecture:
      1. An underlying base or foundation especially for an organization or a system.
      2. The art and science of designing and erecting buildings.
      3. A style and method of design and construction:
      4. Orderly arrangement of parts; structure:
    Framework:
      1. A structure for supporting or enclosing something else, especially a skeletal support used as the basis for something being constructed.
      2. A fundamental structure, as for a written work or a system of ideas.

    从以上的定义,应该可以这样理解:
        架构是宏观上的。定义构成一个系统的各个组成部分。比如基于J2EE的三层架构:WEB层,应用中间层及数据层,从宏观上定义系统的各个组成部分。
        框架是具体化的架构。用于细化整个架构或某一组成部分。如Struts是定义WEB层的框架。
    具体到一个应用开发我们首先定义架构:基于.NET or J2EE,三层架构还是Client/Server. 然后基于选定的架构,确立系统框架。框架又可由多个design pattern实现
    所以架构和框架一个广义,一个具体,共存于一个系统中

 

(三)

    简单说来,框架应当包含设计重用和代码重用两层意思,并且提供一些扩展点(书上说得好象叫热点)及使用说明(cookbook)来实现框架的使用。比如继承一个SessionBean类并实现自己的业务逻辑,我们就是在使用J2EE框架。Struts也是相同,它定义并实现了Web层MVC的模式,ActionServlet类,Action类等之间的关系(设计重用及代码重用),我们通过继承Action和FormBean类来使用Struts.
    模式简单说来就是一些Best Practice,他代表了一种设计重用。

(四)

    架构定义了系统是如何组织的,并不关心具体的问题域
    而框架是架构在某一问题域的具体化,更关注的是可重用性。在该问题域内,只需要扩展框架的可扩展部分,就可以适应新的变化。比如说,MVC是一个架构,而Struts是一个MVC框架。

 

 

(五)

 

  图2-7    架构和框架的区别

 
一图胜千言,图 2-7切中肯綮地点出了架构和框架的区别。一句话,框架是软件,架构不是软件。
框架是一种特殊的软件,它并不能提供完整无缺的解决方案,而是为你构建解决方案提供良好的基础。框架是半成品。典型地,框架是系统或子系统的半成品;框架中的服务可以被最终应用直接调用,而框架中的扩展点是供应用开发人员定制的“可变化点”。
软件架构不是软件,而是关于软件如何设计的重要决策。软件架构决策涉及到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中;当然,引入软件框架之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。或许,人们常把架构和框架混为一谈的原因就在于此吧。
框架是一个可实例化的、部分完成的软件系统或子系统,它为一组系统或子系统定义了架构,并提供了构造系统的基本构造块,还为实现特定功能定义了可调整点。在面向对象环境中,框架由抽象类和具体类组成。(A framework is a partially complete software (sub-) system that is intended to be instantiated. It defines the architecture for a family of (sub-) systems and provides the basic building blocks to create them. It also defines the places where adaptations for specific functionality should be made. In an object-oriented environment a framework consists of abstract and concrete classes.)

 

框架是具体的,直接限制(帮助)了程序的写法--战术
        架构是高远的,决定了更大、更高方面的取舍、做法--战略
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Clean Architecture(清洁架构)是由Robert C. Martin提出的一种软件架构模式,旨在实现独立于框架、数据库和UI的可测试和可扩展的应用程序。Clean Architecture 的设计目标是使软件更加灵活、可维护和可扩展,同时降低代码的耦合度。 Clean Architecture的核心思想是将应用程序分为不同的层级,每个层级都有不同的职责和功能。它将应用程序分为以下几个层级: 1. 实体层(Entity):实体层包含应用程序的核心业务逻辑,它不依赖于任何外部库或框架。在该层级中,定义应用程序的业务对象和操作。实体层一般是最稳定的层级,因为它们不会受到外部库或框架的影响。 2. 用例层(Use Case):用例层包含应用程序的用例和业务流程,它负责与实体层进行交互,并根据业务需求执行特定的操作。在该层级中,定义用例和业务流程,同时将核心业务逻辑从外部库或框架中解耦出来。 3. 接口适配器层(Interface Adapter):接口适配器层包含应用程序与外部世界的接口,例如Web API、数据库等。在该层级中,定义与外部世界的接口,并将其转换为内部用例层所需的格式。 4. 框架和驱动层(Framework and Driver):框架和驱动层包含与框架和库相关的代码。在该层级中,定义与特定框架或库相关的代码,如UI框架、数据库驱动程序等。 Clean Architecture的优点是提高了代码的可测试性、可维护性和可扩展性。由于每个层级都有不同的职责和功能,因此更容易进行单元测试和功能测试。同时,它使应用程序更加灵活,可以轻松地更换框架或库,而不会对其他层级产生影响。它还提高了代码的可读性和可维护性,使开发人员更容易理解和修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值