Web software development and cloud computing, which are based on Service-Oriented Architecture (SOA), Service-Oriented Computing (SOC), and Service-Oriented Development (SOD), represent the modern software engineering theory, practices, and technologies. The availability and unification of computing capacities and data resources are reshaping the world. The latest wonder of technology is the Big Data. The amount of the data is not the key. The relationship among all data is the key.  Finding the connections of all related data and making use of the connections to make decisions become possible after the maturity of cloud computing and related data management technologies.

The text takes a comprehensive and coherent approach to study the latest distributed and service-oriented architecture, distributed computing paradigm, and distributed software development and integration technologies.  

The goal is to learn the concepts, principles, methods, development frameworks, and their applications. The methodology is learning by developing examples. In the service development part, we assume that students have good knowledge in object-oriented computing. Students learn to build services through class definition, interface specification, the association between class methods and service operations, service deployment and service hosting. In the software integration part, we assume that students have basic understanding of software architecture. We take an architecture-driven approach to help students creating the working solution step by step from their architecture design. The first step is to design the architecture, which includes the major components and the interconnection. The next step is to define the interfaces among the componenents using the standard data types.  Finally, the behavior of each component is linked to a remote service or a local object. The elaborated architecture is automatically translated into the executable. The text consists of 14 chapters and 3 appendices, which are organized into three parts.

Part I: Distributed Service-Oriented Software Development and Web Data Management

Chapter 1    Introduction to Distributed Service-Oriented Computing

Chapter 2   Distributed Computing with Multithreading    

Chapter 3    Essentials in Service-Oriented Software Development

Chapter 4    XML Data Representation and Processing

Chapter 5    Web Application and Data Management

Chapter 6    Dependability of Service-Oriented Software

Chapter 7    Advanced Services and Architecture-Driven Application Development

Chapter 8    Enterprise Software Development and Integration

Chapter 9    Service-Oriented and Event-Driven Robotics Applications

Chapter 10  Interfacing Service-Oriented Software with Databases

Chapter 11 Big Data and Ontology Systems

Chapter 12 Service-Oriented Application Architecture

Chapter 13 A Mini Walkthrough of Service-Oriented Software Development

Chapter 14 Cloud Computing and Software as a Service

Appendix A  Web Application Development

Appendix B  Service-Oriented Robotics Applications

Appendix C  ASU Repository of Services and Applications

Part I includes the first six chapters, which can be used for a service-oriented computing and distributed software development course at the senior level or graduate level of universities. This part emphasizes the computing paradigm, data representation, state management, and programming language-based SOC software development. It introduces fundamental concepts and principles, in addition to technologies and tools, which are not being taught in traditional software engineering courses.

Chapter 1 gives an overview and explains fundamental concepts of distributed software architecture, design patterns, distributed computing, service-oriented architecture, and enterprise software architecture. The connections and distinctions between object orientation and service orientation are discussed in detail.

Chapter 2 studies parallel computing in multithreading. It discusses threading, synchronization, coordination, event-driven programming, and performance of parallel computing under multicore computers.

Chapter 3 introduces the essential concepts and techniques in service-oriented architecture, particularly the three-party model of service-oriented software development: Service providers, service brokers, and service consumers. Service interfaces, service communication protocols, and service hosting are keys for supporting this new computing paradigm.

Chapter 4 discusses XML and related technologies, which are used in almost everywhere in service oriented software development. XML is used for representing data, interface, standards, protocols, and even the execution process definition. This chapter studies not only XML representations, but also XML processing and transforming.

Chapter 5 is a long chapter and comprises application logic, data and state management, and presentation design. It involves application building based on architecture design using existing services and components, stateful Web application development using different state management techniques, including view state, session state, application state, file management, and Web caching. At the presentation layer, it discusses dynamic graphics generation, animation, and phone app development.

Chapter 6 deals with the dependability issues in Web-based applications, including access control through Forms security, encryption and decryption applications, and Secure Sockets Layer in Web communication. The chapter also discusses the reliability issues in Web application design and particularly in Web communication.

