Building a web system is a complicated business. Designing any complex piece of software requires imagination and creativity as well as a solid knowledge of software engineering practice. If you are an experienced programmer, you may well possess all these things; but if not, it might be useful to get some idea of what goes on in the designer's mind while developing and building a new system. New Riders author Steve Holden offers suggestions on setting up and planning for an interactive web system.

From the author of

From the author of

A web system is effectively a programmed method for generation of
linked content, usually (but not necessarily) presented with some degree of
structural uniformity. For web pages, the unifying theme is usually the page
layout, but in XML could be the presentation style, possibly selected from a
number of styles defined in cascading style sheets.

The structure of web pages is often hierarchical, with a group of pages
embellishing a style inherited from the pages above it in the conceptual
hierarchy. One of the features of Zope is its capability to inherit page
structure, overriding as necessary within a tree-structured hierarchy.

Overall Architecture

You have by now seen enough Python code that one more HTTP server would be
neither here nor there. It may be that your current web services run external
programs as CGIs as a matter of policy. In that case, you must be prepared to
write your systems as CGI scripts, which will make them slower and perhaps more
complex.

Generally, it is best to try to separate the HTTP service from the content
generation. The architecture of web systems is such that HTTP carries HTML, XML,
and so on, so the two are at different layers in the software architecture.

You may need to understand your server environment closely if you want to use
techniques like persistent CGI, which can improve performance. However,
just as in databases, the early stages of design are too soon to start
considering physical models; it is often better to design the system in a simple
way and then look at how to improve performance if that proves necessary.
Because you now know that you can write web servers in pure Python, thanks to
the socket library, you need not fear the artificial constraints of a server
framework.