探讨Web组件化的实现
CMS组件化,简单架构示意图:

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很难做测试,不能独立运行。

组件如何实现示意图:



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

可以使用开源的Razor模板解析引擎,参考:Razor Generator
原文:http://www.yifupaizi.com/home/news148.html ,转载请注明来源。
探讨Web组件化的实现的更多相关文章
- atitit. web组件化原理与设计
atitit. web组件化原理与设计 1. Web Components提供了一种组件化的推荐方式,具体来说,就是:1 2. 组件化的本质目的并不一定是要为了可复用,而是提升可维护性. 不具有复用 ...
- Lightning Web Components 来自salesforce 的web 组件化解决方案
Lightning Web Components 是一个轻量,快速,企业级别的web 组件化解决方案,官方网站也提供了很全的文档 对于我们学习使用还是很方便的,同时我们也可以方便的学习了解salesf ...
- 漫谈Nuclear Web组件化入门篇
目前来看,团队内部前端项目已全面实施组件化开发.组件化的好处太多,如:按需加载.可复用.易维护.可扩展.少挖坑.不改组件代码直接切成服务器端渲染(如Nuclear组件化可以做到,大家叫同构)... 怎 ...
- Sass与Web组件化相关的功能
Sass https://en.wikipedia.org/wiki/Sass_(stylesheet_language) Sass (Syntactically Awesome Stylesheet ...
- 2017年试试Web组件化框架Omi
Open and modern framework for building user interfaces. Omi的Github地址https://github.com/AlloyTeam/omi ...
- Omi v1.0震撼发布 - 令人窒息的Web组件化框架
原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...
- Omi v1.0震撼发布 - 开放现代的Web组件化框架
原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...
- web组件化开发第一天
技术选型 html5 css3 jq 应用的插件 FullPage.js 一.建一个测试页面,测试静态的功能 <!DOCTYPE html> <html> <head&g ...
- Android业务组件化之现状分析与探讨
前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一 ...
随机推荐
- AS3.0的动态类和密封类
动态类:生成的实例可以在运行时动态添加属性和方法.类名前有dynamic就是动态类 密封类:生成的实例不可以在运行时动态添加属性和方法
- 微信公众号-加解密数据demo坑
demo里面的MsgSignature作为url参数一部分了,demo也不更新下 坑爹的微信! 解密信息部分 include_once "wxBizMsgCrypt.php"; $ ...
- PHP数组操作——获取数组最后一个值的方法
php开发过程中,可能经常需要对取出的数组要获取数组的最后健或值.在这里总结了三个方法,并且跟据他们三个方法在一些情况下如何使用的条件限制进行了说明. <?php $array=array(1, ...
- JS获取IP、MAC和主机名的五种方法
javascript获取客户端IP的小程序,下面的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,喜欢的朋友可以收藏下.今天在搞JS(javascript)获取客户端IP的小程序,上 ...
- 2016年1月编程语言排行榜:Java荣获2015年度冠军
Java因于2015年人气增幅最大(+ 5.94%),故获得2015年的TIOBE指数的编程语言奖,同时成为15年年度冠军, Visual Basic.NET(+ 1.51%)和Python(+ 1. ...
- PHP javascript 值互相引用(不用刷新页面)
PHP javascript 值互相引用的问题 昨天通过EMAIL给一些公司投了简历,希望他们能给我一份工作,今天其中一家公司的人给我打电话,大意是要我做一点东西(与AJAX有关) 给他们看,我听 ...
- EntityFramework动态组合多排序字段
前言:在使用EF当中,肯定会遇到动态查询的需求,建立一个公共调用的动态组合表达式查询也是必不可少的,以下是建立动态组合多排序字段做个记录,供以后调用 1.建立一个结构,用于多个排序字段组合,这个结构体 ...
- C#在声明对象时对其赋值的一种方式
今天学会一种更方便的赋值方式,如下, 同时存档一个通过 打开对话框 获取地址的方式. private string GetSaveAsPathXls(string defaultFileName) { ...
- hdu 4454 Stealing a Cake
简单的计算几何: 可以把0-2*pi分成几千份,然后找出最小的: 也可以用三分: #include<cstdio> #include<cmath> #include<al ...
- UVA 10048 Audiophobia 任意两点的路径上最大的边
题目是要求任意给定两点的的路径上最大的边,最终输出这些最大边中最小的值,也就是求一条路径使得这条路径上最大的边在所有连通两点的路径中最短.根据Floyd—Warshall算法改造一下就行了.dp[i] ...