最近又挑战了一项不可能的任务:
二十多个个版面,上百个子版面,上千个详细页面的制作加 CMS 系统整合开发,在十天的时间完成。
情绪起起伏伏,时而暴躁、时而沮丧、时而绝望,面对新到的甲方小伙子为了给大领导邀功的急功近利,不断的修改修改再修改,在完成的前一天还在不断提一些修改意见,但是最终还是依赖强大的执行能力、抗压能力,伙伴们的陪伴中还是把项目坚持了下来。
其中前端部分,第二次尝试了用 Grunt 来构建项目,执行语法检查、 js文件的语法检查和压缩、css 文件的压缩;
项目管理部分,五个人依赖码云(git.oschina.net)提供的 git 服务进行管理,相比github.com 而言。更符合国人的习惯,关键是免费用户也可以支持创建私有项目,而 github 仅支持付费用户创建 private 项目;
CMS 部分,再次使用了个人最喜爱的 Umbraco7.4.3进行系统开发,在一次次的开发工作中,对 Umbraco 也越来越了解,越来越喜爱,希望在知其然进一步在志气所以然,继而使用的更好,因此希望把学习工作中关于 Umbraco 的部分,整理记录下来。
虽然或许是多余了,但是在开始一项新的学习之前,最好问自己几个为什么。
一、为什么使用集成式 CMS
CMS,从字面上来说,是 Content Manage System的简写,也就意味着 CMS 实际上指的是某一种技术统称,而不是指某个具体的软件。因此可以说所有以内容管理为主要功能的系统,都可以称之为 CMS。例如一个官网、一个公司内部使用的百科、一个给员工查询信息的 FAQ 等。
其中有很多知名的公开流行系统,例如: Php 平台的 Drupal、Joomla、dedephp、织梦等;.Net 平台的 Sitecore、DNN、orchard、EPIServer、Umbraco 等;java 平台的 AEM 等。
事实上在很多年以前,我对此类系统也是非常抗拒的,理由不外乎常见的:安全性不透明、稳定性不可知、性能缓慢、开发繁琐受限、用户受众不习惯等方面。
当然还有个或许所有程序员心中的通病,总觉得自己做的东西会更好一些,用这类东西难免会被质疑:已经用了 XXX 系统,那你做了什么?
哈哈,这当然是一种认知上的问题。就实际情况来看:
- 安全性:正因为使用的都是国内外知名产品,其中的漏洞、不安全隐患,是由数万甚至数十万从业人员来验证的,远比数人的小团队的研究成果来的可靠安全,发现的安全性问题,也会在很短的时间内得到解决;
- 稳定性:同前,也在有无数的用户与你一同测试,经受考验;
- 性能:这在几年前或许是个问题,但是一方面底层语言效率的提高,以及硬件性能的提高,只要不是二次开发的太糟糕,基本不存在性能的问题。毕竟多数消耗性资源还是已视频、文件、图片等静态资源为主,而这些现在全部可以通过 CDN或者其他云存储方案来解决;
- 开发繁琐:正如不会有人认为浏览器限制网页对系统硬件的调用是错误的一样,在某一个体系平台下,开放的接口、服务类足以实现绝大多数业务应用,再退一步,多数系统均提供开源代码,理论上是可以进行任何开发的;
- 用户受众:这个更不必多说。
而集成系统带来的很多便利性,却是传统个性化定制无法解决的问题:
- 开发的快捷敏捷性,众所周知,之前为什么大家对修改需求是如此的反感,给新闻增加个点击的按钮统计数据,就要先改 DB 结构,再改 Model、再改DAO、改完业务改前端。而多数集成类系统,只要简单的配置一下,即可实现任意数量的内容变化;
- 统一规范性,传统的开发技术在多人合作,多家公司之间存在很严重的交接过度问题,偶尔再使用一些私有的不知名的组件,再没有任何说明文档,将会使工作变得雪上加霜,而通用类系统,基本所有的结构、组件、文档都是标准而通用的,即使在没有任何交接的前提下,也可以相对快速顺滑的过渡;
技术本身应该是一种工具,而不是一个目的,当我们沉迷于技术的优雅、精美、专注而不可自拔时,往往容易忽视了技术的本质是用来提供更好的服务及应用场景。
正如追求汽车的极致速度,可能是可以无限接近于飞机、导弹甚至航空器的,但是如果抛开汽车是用于人类乘坐、代步、便利交通这一前提,就未免镜花水月了。
目前在全球范围内使用的 CMS ,大约有2000多款,而此数目随着时间的推移还是在不断增加的,希望在这片海洋里,可以遇到自己喜欢的,为之沉迷。
二、为什么选择 Umbraco
说了一堆感性的东西,来点理性,实际找点为什么选择 Umbraco的原因。本人无意挑起诸如 XX 是最好的编程语言这类的口水战,仅就个人经历,说说我对集成式 CMS 的理解和认识。
1,Umbraco 非常轻量,他真的非常轻量级,安装文件只有不到30M,运行速度飞快,不会有任何臃肿的感觉;
2,Umbraco 对底层的封装较好,理论上任何不具备.net 平台开发经验的人,也可以进行 Umbraco 的开发;
3,Umbraco 支持 MVC 和 Webform 两种显示方式,推荐使用 MVC,基本可以做到前后端完全分离,分工合作干活不累;
4、支持多站点,理论上一套应用,支持不限个数的多站点;
5、不支持 inner edit 编辑模式,这当然是一个仁者见仁,智者见智的问题,至少从行为上还是将使用与管理分隔开来;
6、提供丰富的 API,理论上可以通过 API 实现对 Umbraco 所有内容的编程化操作,几乎没有去使用源代码的必要;
7、支持 search,实现真正意义上的全站搜索;
8、界面美观,紧凑,富有质感;
9、后台管理,使用AngularJS技术,理论上可以支持任意的功能性扩展;
10,Umbraco 完全免费,还提供源代码,只有视频教程的是收费的,官方文档勉强算是完整。虽然由于血统原因,社区不如 Drupal、Joomla! 等活跃,但是解决日常工作还是没问题的;
如果众多的优势,总能打动你些什么吧^_^
三、Umbraco 适合做什么,不适合做什么
只说好处,不说坏处,是一种耍流氓的行为。
接下来,要捋一捋 Umbraco 的不足之处,而且看起来,短期之内是不大可能改变的。
1、不支持多语言。Umbraco 仅支持管理后台的多语言设置,对于网站前端却没有很好的多语言支持,而是通过多站点来实现的,这一点确实比不上收费软件的 Sitecore 和 EPiServer;
2、不支持多终端自动识别。如果是标准的响应式布局,倒还不是问题,一套前端就可以解决这个问题。但是对于非响应式布局,依然只能通过多站点的方式来实现;
3、相对于 Php 平台来说,文档相对还是太少了,遇到问题,可能解决比较困难。
Umbraco 适合针对内容管理类的网站制作,例如:官网、wiki、电商的商品展示管理部分等;
不适合做的,主要是已应用业务为主的网站,多变的业务模式,不适合此类系统来进行管理。
但是,这也不仅仅是 Umbraco 的问题,而是所有继承类系统所通有的问题。
四、准备工作
在准备学习、开发之前,需要准备响应的工作环境。
运行环境,请参看官方信息获取最新版本要求:https://our.umbraco.org/documentation/Getting-Started/Setup/Requirements/
开发环境,强烈建议安装 VS 进行模板的开发,真的会事半功倍。
除了以上的官方要求,再提供一些个人经验:
1、服务器安装是务必务必给 web user 设置较高的权限,因为安装期间需要往网站根目录及多个子目录下面写入配置文件等,如果权限不足,会提示失败;
2、数据库的 DB 安装,除了 SQL Server的全功能版本(StdDevDC)等,还支持 SQL Server Express 版本,以及 Mysql。如果安装的是SQL Server,务必!务必!务必!不要选择区分大小写,否则安装和后面的使用都会经常出错,具体分析,是一个核心的 get 方法里,大小写写错了,导致如果区分了大小写,会找不到表中的字段。曾经这个错误,困扰了我一周;
3、可以在本地进行开发、部署测试,但是,务必要注意不要使用常规的方式将 iis 附加到 vs 中进行调试,最好是给 IIS 指定独立的目录,然后将项目文件发布进去。原因在于 Umbraco 的模板管理方式会和 vs 管理文件变化的.csproj文件之间产生一些不可预料的问题;
4、如第二段所述,要将 Umbraco 的 IIS 应用程序池设置为集成模式,将所有请求交由 Umbraco 处理。