<?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>The Evolution of Finger: pluggable backends</title> </head> <body> <h1>The Evolution of Finger: pluggable backends</h1> <h2>Introduction</h2> <p> This is the fifth part of the Twisted tutorial <a href="index.xhtml">Twisted from Scratch, or The Evolution of Finger</a>.</p> <p>In this part we will add new several new backends to our finger service using the component-based architecture developed in <a href="components.xhtml">The Evolution of Finger: moving to a component based architecture</a>. This will show just how convenient it is to implement new back-ends when we move to a component based architecture. Note that here we also use an interface we previously wrote, FingerSetterFactory, by supporting one single method. We manage to preserve the service's ignorance of the network.</p> <h2>Another Back-end</h2> <a href="listings/finger/finger19b_changes.py" class="py-listing">finger19b_changes.py</a> <p> Full source code here: <a class="py-listing" href="listings/finger/finger19b.py">finger19b.py</a> </p> <p>We've already written this, but now we get more for less work: the network code is completely separate from the back-end.</p> <h2>Yet Another Back-end: Doing the Standard Thing</h2> <a href="listings/finger/finger19c_changes.py" class="py-listing">finger19c_changes.py</a> <p> Full source code here: <a class="py-listing" href="listings/finger/finger19c.py">finger19c.py</a> </p> <p>Not much to say except that now we can be churn out backends like crazy. Feel like doing a back-end for Advogato, for example? Dig out the XML-RPC client support Twisted has, and get to work!</p> </body> </html>