Fandom

Wikia中文

评论0

服务导向架构 - 软件开发最新方法

Cal-Boy 2016年8月30日 用户博客:Cal-Boy

您使用了广告屏蔽软件!


Wikia通过广告运营为用户提供免费的服务。我们对用户通过嵌入广告屏蔽软件访问网站进行了使用调整。

如果您使用了广告屏蔽软件,将无法使用我们的服务。请您移除广告屏蔽软件,以确保页面正常加载。

想一想你在Wikia上可以做的所有事情:编辑文章,和其他用户在线聊天,收集勋章,组织内容,或者是花几个小时不停地阅读你所感兴趣的话题。 在我们360,000个社区上,每一个社区都拥有独立的设计和内容,你可以看到它们各具特色。

我们的社区就是建立在这些内容之上。虽然如此,社区看不到的确是这种多样化给我们的工程师和产品经理编码带来巨大的挑战。在过去的许多年里,我们已经建立了一个庞大的代码数据库。

许多年前,我们经验丰富的工程师聚集在一起,开始思考是否有一种方式可以砍掉代码库。他们希望看到是否有一种简单的方式对代码进行维护以保证Wikia的功能都能正常使用。 这样做我们可以让软件的开发工作进展更快并且更加有效率。 很高兴地告诉大家,我们已经取得了巨大的进步!

解决的方法被称为服务导向架构(SOA)。作为一名维基编辑用户以及一名公司的程序员,我很希望和大家分享这种方法以及Wikia软件发展的幕后工作。

专业词汇

City (Civ3).png

假设Mediawiki是一座城市

为了更好的理解Wikia的技术是如何更新的,让我们先定义一下一些重要的概念。

MediaWiki: MediaWiki是我们自2006 年构建Wikia以来的主要源动力。MediaWiki是wiki概念创造中不可或缺的一部分,它可以让编辑变的非常简单,让用户创建的内容可以得到很好的呈现,用户群组框架简单,并且能够追踪编辑的历史。

Wikia使用的Mediawiki版本为1.19,我们可能不会再大规模地更新到一个最新版本。 一个主要的原因就是Mediawiki是一个庞大的软件系统。 包括Mediawiki代码、设计和其他技术元素掌控一切。 比如,让你保存文章页面的功能,也同样适用于删除文章页面的功能。 这些大量工作主要是通过PHP和JavaScript完成的。

在技术上,一种服务通常情况下只是软件中的一个小的部分,它只负责单一的、通用的任务。 它适用于任何语言。 因此,服务导向架构就是一种允许所有网页通过单一服务的共同作用而完成任务的设计系统,而不是一个可以完成所有任务的单一庞大软件。

问题是什么?

为了试图明白SOA模型和Mediawiki模型的区别并且更好地利用SOA,让我们假设Mediawiki是一座城市。所有的城市居民都负责城市的所有业务,无论是建筑,或是警务,亦或是售货。 城市或许可以很好地发展,但是一旦某处开始着火,一个售货员,警务人员,或者建筑工人都将一起跑来灭火,而不是依靠消防队员专业的进行灭火。

如此类推,让我们看一下服务导向架构模型是如何工作的。在一座城市里,居民只负责单一的一种事务,比如建筑,警务,或者售货。 他们将集中注意力做一项事情。如果哪里着火了,消防员将去现场进行灭火。 我想你应该和我一样,如果房子着火了,比起一个面包师,我会更加信任消防员的灭火技能。 虽然这个灭火的例子可能有些耸人听闻,听起来很好笑,不过事实的确就是这样。

这个例子就是对为什么Wikia需要转换到SOA的一种最好解释。 SOA和核心Mediawiki优势对比:

  • 简单性 对一个软件工程师来说,如果范围较小、代码只储存在一个地方,他们就非常容易进行处理、修复或者提高某个软件性能。 SOA可以让我们更好地使用编程语言,不如Java或者Python,对处理某些PHP不能处理的任务也非常方便。
  • 适应性 Mediawiki的庞大让它的更新速度变的非常缓慢。 另一方面,互联网变化非常快。 Mediawiki经常落后于一些必要的功能,比如手机App发展方面。

哪些方面将有变化?

如果你知道Wikia在过去的几年里已经悄无声息地把一些功能转换到SOA模型,你可能会有些惊讶。使用SOA模型并不意味着你会看到一个浮夸的Wikia。SOA将抓取Mediawiki的某些功能,重建更加高效的代码,然后将代码重新放回原来的地方。虽然重写代码可能需要我们添加一两项新的功能,但是你基本上看不到任何明显变化。

一个非常好的例子就是我们现在的登入系统。无论您信不信,去年这项功能已经有了巨大的变化!比如在传递用户数据库或简单和Facebook账户连接的问题上,Mediawiki用户身份验证系统并不能有效地发挥作用。 从去年开始,我们开始设计一种东西叫做Helios,它将允许一种更加安全和快速的注册和登入过程。 Helios是在Mediawiki之外独立运行的,并且通过简单API和Mediawiki进行对接。

另外,我们还创建了一种专门针对用户群组权限和个人设置的服务。 这种技术的发展已经运用到了手机App和手机界面上。 事实上,我们已经可以使用Helios让用户更好地登录Wikia的手机界面和App,它比将Mediawiki验证系统嵌入到手机工具的方法更加简便。

这只是让我们的Wikia系统变的更加有效的第一步。 它将允许我们更好地设计新的功能和代码系统,让Wikia在未来更好地发展。 如果你对Wikia服务导向架构模型的发展有任何问题,你可以在这里提问,我们的员工将一一回答!

更多维基

随机维基