Where Code and Content Meet - Andreas Rueping - E-Book

Where Code and Content Meet E-Book

Andreas Rueping

0,0
35,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

A practical go-to reference for Web developers programming custom software for Web sites

Most advanced Web sites or Web platforms have specific requirements that go beyond standard functionality; to meet such requirements, it's often necessary to develop custom software. This is the point where code and content meet, and where this book begins. Where Code and Content Meet presents a collection of real-world, tried and tested patterns that address content-related aspects of custom software development for advanced Web sites or platforms.

Mined from a series of successful Web projects, the patterns represent collected expertise of designers from several software development teams and serve as a practical guide to designing your own content-related custom components for your Web project. The patterns are independent of specific tools and technologies, and focus on non-functional requirements, with the overall goal of defining sustainable software architecture.

  • Presents a collection of tried and tested software patterns mined from a series of successful Web projects
  • Includes checklists for managing Web projects and real-world patterns from PLoP conferences
  • Illustrates use of software patterns through a case study that runs throughout the book and gradually evolves as the patterns are applied to it, one by one
  • Covers content modeling and content organization, navigation, findability, personalization, and user participation

By employing the software patterns included in Where Code and Content Meet, you'll learn how to program custom software faster and more efficiently.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 331

Veröffentlichungsjahr: 2010

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Contents

Cover

Contents

Title Page

Copyright

Foreword

Preface

Acknowledgements

Introduction

1 Architecture Overview

1.1 Content Management and Content Delivery

1.2 Dynamic Content Delivery plus Caching

1.3 Sensible Client-Side Interaction

1.4 Listener-Based Synchronisation

1.5 Layered Architecture for Content Delivery

2 Content Management

2.1 Content Type Hierarchy

2.2 Decoupling of Content and Navigation

2.3 Dynamic Content Linking

2.4 Taxonomy Based on Keywords and Categories

2.5 Workflow-Based Validation

3 Content Delivery

3.1 Content Services

3.2 Navigation Manager

3.3 Search Manager

3.4 System of Interacting Templates

3.5 Template per View

3.6 Self-Contained Pages

4 Personalisation and User Participation

4.1 Content Filters

4.2 Asynchronous Personalisation Engine

4.3 Segment-Specific Caching

4.4 Condensed Effectiveness Reports

4.5 Decoupling of Edited Content and User Contributions

4.6 Input Channel for User-Generated Content

5 Deployment and Infrastructure

5.1 One Web Application for Content Delivery

5.2 Dedicated Development and Production Environments

5.3 Smooth Relaunch

Planning a Project

Choosing a Content Management System

Final Remarks

Pattern Thumbnails

Glossary

References

Index

End User License Agreement

List of Illustrations

1 Architecture Overview

Figure 4: Road map to the patterns for the architecture overview

Figure 5: Exhibition announcement for the House of Effects

Figure 6: Content management and content delivery

Figure 7: Dynamic content delivery and caching

Figure 8: Event calendar for the House of Effects

Figure 9: Event handling for user interaction

Figure 10: Repository listeners

Figure 11: Layered architecture for dynamic content delivery

2 Content Management

Figure 12: Road map to the patterns for content management

Figure 13: The content type hierarchy for the House of Effects

Figure 14: Configurable navigation nodes for the House of Effects

Figure 15: Navigation nodes and content elements for a specific locale

Figure 16: Specification of a dynamic list

Figure 17: Addition of keywords and categories as metadata

Figure 18: The House of Effects’s search page using categories and document types

Figure 19: State diagram for the content editors’ workflow

3 Content Delivery

Figure 20: Layered architecture for dynamic content delivery

Figure 21: Road map to the patterns on content delivery and interaction

Figure 22: Different page types for the House of Effects site

Figure 23: Model components involved in a content service

Figure 24: Search manager and search engine

Figure 25: Client-side and server-side search functionality

Figure 26: A wireframe for a typical page

Figure 27: Call hierarchy of the template for an announcement page

Figure 28: Content types and their templates

Figure 29: Online presentation with video object

4 Personalisation and User Participation

Figure 30: Road map to the patterns

Figure 31: Personal recommendations

Figure 32: Integration of a content filter into a content service

