热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

探讨Web组件化实现

CMS组件化,简单架构示意图:Web组件使用WebPage+WebAPI的好处:?组件复用(组件条件管理页面复用+获取组件数据API复用)。?组件是分布式的第三方应用,本身高内

CMS组件化,简单架构示意图:

bubuko.com,布布扣

Web组件使用WebPage+WebAPI的好处:

组件复用(组件条件管理页面复用+获取组件数据API复用)。

组件是分布式的第三方应用,本身高内聚、组件之间松耦合,可以理解为独立的子系统。

组件使用WebAPI,提供REST风格的WebService,轻量级,对客户端的要求也更少。

组件可以单独开发,单独测试,高度封装,可以区分不同环境,其它组件完全可以不做任何测试。

组件热插拔,组件易替换,可扩展性强,不会有dll相互依赖、影响,dll管理等一系列问题去处理。

.net/java/php/>都可以开发组件,可多元化发展。

组件都有自己独立的版本,组件可以独立编译,独立打包和部署,当某个组件有变化的时候,可以单独对变化的组件进行版本升级,单独对变化组件进行部署。

组件数据的生成会有特定的环境,组件自治,组件实现方式自由发挥。

可以单独做测试,可以独立部署、运行、调试等。

可以整合不同的开发平台(.net/java/php/...)开发出来的WEB组件。

甚至组件可以独立出去,由第三方去开发,维护,CMS平台可以管理这些组件,热插拔这些组件。

性能使用分布式的组件应该更好,如果组件都集中在CMS平台去统一调用数据,压力应该会更大。万一某个组件出故障而不会影响到整个页面展现。

组件数据也可以通过定时策略去拉取完成,根据组件配置。

为了简化组件部署,
CMS
平台可以准备好几类组件的虚拟目录去Host组件应用,也不用每个组件都是一个虚拟目录。【使用Restful风格架构的WebAPI暴露接口,更轻量化】

 

Web组件使用DLL的问题:

dll>管理麻烦,需要考虑集群、存储、依赖项dll、验证、配置、部署、问题排查维护、下线等。

dll>限制了只能.net去开发,很难整合不同的开发平台(.net/java/php/...)开发出来的组件。

dll>限制了组件的实现方式,有较大的约束,不能自由发挥,影响生产力。

dll>方式的组件条件页面较难管理和生成。

dll>对多种环境配置、日志、调试等带来很多麻烦。

dll>没有完全隔离,控制不好会影响到其他组件,而且怎么做隔离,有技术壁垒和风险。

dll>方式对开发成本要求高,有技术风险。

组件有依赖的配置,依赖dll
,依赖的环境等很多变化因素,dll很难去完全覆盖及支持到。

组件条件管理页面可能是很多组件公用的,不好分开。

获取组件数据API可能是很多组件公用的,不好分开。

dll>区分不同环境比较麻烦,对开发,测试都很难控制。

dll>依赖部署环境,若一个组件不想使用此环境,比如现在是II7.5+.net4.0集成环境应用程序池,如果有个组件要.net4.5开发的,或者需要.net4.0经典环境应用程序池,不能兼容等不好控制问题。

dll>组件数据的生成会有特定的环境,平台自治+组件dll支持,组件调用出问题责任不明确。

dll>很难做测试,不能独立运行。

 




bubuko.com,布布扣

 

组件如何实现示意图:




bubuko.com,布布扣


bubuko.com,布布扣


bubuko.com,布布扣

 

组件数据可以使用动态类型:



bubuko.com,布布扣

 

可以使用开源的Razor模板解析引擎,参考:Razor
Generator

原文:http://www.yifupaizi.com/home/news148.html ,转载请注明来源。




推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
author-avatar
Mr尘世美_925
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有