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

时间:2009-03-19 13:05:44

标签: desktop-application spotify

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

8 个答案:

答案 0 :(得分:46)

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

  

Andreify Blixt,5年期Spotify员工:

     

我们所有客户的核心都是C ++,但这个核心已经是Rasmus的核心   post得到浓缩,功能分成模块。如   Spotify可以在越来越多的平台上使用   获得更丰富的功能集,我们需要确保"核心"没有按'吨   成为"一点点的一切"。这意味着爆发   某些功能,如播放控制,进入自己独立的   模块。这些模块仍然是C ++,但是足够自包含   从理论上讲,他们的逻辑可以在其他方面实施   语言。我们将接口层称为这些模块" Cosmos",和   它的工作方式与HTTP不太相似。宇宙允许任何部分   客户端使用任意路径与模块通信   有效载荷,允许更灵活的架构。有些明显   好处是版本化接口(例如:GET sp:// player / v1 / main   返回播放器状态)和JSON用于传递数据。这是   对我们的桌面客户端的另一个变化很重要。

     

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

     

我们的技术堆栈的另一个重要变化是我们已经移动了   一些逻辑进一步"返回",进入视图聚合服务。那么我们在哪里   之前会在客户端做几乎所有逻辑,只使用   后端作为数据存储,我们现在在逻辑层中做更多的工作   在数据存储和客户端之间,非常暴露端点   类似于宇宙(事实上,你可以用完全相同的方式调用后端   你称之为Cosmos模块,因此在层之间移动并不麻烦。   原因有两个:一,它让我们扩展到更多   平台更快,因为实现的客户端逻辑更少   第二,它确实有助于我们保持客户行为更加一致   并且是最新的,因为客户更多"愚蠢"。减轻任何   可能来自这方面的放缓我们确保有   缓存所有数据的规则,以便客户端仍然保留数据   在本地,它不负责尽可能多的业务逻辑   曾经是。

答案 1 :(得分:34)

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

  • 升压
  • 外籍
  • FastDelegate
  • giflib
  • 的libjpeg
  • libogg
  • libvorbis
  • Mersenne Twister
  • 的zlib
  • NSIS(仅限Windows)
  • Windows模板库(仅限Windows)
  • 低吼(仅限Max OS X)
  • MATrackingArea(仅适用于Mac OS X)

答案 2 :(得分:22)

根据Spotify设计师的说法:

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

“其中一些是在C ++中,其中一些是在一种名为Spider的HTML-ish标记语言中” “它仅用于在Spotify中使用”

答案 3 :(得分:14)

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

答案 4 :(得分:4)

来自website

  

Spotify主要使用Python和C ++构建

答案 5 :(得分:3)

鉴于它在Windows上运行,显然不是.NET(Process explorer告诉我),没有遵循AIR安装过程,我会说C ++使用跨平台库。

所有内容都编译成一个可执行文件,表明他们可以访问所有依赖项的源代码。

W.r.t to Techno ...我认为他们使用的是Hardhouse Electronica

答案 6 :(得分:0)

在这里查看第一个答案: https://www.quora.com/What-is-the-technology-stack-behind-the-Spotify-web-client

Spotify的前任技术负责人Andreas Blixt已经详细解答了这个问题。

  

我们有一个处理登录的PHP层(以及其他一些   服务器端逻辑)以及在不同域上提供应用程序(for   安全原因)。其余的都是JavaScript。

     

为了让JavaScript与后端进行通信,它通过以下方式实现   我们称之为"接入点" (AP),高度优化的C ++服务   它可以同时处理大量活动连接。这项服务是   负责将请求路由到正确的后端服务。这个   服务能够通过端口80和443运行来克服   防火墙限制。通过WebSocket完成通信(或   某些浏览器的Flash。)

     

要与特定的后端服务进行通信,我们会路由请求   通过AP使用我们自己的名为" Hermes"的运输工具。这是   基本上是一个URL方案,让AP知道在哪里发送   请求。有效负载编码为Protobuf。爱马仕有一个很好的缓存   系统(我们称之为" Mercury")将结果存储到IndexedDB中   支持它的浏览器(我们在桌面上有相同的系统   客户端,但改为在C ++中实现),以避免请求相同   数据两次。这对于重新请求的资源非常有用   很多,比如艺术家,专辑和曲目。

     

对于UI,我们编写了一个非常先进的应用程序框架   (称为" Stitch")允许开发每个视图   由不同的团队独立而不必担心   打破任何事情视图以沙盒形式运行,但可以   仍然依赖共享库来处理常见的事情   跟踪元数据等。在撰写本文时,我们有~35个独特的视图(或   应用)在网络播放器中。

     

视图通过我们称之为"桥接"来获取数据并执行操作。   (基本上是一个API)使用postMessage,所以我们不需要   重新初始化每个应用程序的所有常用代码。非常酷的事情   关于这一点,我之前提到过的很多~35个观点都可以   实际上也可以在桌面客户端内运行而无需修改的   当然,他们将使用钩子进入Chromium而不是postMessage   嵌入式框架,以及我们的C ++核心。

     

我们尝试尽可能多地使用HTML 5技术,但在某些方面   案件取决于Flash。我认为我们有一个非常酷的技术堆栈   我们的网络播放器一般。

答案 7 :(得分:-9)

前端是用FLEX编写的,检查mac或windows机器上的源代码。您将看到很多xml文件,它们都是flex文件格式。

当然,与服务器和平台集成的连接可能是用c ++本地编写的。但UI部分只是FLEX ......

相关问题