Part II includes the next eight chapters. These chapters are built on the basic concepts and principles discussed in Part I, yet they do not rely on the details of the first six chapters. This part emphasizes software composition and integration using existing services and components. The approach is based on architecture-driven approach, higher-level of data management, and message-based integration.

Chapter 7 starts with reviewing service-oriented computing and service development covered in Part I. Then the chapter moves to discuss more advanced service development that supports asynchronous communications. It also presents more detail in RESTful service development that has been briefly discussed in Part I. Finally, the chapter moves to Workflow Foundation that supports architecture-driven software development. It uses examples and case studies to demonstrate software development by drawing the flowchart consisting of blocks of services and local components, adding inputs/outputs to the blocks, and then compiling the flowchart into executable.

Chapter 8 further discusses flowchart-based and architecture-driven software development by using other process languages and developments environments. It starts with BEPL and BPEL-based development environments. Then the discussion is extended into message-based software integration, Enterprise Service Bus, and Mashup tools for integrating Web contents.

Chapter 9 extends Web-based computing to cyber-physical devices and Internet of Things. As an example, robotics applications are studied in detail, which use the service-oriented Visual Programming Language (VPL) to develop robotics services and applications. Distributed robotics applications and Robot as a Service (RaaS) are also studied.

Chapter 10 is on service-oriented database management, which focuses the interface between service-oriented software and relational database, XML database, and LINQ (Language Integrated Query) and using LINQ to access object, relational database, and XML database. LINQ is the focus of the chapter.

Chapter 11 studies the major issues in big data, including big data infrastructure, big data management, big data analytics, and big data applications. The relationship between big data and cloud computing is discussed. Ontology is presented as a part of big data representation and big data processing techniques.

Chapter 12 focuses on the application layer of service-oriented computing systems. It compares and contrasts the architectures and features of a few major enterprise software systems.

Chapter 13 offers a full case study on service-oriented software development.

Chapter 14 dedicates to cloud computing, which introduces the most recent trend in cloud computing and data centers. It covers multi-tenancy architecture, Web databases and file systems, scheduling, and fault-tolerant techniques in cloud computing and in real-time computing. It also presents cloud computing platforms and development environments from Google, Microsoft, and Salesforce.com. Software as a Service is the focus of the chapter.

Part III has three appendices that supplement and support the contents on Web application development and service-oriented robotics application development.

Appendices A and B contain tutorial-based materials that provide stepwise instructions, without missing pieces, to build working applications from scratch. These tutorials and exercises can help students to learn concepts by examples. This part, in conjunction with Chapter 9, can also be used for a freshman level course to introduce computing concepts through robotics programming and Web application programming.

Appendix C is the entrance to ASU Repository of Services and Applications. It lists and explains some of the deployed examples and URLs of SOAP services, RESTful services, Web applications, and other resources used in this text. Free services found on Internet come and go without any guarantee on quality of service. The repository provides a stable resource for teaching from this book without worrying about the availability and performance of the free services found on Internet. ASU Repository of Services and Applications is open to public and can be accessed at the link: http://venus.eas.asu.edu/WSRepository/

The book embraces extensive contents. It can be used in multiple courses. At Arizona State University, we use the book as the text for two major courses. The first course is CSE445/598 (Distributed Software Development), where the CSE445 session is for seniors and the CSE598 session is for graduate students. The course started in Fall 2006, and first edition of the book was developed for this course in 2008. Now the contents in Part I of this text are used for this course.

A second course CSE446/598 (Software Integration and Engineering) was piloted in 2010 and 2011, and then the course becomes a regular course in 2012. Part II of this text is used for this course.

Both CSE445 and CSE446 are required courses of the Software Engineering Concentration in the Computer Science program at Arizona State University.

We recommend teaching the two courses in a sequence. However, the two courses can be taught independently without making one to be the prerequisite of the other. In this case, the basic concepts and principles from Part I, including those from a part of Chapter 1 and the first section of Chapter 4, should be reviewed or be assigned as reading materials for preparing the course using Part II.

