IT Architectures and Middleware Second Edition Strategies for Building Large, Integrated Systems CHRIS BRITTON PETER BYE Boston • San Francisco • New York • Toronto • Montreal London • Munich • Paris • Madrid • Capetown Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and Addison-Wesley was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. The publisher offers discounts on this book when ordered in quantity for bulk purchases and special sales. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 [email protected] For sales outside of the U.S., please contact: International Sales (317) 581-3793 [email protected] Visit Addison-Wesley on the Web: www.awprofessional.com Library of Congress Cataloging-in Publication Data CIP Data on file. Copyright © 2004 by Unisys Corporation. Published by Addison-Wesley 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, without the prior consent of the publisher. Printed in the United States of America. Published simultaneously in Canada. For information on obtaining permission for use of material from this work, please submit a written request to: Pearson Education, Inc. Rights and Contracts Department 75 Arlington Street, Suite 300 Boston, MA 02116 Fax: (617) 848-7047 ISBN 0-321-24694-2 Text printed in the United States on recycled paper at RR Donnelley Crawfordsville in Crawfordsville, Indiana. 4th Printing June 2009 To my wife, Judy, and children, Katie and Alice. —CB To my wife, Alison. —PB Contents Figures Boxes Preface Acknowledgments CHAPTER 1 The Problem 1.1 Example: Moving to e-business 1.2 What is IT architecture? 1.3 Why is this different from what we did before? 1.4 Rewrite or evolve? 1.5 Who develops the architecture? 1.6 Summary CHAPTER 2 The Emergence of Standard Middleware 2.1 Early days 2.2 Preliminaries 2.3 Remote procedure calls 2.4 Remote database access 2.5 Distributed transaction processing 2.6 Message queuing 2.7 Message queuing versus distributed transaction processing 2.8 What happened to all this technology? 2.9 Summary CHAPTER 3 Objects, Components, and the Web 3.1 Using object middleware 3.2 Transactional component middleware 3.2.1 COM+ 3.2.2 EJB 3.2.3 Final comments on TCM 3.3 Internet Applications 3.4 Summary CHAPTER 4 Web Services 4.1 Service concepts 4.2 Web services 4.3 Using Web services: A pragmatic approach 4.4 Summary CHAPTER 5 A Technical Summary of Middleware 5.1 Middleware elements 5.1.1 The communications link 5.1.2 The middleware protocol 5.1.3 The programmatic interface 5.1.4 Data presentation 5.1.5 Server control 5.1.6 Naming and directory services 5.1.7 Security 5.1.8 System management 5.1.9 Comments on Web services 5.2 Vendor architectures 5.2.1 Vendor platform architectures 5.2.2 Vendor-distributed architectures 5.2.3 Using vendor architectures 5.2.4 Positioning 5.2.5 Strawman for user target architecture 5.2.6 Marketing 5.2.7 Implicit architectures 5.3 Middleware interoperability 5.4 Summary CHAPTER 6 Using Middleware to Build Distributed Applications 6.1 What is middleware for? 6.1.1 Support for business processes 6.1.2 Information retrieval 6.1.3 Collaboration 6.2 Tiers 6.2.1 The presentation tier 6.2.2 The processing tier 6.2.3 The data tier 6.2.4 Services versus tiers 6.3 Architectural choices 6.3.1 Middleware bus architectures 6.3.2 Hub architectures 6.3.3 Web services architectures 6.3.4 Loosely coupled versus tightly coupled 6.4 Summary CHAPTER 7 Resiliency 7.1 Using backup servers 7.1.1 Detecting failure 7.1.2 Cleanup work in progress 7.1.3 Activating the application 7.1.4 Reprocessing “lost” messages 7.2 Dual active 7.3 Applying resiliency techniques 7.4 System software failure 7.5 Planned downtime 7.6 Application software failure 7.7 Developing a resiliency strategy 7.8 Summary CHAPTER 8 Performance and Scalability 8.1 The un-slippery slope 8.2 Transaction processing 8.2.1 Object interfaces