User:Kuno/Development Overview

From MusicBrainz Wiki
< User:Kuno
Revision as of 06:31, 19 February 2010 by Kuno (talk | contribs) (New page: <small>Development > Overview</small> ==Architecture Overview== The following diagram briefly illustrates the different components of the MusicBrainz service: [[Image:MBComponents.pn...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Development > Overview

Architecture Overview

The following diagram briefly illustrates the different components of the MusicBrainz service: MBComponents.png
How the MusicBrainz components are related to each other

MusicBrainz Web Server

Starting with probably the most familiar part, MusicBrainz has a web site. You are reading one of its pages right now, of course. Using the MusicBrainz web site, you can search, browse and edit the MusicBrainz database.

Human interaction (Web Browser)

Your web browser (top left) sends HTTP requests to the Server (right) which then accesses the Database as appropriate, and returns a response to your browser (usually a web page showing the requested information).

Machine interaction (RDF/XML Webservices)

The MusicBrainz server also provides a (machine-readable) RDF interface. RDF is an XML-based language. By sending RDF queries to the server, a client can query existing information, and possibly enter new information to the database. The client constructs an RDF message, and sends it to the server, then the server parses and processes the message, accesses the database as necessary, and returns a response to the calling client.

Although any client can send RDF queries to the MusicBrainz server, the easiest and most reliable way to do so is by using the libmusicbrainz. Any program can use the libmusicbrainz to query the web service for information. The library constructs the correct RDF query, sends it to the server, receives the server's response, and finally returns the data to the calling program. The program does not have to implement the mechanics of RDF or know about the RDF web service internals.

Whilst most client applications (e.g. media players) will probably use only the RDF interface (via libmusicbrainz), sometimes it is useful to also use the web interface at the same time. This is the approach taken by both the Classic Tagger and the CD Lookup Tool. The current workflow is as follows: The Classic Tagger will read a digital audio file, generate a TRM signature (using libmusicbrainz), look up that signature on the server (using libmusicbrainz) and show the results to the user. Then, if the user chooses to lookup the file, the tagger points its embedded web browser component to the MusicBrainz web site, where the user is assistet in finding the matching Track in the Database. Finally when the user selects the track, the tagger associates the TRM ID with the selected track (using libmusicbrainz, again).

The new Picard Tagger uses the same steps to associate fingerprints with digital audio files, but uses the libtunepimp library, and the new fingerprinting technology from MusicDNS to associate PUID to tracks.