首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >开发Spotify桌面应用程序时使用了什么语言或技术?

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

Stack Overflow用户
提问于 2009-03-19 13:05:44
回答 9查看 82.4K关注 0票数 78

有人知道Spotify桌面应用程序是使用哪种语言或技术开发的吗?它稳定、美观、轻便。

EN

回答 9

Stack Overflow用户

发布于 2014-11-04 20:46:28

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

日期: 2014-09-09

Andreas Blixt,5年Spotify员工:

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

现在我们的许多桌面UI实际上都在使用Chromium嵌入式框架,这基本上意味着我们的视图是由JavaScript、超文本标记语言和CSS支持的。为了让我们所有的功能团队都能够在自己的功能上工作,而不必担心破坏别人的视图,每个视图都被放在自己的“浏览器”中(我猜你可以把这些视图看作Chrome中的标签,除非我们一次显示不止一个)。然而,这带来了一个限制:在视图之间共享数据变得更加困难。这就是Cosmos的用武之地,它真正简化了核心(C++)和JavaScript之间的通信: JS客户端可以发出任意请求,如果存在绑定,该请求将得到处理和响应。一个例子是"messages“端点,它允许任何视图将JSON数据推送到正在侦听的任何其他视图(有点像HTML5中的window.postMessage,除了这个视图还可以与C++模块交互)。这也是客户端中所有的播放按钮是否知道一首曲目是否正在播放,是否离线可用(另一个Cosmos模块),或者您是否已将歌曲保存到音乐中的方式。

我们技术栈的另一个重要变化是,我们将一些逻辑进一步“移回”到视图聚合服务中。因此,我们以前在客户端做几乎所有的逻辑,只使用后端作为数据存储,现在我们在数据存储和客户端之间的逻辑层中做了更多的工作,暴露了与Cosmos非常相似的端点(实际上,您可以像调用Cosmos模块一样调用后端,因此在层之间移动不是一件麻烦的事情)。这样做的原因有两个:第一,它让我们更快地扩展到更多的平台,因为需要实现的客户端逻辑更少;第二,它真的帮助我们保持客户端行为更一致和最新,因为客户端更“愚蠢”。为了缓解由此可能带来的任何减速,我们已经确保了所有数据都有缓存规则,这样客户端仍然会在本地保留数据,只是它不会像以前那样负责太多的业务逻辑。

票数 54
EN

Stack Overflow用户

发布于 2009-03-31 15:05:15

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

  • Boost
  • Expat
  • FastDelegate
  • giflib
  • libjpeg
  • libogg
  • libvorbis
  • Mersenne Twister
  • zlib
  • NSIS (Windows only)
  • Windows模板库(仅限Windows)
  • Growl (Max OS X only)
  • MATrackingArea (仅限Mac OS X))
票数 35
EN

Stack Overflow用户

发布于 2011-08-25 23:35:05

根据一位Spotify设计师的说法:

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

“有些是用C++编写的,有些是用一种叫做蜘蛛的超文本标记语言编写的。”“它是专门为在Spotify中使用而构建的。”

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/662121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档