Figure 33: Personalised content services configured by an asynchronous personalisation engine

Figure 34: Three different templates for tree navigation as seen by three different user segments

Figure 35: Effectiveness reports for teasers of online presentations

Figure 36: Edited content versus user submissions

Figure 37: Content model including user-generated content

Figure 38: Ratings and user comments as user-generated content

5 Deployment and Infrastructure

Figure 39: Load-balanced web and application servers distributed over internal environment and DMZ

Figure 40: Road map to the patterns

Figure 41: Dedicated development and production environments

Figure 42: Relaunch process using a staging environment

Guide

Cover

Contents

Start Reading

Pages

iii

iv

vii

viii

ix

x

xi

xii

xiii

xiv

xv

xvii

xviii

xix

xx

xxi

xxii

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

169

171

172

173

174

175

176

177

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

Where Code and Content Meet

Design Patterns for Web Content Management and Delivery, Personalisation and User Participation

Andreas Rüping

This edition first published 2009© 2009 John Wiley & Sons, Limited

Registered officeJohn Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex, PO19 8SQ, United Kingdom

For details of our global editorial offices, for customer services and for information about how to apply for permission to reuse the copyright material in this book please see our website at www.wiley.com.

The right of the author to be identified as the author of this work has been asserted in accordance with the Copyright, Designs and Patents Act 1988.

All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, except as permitted by the UK Copyright, Designs and Patents Act 1988, without the prior permission of the publisher.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.

Designations used by companies to distinguish their products are often claimed as trademarks. All brand names and product names used in this book are trade names, service marks, trademarks or registered trademarks of their respective owners. The publisher is not associated with any product or vendor mentioned in this book. This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold on the understanding that the publisher is not engaged in rendering professional services. If professional advice or other expert assistance is required, the services of a competent professional should be sought.

A catalogue record for this book is available from the British Library.

ISBN 9780470748459

Set in 10/12 point Sabon by WordMongers Ltd, Treen, Penzance, CornwallPrinted in Great Britain by TJ International Ltd, Padstow, Cornwall

Foreword

About 60 years ago the American scientist Vannevar Bush envisioned a new way of accessing and exchanging knowledge. In a paper that was originally drafted before World War II, he outlined a machine he called MEMEX that would extend human memory in a way that had never been seen before. Equipped with a microfilm reader, the knowledge worker of the future would be able to access all the content that had ever been written and create links between it. These ideas later influenced key computer scientists such as Ted Nelson and Douglas Engelbart, and eventually led to the web as we know it today, which builds on this vision – although it is still not able to reach the level of interaction that was foreseen by Bush. Imagine a world in which we were able to create reading trails between any items of knowledge.

When I think back to my first encounters with the hypertext systems that were developed in research contexts in the late 1980s, I can still remember special-purpose hypermedia readers providing things like assistance for museum visitors. It was really exciting to see how soon after that the World Wide Web became reality. I’m not sure what I would have said if someone had told me that I would find web pages for almost everything only a few years later. I still remember how funny it was to find the first web page for cat food, or towels. I thought that this was really useless – however, even the web pages for cat food were exciting, somehow: they offered an engaging user experience. Today, Google lists more than 75 million pages that mention cat food – more than one for every UK citizen. Such pages do not exist in isolation: they are connected to other pages to form a huge collection of websites maintained by people like you and me.

With the advent of Web 2.0 we see an increasing number of interactive sites where visitors become the authors of the content and link the content together. Wikipedia is one of the largest examples, where a community of authors creates and manages a huge collection of content. As you can imagine, you will find a page explaining cat food on Wikipedia as well, at some considerable length. Links on such pages help you to research any subject of your choice: an initial page can become an entry point for exploring biology, chemistry or any other subject. I confess that I did not imagine this effect in the early 1990s. Maybe you were more visionary in those days?

This book is not about cat food or towel sites, although you will find valuable hints for building a special-interest site if that is what you need. Nor is it about museums and the history of technology, although it illustrates web content management by designing a website for a museum. Instead, the book will teach you how to plan, build and maintain new or existing websites by providing essential guidelines for their architecture and design without delving into the details of their implementation. It will help you to decide which content management system to use, and give you the background knowledge required to really understand the difficulties of content management, explaining good practices that help you to avoid such difficulties in your project. If you have some experience of content management already you might consider some of the advice obvious at first glance, but even in these cases I became more and more excited when following the explanation of the details.

