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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (152)

有人知道使用哪种语言或技术开发Spotify桌面应用程序吗?它稳定,好看,重量轻。

提问于
用户回答回答于

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

  • Boost
  • Expat
  • FastDelegate
  • giflib
  • libjpeg
  • libogg
  • libvorbis
  • Mersenne Twister
  • zlib
  • NSIS (Windows only)
  • Windows Template Library (Windows only)
  • Growl (Max OS X only)
  • MATrackingArea (Mac OS X only)
用户回答回答于

日期:2014-09-09

Andreas Blixt,Spotify 5年雇员:我们所有客户的核心是C+,但是自从Rasmus的帖子被浓缩之后,这个核心就被压缩了,功能被分成了模块。随着Spotify在越来越多的平台上可用,以及获得更丰富的功能集,我们需要确保“核心”不会成为“任何东西的一点点”。这意味着将某些特性(如播放控制)分离到各自的模块中。这些模块仍然是C+,但是它们的逻辑在理论上可以用其他语言实现。我们将这些模块的接口层称为“Cosmos”,它的工作方式与HTTP没有太大的不同。COSMOS允许客户端的任何部分使用任意路径和有效负载与模块通信,从而允许使用更加灵活的体系结构。一些明显的好处是版本化的接口(例如:get sp:/Player/v1/main返回Player状态)和用于传递数据的JSON。这对于我们的桌面客户端的另一个更改非常重要。如今,我们的许多桌面UI实际上都在使用ChromiumEmbeddedFramework(CEF),这基本上意味着我们的视图是由JavaScript、HTML和CSS驱动的。为了让我们的所有功能团队能够在不破坏他人视图的情况下处理自己的功能,每个视图都会在自己的“浏览器”中被沙箱化(我猜可以将视图看作Chrome中的选项卡,除非我们一次显示多个视图)。然而,这也带来了一个限制:在视图之间共享数据变得更加困难。这就是Cosmos引入并真正简化了核心(C+)和JavaScript域之间的通信的地方:JS客户端可以发出任意的请求,如果有绑定,该请求将被处理和响应。一个例子是“Messages”端点,它允许任何视图将JSON数据推送到正在侦听的任何其他视图(有点像HTML 5中的window.postMessage,但这个端点也可以与C+模块接口)。这也是客户端中的所有Play按钮都知道某个曲目是否正在播放,或者它是否脱机可用(另一个Cosmos模块),或者您是否将一首歌曲保存到您的音乐中。技术栈的另一个重要变化是,我们已经将一些逻辑进一步“回退”到视图聚合服务中。因此,在我们以前只使用后端作为数据存储的客户端中执行几乎所有逻辑的地方,我们现在数据存储和客户端之间的逻辑层中做更多的工作,公开与Cosmos非常相似的端点(实际上,可以像调用Cosmos模块那样调用后端,所以这有两个原因:其一,它让我们更快地扩展到更多的平台,因为需要实现的客户逻辑较少;第二,它确实帮助我们保持客户端行为的一致性和时代性,因为客户端更“愚蠢”。为了缓解由此可能产生的任何放缓,我们已经确保所有数据都有缓存规则,这样客户端仍将在本地保存数据,它只是没有以前那样负责业务逻辑。

扫码关注云+社区

领取腾讯云代金券