We like to thank many of our sponsors, colleagues, and students in this project, particularly in preparing this edition of the book, including Prof. Xiaoying Bai of Tsinghua University, Mr. Calvin Cheng of Banner Health, Dr. J. Y. Chung of IBM, Prof. Yingxu Lai of Beijing University of Technology, Prof. Zhongshi He of Chongqing University, Prof. Mei Hong of Shanghai Jiaotong University, Dr. K. W. Hwang of IBM, Prof. Zhi Jin of Peking University, Prof. Y. H. Lee of Arizona State University, Prof. Yisheng Li of Fudan University, Mr. John Oliver of Intel, Dr. Raymond Paul of DoD OSD NII, Profs. Qian Wang and Yongkang Xing, Profs. Ruzhi Xu and Zhizheng Zhou of Shandong University of Finance and Economics, and Prof. S. S. Yau of Arizona State University. They contributed to our understanding of the materials. We also acknowledge the generous support from Intel, the U.S. Department of Education, the U.S. Department of Defense, and the National Science Foundation. Without their support, this book would not be possible. We also thank the teaching assistants and research assistants at Arizona State University. They validated many of the examples and assignments used in the book. Finally, we would like to thank our families for their support and understanding of taking on such a project while carrying out a full research and teaching load at the university.

Note for Instructors

All the assignments and projects have been classroom-tested at Arizona State University. Furthermore, all the code presented in this book has been developed and tested. Contact the authors if you are interested in obtaining more materials in this book. Instructor-only resources, such as complete presentation slides, assignments, and tests, can be obtained by directly contacting the authors at {yinong, wtsai}@asu.edu.

Yinong Chen, Arizona State University

Wei-Tek Tsai, Arizona State University and Tsinghua University

June 2014 (Fourth Edition)
Table of Contents

Preface (Fourth Edition) xiii

Preface (First Edition) xviii

Part I                Distributed Service-Oriented Software Development and Web Data Management 1

Chapter 1      Introduction to Distributed Service-Oriented Computing. 3

1.1                 Computer Architecture and Computing Paradigms. 3

1.1.1               Computer Architecture. 3

1.1.2               Software Architecture. 4

1.1.3               Computing Paradigms. 4

1.2                 Distributed Computing and Distributed Software Architecture. 7

1.2.1               Distributed Computing. 7

1.2.2               N-Tier Architecture. 8

1.2.3               Distributed Object Architecture. 10

1.3                 Service-Oriented Architecture and Computing. 12

1.3.1               Basic Concepts and Terminologies. 12

1.3.2               Service-Oriented Computing. 15

1.3.3               Object-Oriented Computing versus Service-Oriented Computing. 17

1.3.4               Service-Oriented System Engineering. 20

1.4                 Service-Oriented Software Development and Applications. 21

1.4.1               Traditional Software Development Processes. 21

1.4.2               Service-Oriented Software Development 21

1.4.3               Applications of Service-Oriented Computing. 24

1.4.4               Web Application Composition. 26

1.5                 Enterprise Software Development 27

1.6                 Discussions. 30

1.7                 Exercises and Projects. 35

Chapter 2      Distributed Computing with Multithreading. 41

2.1                 Introduction to C# and .Net 41

2.1.1               Getting Started with C# and .Net 41

2.1.2               Comparison between C++ and C#. 43

2.1.3               Namespaces and the “using” Directive. 44

2.1.4               Class and Object in C#. 46

2.1.5               Parameters: Passing by Reference with ref & out 48

2.1.6               Base Class and Base Calling Class Constructor 49

2.1.7               Constructor, Destructor, and Garbage Collection. 49

2.1.8               Pointers in C#. 50

2.1.9               C# Unified Type System... 51

2.2                 Memory Management and Garbage Collection. 52

2.2.1               Static Variables and Static Methods. 53

2.2.2               Runtime Stack for Local Variables. 53

2.2.3               Heap for Dynamic Memory Allocation. 55

2.2.4               Scope and Garbage Collection. 56

2.3                 General Issues in Multitasking and Multithreading. 57

2.3.1               Basic Requirements. 57

2.3.2               Critical Operations and Synchronization. 57

2.3.3               Deadlock and Deadlock Resolving. 60

2.3.4               Order of Execution. 61

2.3.5               Operating System Support for Multitasking and Multithreading. 61

2.4                 Multithreading in Java. 63

2.4.1               Creating and Starting Threads. 63