Each area of advice is presented as a design pattern, a format that is easy to memorise and understand. One of the benefits of this style is that you can browse quickly through the whole book by looking at the text set in bold font. I suggest that you try this first, or simply look at the pattern thumbnails section at the end of the book. Just as web pages are connected in the web to form a website, the patterns in this book are connected to form a pattern language. Just as the web as a whole becomes more powerful because of the connections, the pattern language will leverage your understanding of web content management to give a holistic perspective – the pattern language gives you the vocabulary to talk about websites. Try it out and investigate the presence of the patterns in one of your preferred websites. I suspect that you will find at least some, and that you will be able to suggest improvements by looking at those patterns that weren’t used for the site.

This is where we come back to the original vision of Vannevar Bush. Using the right intellectual tools, you will be empowered to analyse, manage, critique and structure the knowledge that you want to present on the web. You will be able to improve the reading paths and you will become aware of means for personalisation and participation for your readers. All this will help you to create websites that are easier to maintain. Finally, visitors to the site will thank you for content that is up-to-date, easy to find and – above all – exciting.

Till Schümmer

Cooperative Systems GroupFernUniversität in Hagen

Preface

Imagine that you are involved in a project that plans to develop a website for the House of Effects – a museum of nature and science dedicated to explaining natural phenomena to an interested audience. The website should inform visitors about what the museum has in store, offer interactive online presentations and announce forthcoming special events. In addition, there is going to be an online shop, where registered users will be able to buy tickets as well as books, DVDs and the like. Finally, the site is supposed to express a community feel. It will allow registered users to comment on and rate online materials and shop items. Users will also be able to receive personalised recommendations that match their interest profiles.

The screenshot in Figure 1 shows the start page for the House of Effects. It gives you a rough idea of how this website will look.

However, there are more requirements. Content editors must be able to add presentations and announcements smoothly, so straightforward workflow processes are required. Some online presentations might invite user-generated content, so the website must also be able to receive submissions from users. The site must be reliable, as it will be the main channel by which the House of Effects will be advertised to the general public. Response times should be reasonably short. The site has to scale to a potentially large number of users. Last but not least, the website’s owners want to retain the option to change or extend the site later, so the software behind it should be easily maintainable.

All this is a fairly typical scenario: today pretty much every organisation has a website. Company profile, service portfolio and contact information are among the things that all organisations need to make available via the Internet. But many sites consist of much more than this. Interaction and services for the users are common enough. In addition, some sites include an online shop where digital products are sold over the Internet. Personalised sites tailor their content to specific users or user groups. With the growing popularity of Web 2.0, some sites have turned into collaborative platforms where users can actively participate in a community.

Figure 1: Home page for the House of Effects

Almost all advanced websites or web platforms require a good deal of custom software. Of course, you can (and should) use tools such as a content management system, a web server, web application frameworks, tag libraries, a search engine and perhaps others, and these tools provide much of the necessary standard functionality. But standard functionality isn’t all you need – it is likely that you will have to meet more specific requirements. Possible examples include a specifically designed content model, personalisation strategies, individual page layouts and support for different output media. To meet such requirements, custom software development becomes necessary.

An essential part of that custom software needs to handle the web content required by a site. Web content can cover all sorts of digital assets, including text, pictures, videos or other multimedia objects. To this end, there are two worlds that you need to balance. One is the world of content, with its underlying models, classifications and lifecycles. The other is the world of code, where the term ‘code’ is meant to summarise those software techniques and mechanisms necessary to represent content on the web and to implement user interaction.

If you are interested in either of these two worlds individually, plentiful information is available. There are several books on web content management and enterprise content management, usually offering an information management perspective. Similarly, there are many good books on software development in general and on web applications specifically.

This book sets out to do something different. Starting at the point where code and content meet, it aims to explain how these two worlds go together, offering an approach that aligns the requirements from either perspective. Code and content are viewed as interlocking jigsaw pieces, as Figure 2 shows. Neither content nor code are going to be seen in isolation.

