symfony框架

一个成功的组织为什么要抛弃一个拥有活跃的开发人员社区的优秀开源Web开发平台? 这就是我要讲的故事。

如果您不熟悉eZ Systems的名称,请允许我们自我介绍:eZ是商业开源软件供应商。 我们提供了称为eZ Publish的内容管理系统(CMS)和平台,该平台不久将称为eZ Platform。 eZ作为数字业务的基础,在我们的开源CMS平台之上提供增值解决方案。

既然我们已经摆脱了闲聊,那么让我们开始吧:

在2011年左右,eZ决定“重新平台化”。 但是,这是什么意思?

这意味着重写软件的核心。 我们的目标是改变其工作方式以改进它。 本质上,我们甚至必须在外观上进行改进之前,必须仔细研究并加强产品质量。

让我首先描述当时的情况。 在2011年Spring,eZ Publish达到了4.5版。 这是从3.x一代开始的漫长系列中的最后一个,每个系列都基于2002年首次引入的相同内核,相同体系结构和相同代码库。

此时,eZ Publish非常稳定。 它以其强大的可扩展性,核心概念和代码质量而闻名。 与其他基于PHP的开源软件相比,它具有更“企业化”的形象。 这些概念非常先进,并且具有广泛的企业趋势。 它也为开发人员通过自定义和扩展它奠定了良好的基础。

这些功能无疑是eZ Publish成功的关键因素。 即使不是完美的,代码库也显示出了很高的质量,这对于PHP应用程序仍然是不寻常的。

它为开发人员提供了很多可以使用的功能:一个相当高级的扩展系统,一个Web框架和一个模板引擎。 eZ绝对处于基于PHP的Web应用程序平台和框架的前沿。

然后我们决定重新平台。

为什么? 因为我们的首要目标之一是重新开发核心业务逻辑(内容存储库及其API),因为现有版本的体系结构无法满足将来的可扩展性和云基​​础架构需求。

在第一个目标的推动下,另一个主要目标是扔掉我们的Web框架(模板引擎,控制器,扩展系统,缓存系统等),并用Symfony框架的完整堆栈替换它。 与某些其他系统一样,完全堆叠与部分使用Symfony框架完全不同,但这是另一回事了。

扔掉行之有效的东西真是疯狂,你不觉得吗? 当时,它引起了很多注意,但是时间已经过去,我们对我们的决定感到非常满意。

转移焦点

专注是第一位的原因。 每个公司,特别是基于产品的公司,都可以通过将活动集中在核心上来获得很多收益。

Web框架与内容管理系统相当分离。 它也是一种商品,成为商品没有任何负面影响-成功的商业都围绕商品。

当您可以专注于第二个框架时,就没有理由同时开发Web框架和CMS,这确实是我们的产品。

eZ Publish 3和4出现在一个没有强大的Web框架的时期,尤其是在PHP堆栈上,因此我们有自己的历史理由。 但是正如鲍勃·迪伦(Bob Dylan)所说,“时代在改变”。 十年后,情况就不同了!

因此,就像苹果和微软一样,他们并没有制造计算机核心的芯片。 或像GM和BMW一样,没有制造汽车的轮胎,制动器,排气管或计算机; 或像Sony,Canon,Nikon或Leica一样,他们并没有伪造数码相机的束缚者,我们决定不自己构建eZ Platform使用的框架。

社区之间的异花授粉

eZ之外有一个世界。 eZ 社区只是众多社区之一。 总体而言,我们需要(并且将永远需要)与其他社区保持联系-相互交流想法,思想,创新,经验和观点。

用一个夸张的词来说,这是关于促进跨人员,组织和应用程序的思想和项目的交叉授粉。

通过使用全球标准化的框架,我们可以实现这一目标。 像eZ这样的公司正在从具有不同议程,产品和业务模式的其他公司那里学习。 这种转变是关于产生新的想法,新的实验,以及加速创新思维,尤其是在我们的eZ思维系统之外。

