CONTENTS Title Page Copyright Page Preface 1 Introduction to Digital's Network Application Support 1.1 What is NAS? 1.2 Traditional Design Techniques 1.3 The Expanding Computing Environment 1.4 Designing an NAS Application 1.4.1 Making Applications Portable Across Systems 1.4.2 Integrating Applications 1.4.3 Distributing Applications Across a Network 2 Designing Applications for Portability 2.1 The Myth of Portability 2.2 Choosing Programming Languages 2.3 Choosing Services 2.3.1 Using Industry-Standard Programming Interfaces 2.3.2 NAS Support for Standard Interfaces 2.4 Avoiding Operating System Dependencies 2.5 Avoiding Hardware Dependencies 2.6 Other Considerations When Designing for Portability 2.6.1 Portability and Data Design 2.6.2 Portability and User Interface Design 2.6.3 Portability and Documentation Design 2.6.4 Designing Programming Interfaces 3 Designing Applications for Integration 3.1 Understanding How Integration Affects the Application 3.1.1 Traditional Approaches to Integrating Application Functions 3.1.2 Separating the Communication from the Message 3.1.3 Using Object-Oriented Design to Maximize Integration 3.2 Degrees of Integration 3.2.1 Integrating the User Interface 3.2.1.1 Advantages of DECwindows/Motif 3.2.1.2 Style is More than Just Programming Correctly 3.2.2 Integrating the Application Data 3.2.2.1 Sharing Data Files 3.2.2.2 Sharing Data Interactively 3.2.3 Integrating the Application Functions 4 Designing Distributed Applications 4.1 Advantages of Distributed Applications 4.2 Choosing the Resources to Distribute 4.2.1 Distributing the Application Data 4.2.2 Distributing the User Interface 4.2.3 Distributing Application Functions 4.3 Techniques for Distributing Application Resources 4.3.1 Using NAS Services for Transparent Distribution 4.3.1.1 Remote Access to Resources 4.3.1.2 Using Distributed Services 4.3.2 Distributing Application Functions 4.3.2.1 Using the Client/Server Model to Design Distributed Applications 4.3.3 Using Messaging to Distribute Application Functions 4.3.3.1 Design Considerations for Distributed Applications FIGURES 1-1 A Modular View of Software Design 1-2 A Model for Portable Software 1-3 A Model for Software Integration 1-4 A Model for Distributed Software 3-1 Using Converters to Integrate Applications 3-2 CDA Converter Library Architecture 3-3 Objected-Oriented Application Design 3-4 Levels of Integration 3-5 Object-Oriented Design and DECwindows/Motif 3-6 How ACS Integrates Applications 4-1 Levels of Distribution 4-2 Using NAS Services to Distribute an Application 4-3 Using Remote Procedure Calls to Distribute Application Modules 4-4 Using Messaging to Distribute an Application 4-5 Using Queued Messages in a Distributed Application TABLES 2-1 Programming Languages and Applicable Standards 2-2 Digital Compiler Options for Language Standards