Figure 2: Content and code complementing each other

What this book is about

This book assumes a software designer’s perspective and presents a collection of patterns that address the content-related aspects of custom software development for advanced websites or web platforms.

So what are patterns? Patterns represent good practice and suggest solutions that have worked well in many practical cases. Mined from a series of successful web projects, the patterns in this book represent the collected expertise of designers from several software development teams.

Key topics in the book include content modelling and content organisation, navigation, findability, personalisation and user participation. The patterns are independent of specific tools and technologies. They focus on non-functional requirements, with the overall goal of defining a sustainable software architecture. In addition, checklists for managing a web project and for the selection of a web content management system give practical and straightforward advice.

I am not going to present one specific architecture, though. The reason for this is simple enough: websites are much too heterogeneous to be designed in a uniform way. Requirements differ a lot, as do the underlying technologies. There is no point in trying to define a single all-purpose architecture. Instead, the patterns in this book should serve as a practical guide to designing your own content-related custom components for your web project. Since the patterns are independent of any specific tool or programming language, you can use them to define an architecture that matches your specific needs.

This isn’t to say that you have to develop all software components yourself. Actually, you should not do so. First, you’ll probably be using a content management system. There are many systems available on the market, so it is unlikely you will have to develop your own. Second, you will probably be using frameworks for web development, such as Struts, Java Server Faces, Ruby on Rails or something else. These tools can save you a lot of work, but you will have to integrate them, and there is no question that a non-trivial site with individual requirements will also require a good deal of custom software. This is where this book can help you.

The book is also meant to help you to define a sustainable architecture – one that has a lasting positive effect on your website’s system characteristics. The patterns not only seek to align code and content, but also focus on non-functional requirements. For example, the site should be fast, despite the fact that good response times can be hard to achieve, especially in the presence of personalisation. Next, maintainability is essential. Only a solid architecture can ensure that later changes to your site won’t require a large and unjustified effort. There are also other important non-functional requirements, including security, reliability and scalability. Since the patterns in this book keep an eye on these things, they can help you to design a website with an underlying high-quality software architecture.

What this book is not about

There are of course things that I cannot deal with. To further clarify what the book is about, let me contrast it against related topics that are outside its scope:

The book is not about web development in general. Its focus is on the interplay of code and content, which is more specific, although there may be overlaps. If you are interested in web development in general, I would refer you to the literature that is available, including books by Martin Fowler on

Patterns of Enterprise Application Architecture

(Fowler 2003) and Paul Dyson and Andy Longshaw on

Architecting Enterprise Solutions

(Dyson Longshaw 2004).

I am not going to talk about specific programming languages or tools. Java, PHP, Ruby, JavaScript, XML, HTML and CSS are just a few examples of languages that play a role in web development, but this book isn’t an introduction into any of them, nor is it an introduction to any specific content management system. Instead, it describes techniques and strategies that work well with different languages and tools.

The book is not about developing a content management system. The book tells you how to define an architecture that

involves

a content management system, but how to

develop

such a system is outside its scope. However, when you select a content management system for your project, you can use this book to evaluate different systems and see how well they support the architectural principles for advanced websites and web platforms.

Groupware applications, even if they are web-based, are outside the scope of this book. Forums, chatrooms and the like are becoming more and more popular, but although they often appear next to web content, content management and content delivery on one hand and groupware on the other are different things. True enough, there is a connection if a website welcomes user participation and invites usergenerated content. I will deal with user participation in this book, but the focus will be on the content aspects, not on the interaction models for user collaboration. If you are interested in collaboration techniques and strategies, refer to the book by Till Schümmer and Stephan Lukosch on

Patterns for Computer-Mediated Interaction

(Schümmer Lukosch 2007).

This book is not about web design and web usability. I am not going to tell you what your web pages should look like, and not going to talk about what kinds of interaction are good and what are not. If you are interested in these topics, refer to books on web page ergonomics (for example Hackos Redish 1998, Krug 2006) and on interface design (for example Tidwell 2005, Scott Neil 2009).

A current trend in many companies,

enterprise content management