为了说明这一点,我最近参加了由我们的一些合作伙伴Netgen等组织的一次会议-eZ和PHP 夏令营 。 在那里,我了解到,一些合作伙伴进行了结合eZ Publish的其他组件,如Sylius ,基于Symfony的一种新兴的电子商务解决方案,构建涵盖的内容管理和电子商务的全球解决方案。

这只是冰山一角。 通过使用最受欢迎的Web框架,我们的客户可以选择轻松地与许多最受欢迎的电子商务,PIM和CRM系统集成。

见证这种合作显然增强了我们的信念。 在一个封闭和孤立的世界中,这不会发生。

促进捐款

迁移到Symfony的第三个原因是要促进对eZ及其他领域的贡献。

过去,我们对eZ Publish的扩展有很多贡献, projects.ez.no有超过10,000个可用扩展。 过去,现在仍然是一群真正的人,他们分享和贡献。 但是,我们对eZ Publish本身的贡献较少,而对框架层本身的较深部分的贡献几乎没有,例如我们自己的模板引擎库。

对此的一种解释可能是它不需要相同的技能。 开发图书馆的人可能与开发网站和应用程序的人不同。

另一个可能的解释是,我们的框架已深深地隐藏在eZ中,人们没有动力去那里。 当然,某些社区成员将能够做出贡献,最终他们做出了贡献,但是对于普通的eZ Publish开发人员而言,这显然太复杂了。

通过依靠像Symfony这样的框架,我们鼓励eZ开发人员轻松地在各个层次上做出贡献,包括该框架。 如果愿意,他们可以为Symfony本身做出贡献,因为这是一个拥有强大社区的开源项目。 许多贡献者和大量资源使这变得容易。 他们还可以为Symfony构建通用对象(“捆绑包”),并可以与整个Symfony社区共享。

最后,我们受益于与e​​Z无关但共享相同需求的人们对核心框架的贡献!

使其更易于自定义和扩展

采用Symfony全栈的最实用的原因是要促进人们自定义和扩展eZ的方式。

与许多其他内容管理系统不同,eZ始终作为平台构建,并努力满足扩展和定制的需求。 您永远不能给开发人员足够的灵活性。 即使eZ Publish 4.x在这方面做得很好,我们仍然想抓住任何机会做得更好。

首先,我们从很多方面看待Symfony,因为我们也正在开发框架和库。 但是一年又一年,我们看到Symfony项目演变成一种非常有趣的事情,可以为我们的用户带来很多价值。

仅举几例:

  • Twig: Symfony使用的基础模板引擎。 与我们以前的模板引擎相比,Twig在可用性和活动维护者方面有了明显的改进。
  • 作曲家: PHP的软件包管理器和Symfony的很好的伴侣将PHP应用程序的部署提高了一个层次。 它更面向企业。
  • 原则:数据库层为那些扩展eZ并访问其他数据集和其他数据库的人提供了很多服务。
  • YAML: Symfony的语义配置带来了更现代,更易理解和有效的方式来处理设置和配置。
  • HTTP缓存:本机的http“视图”缓存系统(我们为之广泛使用,我们为此做出了贡献)为开发人员提供了更多机会,使他们可以使用Varnish获得出色的性能,同时仍保持其在线内容的最新状态。
  • 还有很多很多

这就是为什么eZ抛弃一些功能强大的东西,然后在家酿造更好的东西的原因。

还是认为此举很疯狂?

随着时间的流逝,我们一次又一次地听到社区中“传统” eZ开发人员的声音,他们是旧eZ框架的忠实拥护者,他们终于接受了变化并热爱它。 对于我们来说,这是最好的选择,因为它极大地验证了我们的选择。

从根本上讲,我首先阐述的四个原因具有相同的想法:

软件与人有关

而且您对他们越开放越好。 没有人们的使用,技术就什么都不是。 通过从自制框架过渡到标准框架,我们使大量开发人员更容易获得使用我们的解决方案的机会。 这是认识到我们并不孤单的一种方式,如果我们尝试自己做所有事情,我们也不会走太远。

开源是很棒的,但是如果坚持使用源代码定义,则会失去大部分功能。

