User:Kuno/Development Overview
Development > Overview
Architecture Overview
The following diagram briefly illustrates the different components of the MusicBrainz service:
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.