2.4.2               Thread Synchronization. 67

2.4.3               Synchronized Method. 67

2.4.4               Synchronized Statements. 71

2.5                 Multithreading in C#. 72

2.5.1               Thread Classes and Properties. 72

2.5.2               Monitor 72

2.5.3               Reader and Writer Locks. 81

2.5.4               Mutexes. 85

2.5.5               Semaphore. 85

2.5.6               Coordination Event 86

2.6                 Exception Handling and Event-Driven Programming. 88

2.6.1               Exception Handling. 88

2.6.2               Event-Driven Programming. 92

2.6.3               Case Study: An Electronic Commerce Application in Event-Driven Approach. 97

2.7                 Multithreading Performance. 102

2.7.1               Amdahl’s Law.. 102

2.7.2               Multithreading Experiments. 102

2.8                 Discussions. 107

2.8                 Exercises and Projects. 109

Chapter 3      Essentials in Service-Oriented Software Development 119

3.1                 Service-Oriented Software Development Environments. 119

3.1.1               Overview.. 119

3.1.2               Windows Communication Foundation. 121

3.1.3               Service Interface: Address, Binding, and Contract 122

3.2                 Service Provider: Creating and Hosting Services. 123

3.2.1               Getting Started with Developing WCF Services. 124

3.2.2               Testing Web Services. 126

3.2.3               File Service and Data Management 129

3.2.4               Hosting Your Web Services as a Service Provider 130

3.3                 Service Brokers: Publishing and Discovering Services. 133

3.3.1               An Ideal Service Broker with All Desired Features. 133

3.3.2               UDDI Service Registry. 136

3.3.3               ebXML Service Registry and Repository. 143

3.3.4               Ad Hoc Registry Lists. 145

3.4                 SOAP and HTTP. 145

3.4.1               SOAP Format 145

3.4.2               HTTP. 146

3.4.3               SOAP Over HTTP. 147

3.5                 WSDL: Web Services Description Language. 149

3.5.1               Elements of WSDL Documents. 149

3.5.2               WSDL Document Example. 150

3.6                 Service Requesters: Building Applications Using Services. 152

3.6.1               Connecting Endpoint and Proxy. 152

3.6.2               Creating a Windows Forms Application in ASP.Net 153

3.6.3               Developing a Web Site Application to Consume WCF Services. 157

3.6.4               Consuming Services in Different Platform... 161

3.7                 Web Service Testing and Dynamic Service Invocation. 162

3.7.1               Get Web Content from URL.. 162

3.7.2               Analyze WSDL Document 163

3.7.3               Test Web Service. 163

3.7.4               Dynamic Web Services and Web Applications. 164

3.8                 Java-Based Web Service Development 164

3.8.1               Web Application Building Using AJAX Programming. 164

3.8.2               Java-Based Web Service Development and Hosting. 166

3.9                 Discussions. 168

3.10               Exercises and Projects. 171

Chapter 4      XML Data Representation and Processing. 177

4.1                 XML Fundamentals. 177

4.1.1               XML versus HTML.. 178

4.1.2               XML Syntax. 179

4.1.3               XML Namespaces. 182

4.2                 XML Data Processing. 182

4.2.1               DOM: Document Object Model 183

4.2.2               SAX: Simple API for XML.. 185

4.2.3               XML Text Writer 187

4.2.4               XML Processing in Java. 188

4.3                 XPath. 189

4.4                 XML Type Definition Languages. 192

4.4.1               XML Document Type Definition (DTD) 192

4.4.2               XML Schema. 194

4.4.3               Namespace. 196

4.4.4               XML Validation. 198

4.5                 Extensible Stylesheet Language. 200

4.6                 Other Web Data Formats. 204

4.6.1               XHTML.. 205

4.6.2               RSS. 207

4.6.3               Atom... 209

4.6.4               Google Protocol Buffers and BigTable. 211

4.7                 Discussions. 212

4.8                 Exercises and Projects. 213

Chapter 5      Web Application and State Management 219

5.1                 Models of Web Applications. 219

5.1.1               Pure HTML-Based Web Application. 219

5.1.2               Client-Side Scripting. 220