refers to strategies used to evaluate, maintain and access content in an organisation (Rockley 2002). It is related to information architecture, which can be defined as ‘the combination of organization, labelling and navigation schemes within an information system’ (Rosenfeld Morville 2006). These topics may enter into what I discuss in this book, but they are not in its focus.

Why this book matters

You should now have a pretty good idea of what the book is about. As a next step I’d like to tell you why this book matters – why it contains material that is important and why it can be crucial to your project’s success. Here are some reasons why you should benefit from reading this book:

Many existing websites started several years ago. If you look behind the scenes you will notice that quite often the architecture hasn’t evolved to the degree to which the functionality has grown. Over the years rich interactions, backend integration or personalisation may have been added, but often in an ad-hoc way. Maintainability and scalability problems are the logical consequence. By addressing these issues, the patterns in this book can improve your site’s longevity.

The last few years have seen several new trends and technologies emerge. Web 2.0 has brought us personalisation and user involvement. Ajax (Asynchronous JavaScript and XML) as an underlying technology has made browser-based richclient techniques popular, as well as asynchronous communication between browser and server. It’s safe to assume that these techniques are here to stay. But these more advanced techniques have also lead to increased complexity. The patterns in this book tell you how to use these techniques with a reasonable degree of caution, so that unnecessary complexity can be avoided and maintainability improved.

These days websites are more crucial to an organisation’s business model than they were a few years ago. The information and services offered on a website are often part of an organisation’s fundamental business processes. Think of the plethora of corporate websites, e-government sites or online shops. As Chris Anderson has outlined in his famous article

The Long Tail

(Anderson 2006), niche markets have flourished a lot over the last couple of years as a consequence of using the Internet as a distribution channel. Of course, non-niche markets can benefit from Internetbased distribution too. A reliable site based on a solid architecture can therefore represent solid business value.

Different groups of people are involved in the development and operation of a website. There are users, content editors, software developers, operators and sometimes others. These different groups take different perspectives and have different priorities. This book acknowledges this fact and thus helps you to reconcile the requirements brought in by the different stakeholders in a web project.

Who should read this book

This book is aimed at the IT people involved in a web project. If you’re involved as an architect, a software designer, a developer or an IT manager, then this book should be useful for you. You should be able to benefit from it in different ways:

You can use the book if the plan is to develop a new website or web platform and you want to ensure a solid architecture as a starting point. The patterns here will help you to create a ‘big picture’ for your architecture and will also guide you through more detailed design decisions.

The book should be equally useful if you are working towards the relaunch of an existing site. Adding lots of new features can be a challenging task. The patterns in the book can help you to evolve the architecture of your site and to integrate new functionality smoothly.

It is sometimes a good idea to improve the internal structure of a software system without changing its external behaviour. This process is known as

refactoring

(Fowler 1999) and is a good strategy if software longevity is a goal. If you plan to refactor your website, this book can help you to head in the right direction and take the right steps.

Finally, you can use this book when you have to select a tool or a technology. For example, you might have to decide between the Java world, the PHP world, the world of Ruby on Rails or others. Similarly you may have to decide on a specific content management system. There are plenty of systems available, and picking the right one can be difficult. Which technology and which tools best fit your platform depends on how well they can be used to implement your architecture. You can use the patterns in this book to evaluate the options you have.

Whatever your interest in web projects, and whatever role you may take in such a project, I wish you a pleasant journey through the patterns presented here.

Acknowledgements

Writing a book always involves more people than just the author. I’d like to thank everyone who has helped me with this book project over the last couple of years.

Project thanks

First I’d like to thank those people with whom I worked on the projects where I mined the patterns. The customers for the projects should remain anonymous, but if you recognise any of the projects and you were involved, I’d like to thank you for good ideas, insightful discussions and fruitful collaboration.

Over the years I’ve presented many of the ideas expressed in this book at various conferences. I’ve received lots of encouragement and valuable feedback from many people:

I presented some early ideas in a workshop on web content management that I ran at the OT 2004 conference in Cambridge. Thanks to everybody who participated.

