`
icedblog
  • 浏览: 524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于组件中间件的前端架构

阅读更多

在现在的软件设计上,基本上采用的都是分布式系统,前端尤其突出,回忆一下,我们将CSS、JS独立到不同的CDN或独立静态池上,我 们将图片放到专属的图片服务器上,这都是分布式系统的体现。我们的交互界面,我们的后端程序乃至数据库都存储在各个不同的服务器上,最终,通过计算机网络 将它们连接起来。

 

因为采用了分布式系统,前端开发中也遇到了分布式系统本身的问题,比如说分布式系统节点的广泛带来了复杂的部署环境,比如分布系统组件的协同工作会因延迟、过载、甚至失效而带来的不稳定性。

 

以往,我们在前端开发过程中,为了避免这些分布式系统所带来的问题,采用了各种方法,比如下图中,某网站采用将js直接写入页面中的方式避免上述问题。(当然我也可以认为这段代码是开发人员偷懒直接复制进去的, XD)

 

view-source:http://news.sina.com.cn/c/2010-11-15/191121475156.shtml

 

让我们试想一下,某天下图中的接口地址变更,开发人员需要更新数万页面以保证页面工作正常,即便是拥有了各种分发机制,甚至使用重写或者301转向,也是一种维护成本高的工作方式。

 

为了解决分布式系统所带来的问题,各公司都引入了不同的解决方案,最典型的解决方案就是中间件

 

在国内的各大主流网站中,我们不难发现类似下面的代码,从而从不同的网络节点中获取到对应的组件

 

 

上述代码是一种直接写入N个SCRIPT标签的变体,他的本质是通过getFileVesion()获取参数数组中的路径,循环建立SCRIPT/LINK对象后再插入到页面中,我们称呼这种中间件为对象计算中间件 ,它给我们的开发过程带来很多便利,前端工程师采用面向对象的方式编写各种组件来降低整个开发流程的复杂度,并且可以灵活有效的进行分发以提供可重用 的功能。

 

虽然分布式对象计算中间件成熟稳定,但它也存在着一些不足,例如,当我某一个对象/组件依赖于其它对象/组件时,这两个对象需要明确对方已经载入, 因此开发人员需要设计代码来实现这种对象与对象,组件与组件之间的关联,开发人员需要判断这些组件是否已经loadReady,或者组件内部需要判断他需 要的对象是否已经加载。

 

与此同时,分布式计算中间件没有提供给我们一个标准化的方式去启用不同的组件,当我们需要停用旧的组件、增加新的组件时,修改原有组件就需要手动的 去维护要增加的内容。例如,上图中,当我需要增加一个获取cookie的方法时,也许我就要增加xxxx/js/getCookie.js,甚至,我还要 给他提供一个版本号来标识版本以及清除分布式系统的缓存。

 

那么为了解决计算中间件的上的缺陷,设计人员开发出一种称为组件中间件 的技术,组件中间件通过一个组件对象来实现不同组件的调用以及管理。

 

组件中间件中,组件是功能实现的实体,他提供了一套方法以及连接点,以便不同的组件之间互相协助。方法可以是require也可以是add,甚至是 when i needed … download,连接点就是需要载入组件的路径,在这种组件架构中,定义良好的关联关系存在于组件中间件与需要载入的对象中间,因为这种关系的存在,所 以,我们可以通过组件定义、构造、加载、剔除所需要的对象,而对象也可以被要求预载入,触发事件时载入 等等。

 

同时,组件中间件提供了对接入点的预定义,我们可以通过配置组件来达到加载不同服务节点,不同版本的对象。

 

虽然中间件拥有很多益处,但对于分布式系统而言,中间件也有不可靠的地方,当系统宕机时,当网络缓慢甚至断开时,中间件就无法保证所需要的对象被加载,因此在中间件的设计上也需要考虑各种可能出现的错误,并做好容错机制保证前端的页面的呈现。

分享到:
评论

相关推荐

    哈工大 软件架构与中间件 单面A4开卷笔记

    表示层的软件架构技术主要关注用户体验,包括视觉习惯、异步内容加载、自适应设计和前端组件化,这些技术有助于构建响应式的用户界面。例如,Struts MVC框架在JavaEE开发中,通过配置文件、控制器、模型和视图的分离...

    基于Java三层架构的网络文件传输系统的研究与实现.pdf

    ### 基于Java三层架构的网络文件传输系统的关键知识点 #### 1. Java三层架构的概念及特点 - **概念**:Java三层架构是一种模块化的软件设计思想,它将整个业务系统划分为三个独立的层次:界面交互层、业务逻辑层和...

    react-一个基于ReactRedux的前端系统利用Antd组件库来实现

    在本项目中,我们主要探讨的是一个基于React和Redux的前端系统,该系统利用了Ant Design(Antd)组件库来构建用户界面。这个系统可能是为了实现高效且易维护的Web应用而设计的,因为React、Redux和Antd都是目前前端...

    基于Spring Cloud微服务架构的openapi设计与实现源码

    该项目为基于Spring Cloud微服务架构的openapi设计与实现源码,共计503个文件。其中,包含95个JavaScript文件、89个Java源文件、85个PNG图像文件、84个GIF图像文件、73个CSS文件、17个XML配置文件、14个HTML文件、8...

    泛微E10售前技术资料 E10技术架构介绍

    E10技术架构的前端技术架构包括JS前端UI组件、平台引擎、数据规则、流程过程、页面门户、数据仓库、表单引擎、全文检索、外部对接、ESB集成、云桥开放平台、统一待办、统一认证、集成登陆、中台服务入口等方面。...

    基于分布式集群架构下的SSM电商购物平台设计.pdf

    本篇文章主要介绍了基于分布式集群架构下的SSM(Spring、SpringMVC、Mybatis)电商购物平台的设计与实现。在当今的电商行业中,随着用户量和交易量的激增,传统的单机架构已经无法满足高并发和大数据量的处理需求,...

    基于ActiveMQ的消息总线逻辑与物理架构设计详解

    在实施基于ActiveMQ的消息总线逻辑与物理架构设计时,需要注意消息中间件的核心功能实现、SOA设计原则的遵循、企业应用系统的解耦与服务共享、前端架构设计、消息流转机制以及多种消息队列技术的选择与对比。...

    基于流批一体架构的埋点系统的设计与实现

    基于流批一体架构的埋点系统主要由以下几个组件构成: 1. **数据采集模块**:负责收集用户的行为数据。 2. **数据清洗与加工模块**:对原始数据进行预处理,如去除无效数据、填充缺失值等。 3. **数据存储模块**:将...

    基于Go-Zero + Ant Design Pro的前后端分离微服务管理系统的前端模

    Ant Design Pro是基于React的UI组件库,它是Ant Design的高级封装,专为中大型企业级后台系统设计。Ant Design Pro提供了丰富的预设样式、布局和组件,如表格、表单、按钮、导航等,可以帮助开发者快速构建美观且...

    金蝶中间件-全球技术领先的企业基础架构软件公司

    金蝶中间件作为全球技术领先的企业基础架构软件公司,在IT行业尤其是企业级软件领域拥有显著的地位。本文将深入探讨金蝶中间件的核心竞争力、技术优势以及其对JSF(JavaServer Faces)技术的见解和应用,同时分析JSF...

    使用基于事件的微服务架构构建的全堆栈票务Web应用程序.zip

    本项目“使用基于事件的微服务架构构建的全堆栈票务Web应用程序”深入展示了如何利用先进的技术栈来创建这样一个系统。其中,Vue.js作为前端框架,为用户提供了丰富的交互体验,而事件驱动的微服务架构则确保了系统...

    基于消息中间件的分布式查询系统* (2005年)

    在三层架构中,中间层作为连接前端展示层与后端数据层的关键环节,其设计对于提高系统性能、可扩展性和可维护性至关重要。 #### 三层架构与中间层的重要性 三层架构是一种常见的软件系统设计模式,它将应用程序...

    基于vue-element-admin开发的cms-rbac权限管理系统后台前端源码

    虽然本项目主要关注前端,但了解Laravel对于理解前后端交互和整个系统的架构是有帮助的。 【Casbin】Casbin是一个强大的、跨平台的访问控制框架,支持多种访问控制模型,如RBAC、ABAC(Attribute-Based Access ...

    基于云计算平台的分布式架构设计1

    同时,硬件与软件的解耦,以及数据、中间件和前端的解耦,使得系统组件可以独立升级和优化,提升了系统的灵活性和可维护性。 分布式架构在云计算平台上的实施还体现在以下几个关键特性: 1. **高可用性**:分布式...

    WAS中间件服务器介绍.docx

    WAS中间件服务器介绍 ...WAS中间件服务器和WEB服务器软件都是重要的技术组件,它们为应用程序提供了稳定、高效和安全的运行环境。在数字化时代,WAS中间件服务器和WEB服务器软件将继续发挥其重要作用。

    Tuxedo中间件培训教程

    这种架构允许开发人员将用户界面和业务逻辑分离,使得开发人员可以专注于业务逻辑的实现,而用户界面则可以通过各种前端开发工具进行快速创建。此外,Tuxedo负责处理不同组件间的通信、异构平台的数据转换、事务管理...

    基于Vue和Egg前端分离的简易网上订餐系统源码.zip

    而Egg.js则是阿里云推出的企业级Node.js应用框架,它为开发者提供了强大的中间件机制、易于扩展的架构以及完善的开发工具链,适用于大型企业级后端服务的开发。 在Vue.js项目中,通常会采用单文件组件(Single File...

Global site tag (gtag.js) - Google Analytics