5.1.3               Server-Side Scripting and Code-Behind Page Computing. 221

5.1.4               Client-Side Out-Of-Browser Computing. 222

5.2                 Structure of Web Applications. 223

5.2.1               Components of Web Applications. 223

5.2.2               Server Controls. 225

5.2.3               User Controls. 229

5.2.4               Web Application Configuration. 231

5.2.5               Global Application Class. 235

5.2.6               Dynamic Link Library. 236

5.3                 State Management 237

5.3.1               Overview of State Management Techniques. 237

5.3.2               View State. 238

5.3.3               Session State. 240

5.3.4               Cookies. 243

5.3.5               Session State and Cookies. 245

5.3.6               Application State and Service Execution Model 246

5.4                 Save User Data to Server File System.. 247

5.4.1               File System and Standard File Operations. 247

5.4.2               Reading and Writing XML Files. 248

5.5                 Caching and Recommendation. 251

5.5.1               Output Caching. 252

5.5.2               Fragment Caching. 253

5.5.3               Data Caching. 254

5.6                 Dynamic Graphics Design and Generation. 261

5.6.1               Dynamic Graphics. 262

5.6.2               Getting Started with Dynamic Graphics Generation. 263

5.6.3               Generating Dynamic Graphics in User Control 265

5.7                 Mobile Computing and Phone Application Development 269

5.7.1               Silverlight Applications. 270

5.7.2               Developing Windows Phone Apps Using Silverlight 272

5.7.3               Android Phone App Development with App Inventor 279

5.8                 Architecture Design. 285

5.8.1               ASP .Net Forms-Centric Architecture. 286

5.8.2               ASP .Net MVC Architecture. 286

5.9                 Discussions. 288

5.10               Exercises and Projects. 289

Chapter 6      Dependability of Service-Oriented Software. 295

6.1                 Basic Concepts. 295

6.1.1               Dependability. 295

6.1.2               Dependability Attributes and Quality of Service. 297

6.1.3               Security Issues in SOA Software. 297

6.2                 Access Control in Web Applications. 300

6.2.1               IIS and Windows-Based Security Mechanisms. 300

6.2.2               Forms-Based Security. 302

6.2.3               User Registration and Account Management 308

6.3                 Encryption and Decryption. 311

6.3.1               Developing Encryption and Decryption Service in WCF. 311

6.3.2               Developing a Secure Hashing Service in WCF. 313

6.3.3               WCF Service Client 314

6.3.4               Error Control Code. 316

6.3.5               Secure Sockets Layer Cryptographic Protocols. 318

6.4                 Dependable Computing in Windows Communication Foundation. 318

6.4.1               WS-Security. 319

6.4.2               WS-Reliability. 320

6.4.3               Transactions. 322

6.5                 Discussions. 324

6.6                 Exercises and Projects. 327

Part II              Advanced Service-Oriented Computing and System Integration. 331

Chapter 7      Advanced Services and Architecture-Driven Application Development 333

7.1                 Self-Hosting Services. 333

7.1.2               Developing Clients to Consume Self-Hosting Services. 337

7.2                 Advanced WCF Services. 342

7.2.1               Advanced Communication Models. 342

7.2.2               Advanced Bindings. 346

7.2.3               Service Behavior and State Management 347

7.3                 REST Concept and RESTful Services. 352

7.3.1               REST Concept and REST Architecture. 352

7.3.2               RESTful Services. 353

7.3.3               Developing RESTful Service. 358

7.3.4               Developing an Image Verifier in RESTful Service. 361

7.3.5               Consuming Simple RESTful Service. 365

7.3.6               Google RESTful Services: Map Services. 366

7.3.7               RESTful Service-Based Web Application Description Language. 370

7.4                 Workflow Foundation. 371

7.4.1               Architecture and Components. 372

7.4.2               Creating a WF Flowchart Application. 374

7.4.3               Creating Custom Code Activity for Workflow Application. 376

7.4.4               Implementing Finite State Machine in Workflow.. 379

7.4.5               Creating Workflow Service. 381

7.5                 Discussions. 391

7.6                 Exercises and Projects. 393

Chapter 8      Enterprise Software Development and Integration. 399