I presented sections of the book at various pattern conferences – EuroPLoP 2005, 2006 and 2007, and VikingPLoP 2006. Prior to these conferences I received much helpful feedback from the people who acted as shepherds for the conference papers: Uwe Zdun, Michael Weiss and Jorge Luis Ortega Arjona, whom I’d like to thank for encouragement, helpful comments and thought-provoking questions. At the conferences the papers were taken to writers’ workshops, where they received indepth reviews. Thanks to all workshop participants for many helpful comments.

Bird-of-a-feather sessions at EuroPLoP 2005 and 2006 spawned more interesting ideas on the areas addressed here. Thanks go out to Joe Bergin and Michael Weiss, Allan Kelly, Rui Lopes and Patrick Morisson.

A focus group at EuroPLoP 2007 shed much light on the pros and cons of Ajax technology. I’d like to thank all participants for their valuable contributions.

I’ve also received a lot of help and support during the publication process, and I’m equally grateful for that:

First of all, thanks go out to Birgit Gruber of John Wiley and Sons for her work as editor. She offered lots of enthusiasm and encouragement following our first meeting at EuroPLoP 2008 and provided a lot of help in making this book come to life.

Thanks also to Rosie Kemp and Sally Tickner, then of John Wiley and Sons, for their support during the early stages of this effort.

I’d also like to thank Chris Webb, Colleen Goldring, Ellie Scott, Claire Spinks and Louise Breinholt of John Wiley and Sons for their support during the production process.

Steve Rickaby of WordMongers was the copy-editor for this book and, as with

Agile Documentation

six years ago, it’s again been a smooth ride through the copyediting process. Thanks for taking care of layout and language, and for ultimately turning the manuscript into a book.

Several people provided feedback on the book proposal and made helpful suggestions for improvement. Thanks are due to Peter Sommerlad, Stephan Lukosch and Till Schümmer.

Special thanks go to Till Schümmer who, in addition to his earlier feedback, provided an in-depth review of the full manuscript. He offered many comments at an amazing level of detail and helped me fine-tune the manuscript, making it clearer, more complete and more comprehensible. His support had a lasting and very positive effect on the book.

Publishers and IT folks, it’s been a pleasure to work with you. Thanks a lot!

Family thanks

It’s not just publishers and IT folks whom I’d like to thank. Family support has always been important, whatever form it may have taken. Wholehearted thanks go out to all of you: Hiltrud, Jutta, Sven-Folker, Magnus, Nils Johann and Mareike.

It was my father who first got me interested in computing. This book is dedicated to his memory.

Introduction

The main contribution of this book is a collection of patterns. Patterns describe what has worked well in many practical cases. They are meant to capture mature knowledge, not to express novel ideas. This is why patterns aren’t invented, but instead are observed from practical experience.

Project background

The patterns in this book have emerged from years of practice. The following table gives an overview of the projects from which I have mined them.

INDUSTRY

PROJECT DESCRIPTION

Insurance

An insurance portal. Employees from different branches of an associated bank can use this portal for selling insurance products to their customers. The portal offers detailed product information and is an entry point for ordering transactions.

Government

The website for a German federal body. The content includes political brochures, press releases, member information and announcements of public events.

Government

The Digital Town Hall. An architectural framework for a municipal service portal, the Digital Town Hall offers a wide range of communal information and public administration services.

Government

A portal for e-government knowledge exchange. Targeted at various egovernment initiatives all over the country, this portal allows registered users and workgroups to plan joint efforts and to exchange documents. The portal also offers a community platform for discussions about e-government.

Retail

A trade portal for electronic parts. This highly personalised site sells electronic parts to industry customers and offers user-specific navigation, a product catalogue and a newsletter. The personalisation is based on user-specific interest profiles.

Retail

An online shop with a personalised bonus system. Users can buy items from any of the associated retail companies and receive bonus points for their purchases. They can redeem bonuses at the shop. A recommendation engine suggests products that match the user’s profile.

Entertainment

An online shop for selling digital assets, especially music files. Much in the vein of Web 2.0, the site includes an integrated community platform. Apart from buying music, users can rate it, offer comments, suggest items to other users and publish their favourite playlists.

Retail

A catalogue for household devices sold by a retail company. The catalogue includes product descriptions, images and technical data. It is maintained by content editors and used for marketing purposes.