开源之所以伟大,是因为它可以联系人们并帮助他们进行协作,尽管他们致力于不同的主题,不同的目标,不同的愿景和技能。

我们希望依靠开放源代码的软件基础结构,这当然是我们在Symfony之前所做的,因为我们所有的内部组件都是开放源代码的。 但最重要的是,我们希望依赖于我们自己的特定用例之外的许多人所使用的软件基础结构。 现在完成!

公开赛
不育系

本文是Robin Muilwijk协调的“开放式CMS”专栏的一部分。 分享有关使用开源内容管理系统(CMS)和诸如Drupal,Joomla,Plone,WordPress等平台的故事。

翻译自: https://opensource.com/business/15/3/why-we-ditched-our-legacy-framework-for-symfony

symfony框架

symfony框架_为什么我们放弃传统的Symfony框架相关推荐

  1. spring框架_一篇文章带你理解Spring框架

    虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...

  2. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  3. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink

    我们知道,大数据的计算模式主要分为批量计算(batch computing).流式计算(stream computing).交互计算(interactive computing).图计算(graph ...

  4. python多线程爬虫框架_普通爬虫vs多线程爬虫vs框架爬虫,Python爬对比

    前言 本文的文字及图片过滤网络,可以学习,交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 皮查姆 目标网页分析 网站就选择发表情这个网站吧 网站是静 ...

  5. golang游戏服务器框架_教你从头写游戏服务器框架

    需求 由于"越通用的代码,就是越没用的代码",所以在设计之初,我就认为应该使用分层的模式来构建整个系统.按照游戏服务器的一般需求划分,最基本的可以分为两层: 底层基础功能:包括通信 ...

  6. python协程框架_[记录]python的简单协程框架(回调+时间循环+select)

    # -*- coding: utf-8 -*- # @Time : 2018/12/15 18:55 # @File : coroutine.py #一个简单的 Coroutine 框架 import ...

  7. 如何搭建python框架_从零开始:写一个简单的Python框架

    原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...

  8. webservice框架_聊聊从RPC到服务治理框架

    与一般的HTTP REST框架不同,一个可用的RPC架构不仅解决了远程调用问题,也提供了用于服务注册和服务发现的基础设施,比如RMI(Java语言的RPC)里的RMI Registry,如下图所示. ...

  9. java异常处理框架_深入探索 高效的Java异常处理框架(1)

    摘要:本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则.并且作者提出了自己处理一个大型应用 ...

最新文章

  1. 记一次腾讯霸面---前端
  2. C++实现输出内容存入到TXT文档中
  3. python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响
  4. iinflux数据库使用
  5. 一次看完2019技术好文,快收藏!
  6. Cannot launch SimulationPipeline in local Eclipse
  7. Flask-SQLAlchemy 中如何不区分大小写查询?
  8. WDA 程序文本翻译OTR
  9. Python扩展库安装工具pip的高级用法
  10. 编写模块时的声明(含MODULE_LICENSE等)
  11. Embedding 技术在推荐系统中的应用实践
  12. 5.3傅立叶变换意境级讲解
  13. 一款优美的windows cmd命令行工具cmder
  14. Adobe Acrobat Reader DC缺少字体包的问题
  15. My second page-数组删除 —— By Nicolas
  16. 运筹优化学习08:Repairing MIP infeasibility through local branching
  17. 贪心算法 Greedy
  18. 2073-三角形面积
  19. 内存映射I/O与端口映射I/O的区别
  20. Latex指定表格某行的行高

热门文章

  1. centos6.5 安装 OpenResty
  2. ADF开发遇到错误:JBO-26030 无法锁定记录,其他用户持有该锁
  3. asp.net 中RadioButtonList的选项改变事件处理(采用jquery操作)
  4. 验证身份证合法性的js
  5. 2011MBP在Win7下打开ACHI
  6. 鬼吹灯-漫谈大型网站的架构
  7. 细说JDK动态代理的实现原理
  8. secureCRT及secureFX安装注册和secureFX中出现中文乱码的处理方式
  9. maven整合struts: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  10. mysql内存片多大_内存带宽对mysql影响多大?