8.1                 Overview of Composition Languages. 399

8.2                 BPEL. 402

8.2.1               BPEL Activities and Constructs. 402

8.2.2               BPEL Process. 402

8.2.3               WSDL Interface Definition of BPEL Process. 406

8.2.4               BPEL Process. 408

8.2.5               An Example Invoking Real Web Services. 411

8.3                 Stateless versus Stateful Web Services. 417

8.3.1               BizTalk’s Singleton Object Approach. 418

8.3.2               BPEL’s Correlation Approach. 419

8.4                 Frameworks Supporting BPEL Composition. 422

8.4.1               Oracle SOA Suite. 422

8.4.2               ActiveBPEL.. 423

8.4.3               BizTalk. 424

8.5                 Message-Based Integration. 425

8.5.1               Java Message Service. 426

8.5.2               Microsoft Message Queue. 427

8.5.3               Database-Supported Messaging. 429

8.5.4               Email Supported Messaging. 431

8.5.5               Enterprise Service Bus. 432

8.6                 Mashup for Web Application Integration. 432

8.7                 Other Composition Languages. 436

8.7.1               SCA/SDO.. 436

8.7.2               WSFL: Web Services Flow Language. 437

8.8                 Discussions. 439

8.9                 Exercises and Projects. 441

Chapter 9      Internet of Things and Robot as a Service. 447

9.1                 Internet of Things. 447

9.2                 Service-Oriented Robotics Computing. 449

9.3                 Event-Driven Robotics Applications. 451

9.4                 Robot as a Service. 454

9.4.1               Robot as a Service Design. 454

9.4.2               Robot as a Service Implementation. 456

9.5                 Robotics Developer Studio and Visual Programming Language. 459

9.6                 Simulating an ALU Using VPL. 463

9.6.1               Logic Design of an Arithmetic and Logic Unit 463

9.6.2               Creating VPL Activities. 464

9.6.3               VPL Diagram and Testing. 466

9.7                 Finite State Machine and VPL Diagram.. 470

9.8                 Developing Service-Oriented Robotics Applications. 475

9.8.1               Service Repository in Robotics Developer Studio. 475

9.8.2               Sensor Service. 476

9.8.3               Maze Navigation Algorithms. 477

9.8.4               Implementing a Heuristic Maze Navigation Algorithm... 478

9.8.5               Implementing a Wall-Following Maze Navigation Algorithm... 486

9.9                 Mapping VPL to Other Platforms. 487

9.10               Discussions. 490

9.11               Exercises and Projects. 491

Chapter 10    Interfacing Service-Oriented Software with Databases. 495

10.1               Databases in Service-Oriented Software. 495

10.2               Relational Databases in Service-Oriented Software. 497

10.2.1             Interface between Database and Software. 497

10.2.2             SQL Database in ADO .Net 499

10.2.3             DataAdapter and DataSet in ADO .Net 505

10.2.4             WCF RIA Service. 508

10.3               LINQ, Language Integrated Query. 509

10.3.1             What is the Purpose of LINQ?. 510

10.3.2             Lambda Expressions. 511

10.3.3             LINQ to Object 514

10.3.4             LINQ to SQL.. 516

10.3.5             LINQ to XML.. 520

10.4               XML-Based Database and Query Language XQuery. 523

10.4.1             Expressing Queries. 523

10.4.2             Transforming XML Document 525

10.4.3             XQuery Discussions. 527

10.5               Discussions. 527

10.6               Exercises and Projects. 529

Chapter 11    Big Data and Ontology Systems. 533

11.1               Big Data Systems. 533

11.2               Big Data Management 535

11.3               Big Data Processing and Analytics. 536

11.3.1             Map and Reduce. 536

11.3.2             Hadoop and Cassandra. 537

11.3.3             Big Data Analytics. 541

11.4               Recommender System.. 542

11.4.1             Big Data Applications. 542

11.4.2             Recommender System... 543

11.5               Semantic Web and Ontology. 547

11.5.1             Ontology Language RDF. 548

11.5.2             RDF Schema. 550

11.5.3             Reasoning and Verification in Ontology. 556

11.5.4             Web Ontology Language OWL.. 557

11.5.5             OWL-S and Semantic Web Services. 561

11.5.6             Linked Data. 562

11.5.7             Ontology Development Environments. 563

11.6               Discussions. 564

11.7               Exercises and Projects. 567

Chapter 12    Service-Oriented Application Architecture. 571

12.1               Introduction. 571

12.2               Application Architectures. 573

12.2.1             Dynamic Architecture via Dynamic Composition. 574

12.2.2             Dynamic Recomposition. 575

12.2.3             Lifecycle Management Embedded in Operation Infrastructure. 576

12.3               Examples of Service-Oriented Application Architectures. 578

12.3.1             IBM WebSphere Architecture. 578

12.3.2             Enterprise Service Bus. 579

12.3.3             SAP NetWeaver 580

12.3.4             User-Centric Service Oriented Architecture. 582

12.4               Discussions. 583

12.5               Exercises and Projects. 585

Chapter 13    A Mini Walkthrough of Service-Oriented Software Development 589

13.1               Introduction. 589

13.2               Sample Domain Model 593

13.2.1             Ontology Systems. 593

13.2.2             Published Services. 597

13.2.3             Published Workflows. 600

13.2.4             Shipping Domain Collaboration Templates. 601

13.3               Specific Requirements for a Project 603

13.4               A Working Example. 605

13.5               Discussions. 612

13.6               Exercises and Projects. 615

Chapter 14    Cloud Computing and Software as a Service. 617

14.1               Introduction. 617

14.2               SaaS Maturity Model 620

14.3               Database Design for Multi-Tenancy SaaS. 622

14.3.1             Resource Isolation Patterns. 623

14.3.2             Security. 626

14.3.3             Scalability. 628

14.4               Google App Engine. 628

14.4.1             Services. 629

14.4.2             Datastore. 630

14.4.3             Hints for Developing Scalable Applications. 630

14.4.4             Development and Tooling. 631

14.4.5             Other Constraints. 631

14.5               Google File System.. 631

14.5.1             GFS System Structure and Operations. 632

14.5.2             Lessons Learned from Developing GFS. 633

14.5.3             Other Similar Projects. 634

14.6               BigTable. 634

14.6.1             Major Components. 635

14.6.2             BigTable Overview.. 635

14.7               MapReduce. 641

14.7.1             MapReduce Programming Model 641

14.7.2             Example. 642

14.7.3             Applications. 642

14.7.4             Execution Overview.. 643

14.7.5             Task Granularity and Fault-Tolerant Computing. 643

14.8               Hadoop. 644

14.8.1             Hadoop Ecosystem... 644

14.8.2             Hadoop HDFS and MapReduce. 644

14.8.3             Example. 645

14.9               Microsoft Azure. 646

14.9.1             Azure Architecture. 647

14.9.2             Azure Elements. 648

14.9.3             Creating Your First Application Azure Cloud. 649

14.10            Salesforce.com.. 650

14.11            Cloud Computing Algorithms. 656

14.12            Applications of Data Differencer 666

14.13            Discussions. 667

14.14            Exercises and Projects. 669

Part III            Appendices: Tutorials on Service-Oriented Software Development 671

Appendix A  Web Application Development 673

A.1                Design of Graphical User Interface. 673

A.2                Discovering Web Services Available Online. 678

A.3                Access Web Services in Your Program: ImageService. 680

A.4                Access Web services in Your Program: Weather Forecasting Service. 684

A.5                Access Web Services in Your Program: USZip Service. 686

A.6                Creating ASP .Net Web Services. 688

A.7                Exercises and Projects. 691

Appendix B  Service-Oriented Robotics Applications. 695

B.1                 Getting Started with Robotics Developer Studio and VPL. 695

B.2                 Programming Conditions in VPL. 697

B.3                 Programming Loop in VPL. 698

B.4                 Programming a Robot in a Simulation Environment 698

B.5                 Deploying the Program to a Real Robot 703

B.6                 Programming the Arm of the Robot 704

B.7                 Autonomous Robot in an Obstacle Course. 706

B.8                 Exercises and Projects. 711

Appendix C  ASU Repository of Services and Applications. 713

References   719

Index    727