These projects were carried out for different customers and applied a wide range of technologies. I was involved in different roles, including architect, designer, developer and reviewer, so I had the chance to look at what worked well and what did not from very different angles.

Although these projects were quite different in some respects, including size and technology, I found they had quite a few things in common. I repeatedly ran into similar situations, facing similar questions or design problems. All projects required a good deal of custom software development, despite the content management systems and other tools that were of course used. All projects had to align information architecture (the content perspective) with software development (the code perspective). All projects were faced with similar non-functional requirements, most importantly efficiency and maintainability.

This is what motivated me to collect the lessons learned from these projects. I’ve always liked the idea of using patterns for capturing knowledge, so I soon decided to shape these best practises into pattern form. And this is where you have now arrived – at a collection of patterns for architecting advanced websites.

Organisation of the book

Before starting with the actual patterns, let me briefly explain how the book is organised:

Chapter 1

starts with the big picture. It introduces the major components that are usually part of the software architecture behind a website. On one hand, this includes standard components like a content management system, a web server, an application server and a search engine. On the other hand, it includes the custom components that you must develop yourself. The patterns in this chapter explain how these components interact, what architectural options exist and what major design decisions you have to make.

Chapter 2

discusses the organisation and management of content. This begins with various aspects of content modelling and goes on to include things like navigation, classification, findability and validation. The content model that is developed in this chapter is rather fundamental. It forms the technical basis for how content is maintained by content editors, for how content is delivered to the web and for how content is perceived by the users.

Chapter 3

deals with content delivery. This includes content retrieval from a repository, its rendering for presentation on the web, possible user interaction and the inclusion of client-side functionality. It addresses the design decisions that you have to make when you develop your server-side custom components. Because nonfunctional requirements such as maintainability, efficiency and scalability play an important role here, the focus of this chapter is the conceptual separation of structured content from its layout and presentation.

Chapter 4

specifically introduces personalisation and user involvement. Personalisation refers to the idea of tailoring the content of your site to specific users or user groups. User involvement is more than this. Made popular by Web 2.0, user involvement refers to things like user-generated content, folksonomies and content rating. Implementing such features requires a few additions to the content model, as well as additions to the web delivery functionality, which is what this chapter is about.

Chapter 5

presents patterns on infrastructure and deployment. These patterns address the environments and processes for website development, testing and operation on one hand and the environments and processes for content creation and maintenance on the other.

Figure 3 gives an overview of the patterns in the book. Arbitrary relationships between patterns are represented by lines. The patterns of each chapter form a cluster, as they address related topics. There are also relationships between patterns from different chapters, as you can see from the grey lines that are drawn across clusters. Specifically, the patterns in Chapter 1 define an overall architecture which gradually unfolds as we introduce more patterns in the chapters that follow. At the beginning of each chapter I’ll zoom into this big picture and present a diagram that gives an overview of the patterns of that chapter, including an explanation of how they are related.

Following the main chapters, I’ll conclude with two brief checklists that may be helpful for you from a project management point of view. The first checklist identifies the typical tasks and work packages for a web project. The second summarises important criteria for the evaluation and the selection of a content management system.

The preface introduced the House of Effects – the museum of nature and science that is in need of a new website with information, online presentations, event announcements and an online shop. Throughout this book I’m going to use the House of Effects as a running example. Although the House of Effects is a fictitious example, it is in fact a blend of requirements and concepts from the real-world projects that I’ve mentioned earlier. The House of Effects is actually quite realistic. You’ll learn more about it as we go.

Figure 3: Overview of the patterns

1Architecture Overview

If you refer to the preface you will see that there are many things on our agenda for this book – we are going to address a wide range of topics. We’ll look at how web content is managed, how interactive platforms are built and how personalisation can be brought in. We’ll study modelling and design as well as infrastructure and deployment.

But before we go into the details, let’s study the big picture first. I’d like to develop the patterns by piecemeal growth, beginning with the more fundamental principles and then letting the big picture unfold to reveal more detailed aspects. This first chapter should therefore get us started with an introduction into the overall architecture of a website or web platform.

On the next few pages, I’d like to address the following basic questions: