当前位置:  开发笔记 > 编程语言 > 正文

使用什么语言或技术来开发Spotify桌面应用程序?

如何解决《使用什么语言或技术来开发Spotify桌面应用程序?》经验,为你挑选了4个好方法。

有谁知道使用哪种语言或技术来开发Spotify桌面应用程序?它稳定,美观,轻便.



1> Daniel P..:

从这里:http
://www.quora.com/What-is-the-technology-behind-the-Spotify-desktop-app日期:2014-09-09

5年Spotify员工Andreas Blixt:

我们所有客户的核心都是C++,但是自从Rasmus的帖子得到了浓缩以来,这个核心功能被分解为模块.随着Spotify在越来越多的平台上可用以及获得更丰富的功能集,我们需要确保"核心"不会变成"一点点".这意味着将某些功能(例如播放控制)分解到各自的模块中.这些模块仍然是C++,但是足够自包含,理论上它们的逻辑可以用其他语言实现.我们将接口层称为这些模块"Cosmos",它的工作方式与HTTP不同.Cosmos允许客户端的任何部分使用任意路径和有效负载与模块通信,从而允许更灵活的架构.一些明显的好处是版本化接口(例如:GET sp:// player/v1/main返回播放器状态)和JSON用于传递数据.这对于我们的桌面客户端的另一个更改很重要.

现在很多桌面用户界面实际上都在使用Chromium Embedded Framework(CEF),这基本上意味着我们的视图由JavaScript,HTML和CSS提供支持.为了让我们所有的功能团队能够处理他们的功能而不必担心破坏别人的视图,每个视图都在他们自己的"浏览器"中进行沙盒化(我猜你可以将视图视为Chrome中的标签,除了我们显示更多而不是一次一个).这带来了一个限制:在视图之间共享数据变得更加困难.这就是Cosmos的用武之地,它真正简化了核心(C++)和JavaScript之间的通信:JS客户端可以发出任意请求,如果有绑定,则会处理并响应该请求.一个例子是"消息"端点,它允许任何视图将JSON数据推送到正在侦听的任何其他视图(类似于HTML5中的window.postMessage,除了这个也可以与C++模块接口).这也是客户端中所有播放按钮知道曲目是否正在播放,或者是否可以离线播放(另一个Cosmos模块),或者是否已将歌曲保存到音乐中的方式.

我们的技术堆栈的另一个重要变化是我们将一些逻辑进一步"回"到视图聚合服务中.因此,我们之前在客户端执行几乎所有逻辑操作,只使用后端作为数据存储,我们现在在数据存储和客户端之间的逻辑层中做更多的工作,暴露端点与Cosmos非常相似(事实上,您可以像调用Cosmos模块一样调用后端,因此在层之间移动并不麻烦.其原因有两方面:一,它可以让我们更快地扩展到更多平台,因为实现的客户端逻辑较少,两个,它确实有助于我们保持客户端行为更加一致和最新,因为客户端是更"愚蠢".为了减轻可能由此产生的任何减速,我们确保所有数据都有缓存规则,以便客户端仍然可以在本地保存数据,它不像过去那样负责业务逻辑.


哦,伙计,听起来像是React + Redux的完美案例

2> Mahtar..:

以下是他们使用的第三方组件列表(当然是在C++之上):

促进

外籍人士

FastDelegate

giflib

的libjpeg

libogg

libvorbis

Mersenne Twister

zlib的

NSIS(仅限Windows)

Windows模板库(仅限Windows)

低吼(仅限Max OS X)

MATrackingArea(仅适用于Mac OS X)


打开Spotify并转到"帮助">"显示许可证"

3> 小智..:

根据Spotify设计师的说法:

http://twitter.com/#!/tobiasahlin/status/96483609799692288

"其中一些是用C++编写的,其中一些是用于称为Spider的HTML-ish标记语言""它仅用于在Spotify中使用"


"Spider"是Spotify内部开发的.
在git hub找到了这个:https://github.com/krikelin/Spider有人似乎已经反向设计了蜘蛛布局引擎(从阅读spotify二进制文件?!?)

4> Keavon..:

Spotify现在使用Chromium Embedded Framework(CEF)在桌面应用程序中显示由HTML/CSS/JavaScript组成的Web界面.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有