Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services (Sixth Edition)
Yinong Chen, Arizona State University
Kendall Hunt Publishing, 2018, ISBN 9781524948191 (paper) and ISBN 9781524951658 (eBook)
Table of Contents in PDF,  Link to Publisher's site of the book , Link to the Fifth Edition , - Third Edition, - Second Edition, - First Edition

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 components using the standard data types. Finally, the behavior of each component is linked to remote service or local object. The elaborated architecture is automatically translated into the executable.

The text consists of 11 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 and Web Data Formats

Chapter 5 Web Application and State Management

Chapter 6 Dependability of Service-Oriented Software

 

Part II: Advanced Service-Oriented Computing and System Integration

Chapter 7 Advanced Services and Architecture-Driven Application Development

Chapter 8 Enterprise Software Development and Integration

Chapter 9 IoT, Robotics, and Device Integration via Visual Programming

Chapter 10 Interfacing Service-Oriented Software with Databases

Chapter 11 Big Data, Artificial Intelligence, and Cloud Computing

 

Part III: Appendices: Tutorials on Service-Oriented System Development

Appendix A Web Application Development

Appendix B Visual IoT/Robotics Programming Language Environment

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 five 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 and system composition and integration using existing services and components. The approach is based on architecture-driven approach, workflow, 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 BPEL (Business Process Execution Language) and BPEL-based development environments. Then the discussion is extended into message-based software integration and Enterprise Service Bus tools for integrating Web contents.

Chapter 9 extends Web-based computing to Internet of Things and Robot as a Service (RaaS). As an example, robotics applications are studied in detail, which use the service-oriented Visual Programming Language (VPL) from Microsoft to develop robotics services and applications. A new visual programming environment, VIPLE, is introduced, which can be used as a follow-up language of Microsoft VPL. Full programming examples in VIPLE and hardware platforms supported are given.

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 cutting edge topics in big data, artificial intelligence, ontology, and cloud computing. It discusses 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. The latest generation of artificial intelligence is based on big data analysis and processing. This chapter presents it development, main concepts and examples of developing machine-learning programs. Ontology is presented as a part of knowledge representation for big data processing and artificial intelligence applications. Finally, the chapter presents cloud computing and its main layers: Software as a Service, Platform as a Service, and Infrastructure as a Service. As examples, cloud platforms from Amazon Web Services, Google, IBM, Microsoft, and Oracle are discussed.

Part III consists of three appendices that supplement and support the contents on Web application development and IoT/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://neptune.fulton.ad.asu.edu/WSRepository/

Major revisions have been made in this edition, including the followings: Examples using Visual Studio programming environment are updated to Visual Studio 2017 edition. Chapter 9 is rewritten. The discontinued Microsoft Robotics Developer Studio is replaced with ASU VIPLE (Visual Programming Language Environment). Chapter 11 is significantly extended to include a section artificial intelligence and machine learning and a section on cloud computing.

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) in the previous edition are removed from this edition. These chapters were written by the co-author Prof. Wei-Tek Tsai. These materials have been valuable to the book and to the courses teaching from this book. Unfortunately, Prof. Tsai retired from Arizona State University, and he is no longer available for updating the contents and for authorizing the publisher for using the contents in the new edition. As cloud computing is an important part of this book, a new section with new contents is added into Chapter 11, as a part of the cutting edge technologies of big data, artificial intelligence, and cloud computing.

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.

The following table illustrates the lectures of CSE445/598 and CSE446/598. Each lecture is 75-min long and counts as 1.5 lecture hours. Each course is completed in about 44 lecture hours.

The first course focuses on distributed software development, including multithreading programming, event-driven programming, Web data representation, service development, and application building using programming languages as the composition language. Both C# and Java are used in the development. The course objectives and outcomes of ASU CSE445/598 are as follows:

  1. To develop an understanding of the software engineering of programs using concurrency and synchronization
    • The student can identify the application, advantages and disadvantages of concurrency, threads and synchronization.
    • The student can apply design principles for concurrency and synchronization.
    • The student can design and write programs demonstrating the use of concurrency, threads and synchronization.
  1. To develop an understanding of the development of distributed software
    • The student can recognize alternative distributed computing paradigms and technologies.
    • The student can identify the phases and deliverables of the software lifecycle in the development of distributed software.
    • The student can create the required deliverables in the development of distributed software in each phase of a software lifecycle.
    • The student understands the security and reliability attributes of distributed applications
  1. To develop an ability to design and publish services as building blocks of service-oriented applications
    • The student understands the role of service publication and service directories
    • The student can identify available services in service registries.
    • The student can design services in a programming language and publish services for the public to use.
  1. To build skills in using a current technology for developing distributed systems and applications
    • The student can develop distributed programs using the current technology and standards.
    • The student can use the current framework to develop programs and web applications using graphical user interfaces, remote services, and workflow.

 

 

CSE445/598 Lecture by Lecture Contents

CSE446/598 Lecture by Lecture Contents

The second course focuses on software and system integration using workflow languages and cutting edge topics in software and system development. The course objectives and outcomes of ASU CSE445/598 are as follows:

  1. To understand software architecture and software process
    • Students understand the requirement and specification process in problem solving.
    • Students understand software life cycle and process management
    • Students can identify advantages and disadvantages of software architectures and their trade-offs in different applications.
  1. To understand and apply composition approach in software development
    • Students can apply software architecture to guide software development in the problem solving process.
    • Students understand interface requirement of software services.
    • Students can compose software based on interfaces of services and components.
    • Students can develop software system using different composition methods and tools.
  1. To understand and apply data and information integration in software development
    • Students can compose software systems using different data resources in different data formats.
    • Students can integrate application logic with different databases.
    • Students can apply the entire software life cycle to develop working software systems.

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. It is also sensible to choose a few topics from Part I and Part II to teach one course from the book. For example, Chapters 1, 3, 5, and 8 can form good service-oriented computing course. Chapter 9 and Appendix B can be used for a computational thinking based robotics course for students who do not have much programming language background.

We like to thank my colleagues at Arizona State University in in preparing this book and related courses. Prof. Wei-Tek Tsai has taught CSE445/598. He was a co-author of the book’s first five editions. Dr. Janaka Balasooriya has been teaching CSE445/598 for several semesters and has constantly provided feedback and suggestions for improving the contents of the course and the book. Prof. Yann-Hang Lee contributed to the course contents related to IoT and robotics development. Prof. Hessam Sarjoughian and Prof. Stephen Yau contributed to the development of CSE445/598 and CSE446/598 courses. Many of our sponsors, colleagues, cooperators, and students have been involved in this project, including Prof. Xiaoying Bai of Tsinghua University, Prof. Farokh Bastani of University of Texas at Dallas, Dr. J. Y. Chung of IBM, Prof. Zhongshi He of Chongqing University, Prof. Mei Hong of Beijing Institute of Technology, Prof. Yingxu Lai of Beijing University of Technology, Prof. Yinsheng Li of Fudan University, Prof. Zhongtao Li of University of Jinan, Prof. K. J. Lin of University of California at Irvine, Mr. John Oliver of Intel, Dr. Raymond Paul of DoD OSD NII, Profs. Qian Wang and Yongkang Xing of Chongqing University, Profs. Ruzhi Xu and Zhizheng Zhou of Qilu University of Technology, and Prof. I-Ling Yen of University of Texas at Dallas. 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. We also thank the teaching assistants and research assistants at Arizona State University, including Calvin Cheng, Gennaro De Luca, Jay Elston, Qian Huang, Adam Lew, Wu Li, Gavin Liu, Mengxue Liu, Sami Mian, Xin Sun, Jingjing Xu, Xinyu Zhou, Thomas Zelpha, and Peide Zhong. They implemented and 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@asu.edu.

 

Yinong Chen

October 2017(Sixth Edition)


Table of Contents

Prefacex

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 Architecture7

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            18

1.4       Service-Oriented Software Development and Applications   20

1.4.1    Traditional Software Development Processes            20

1.4.2    Service-Oriented Software Development       20

1.4.3    Applications of Service-Oriented Computing            24

1.4.4    Web Application Composition           25

1.5       Enterprise Software Development      27

1.6       Discussions30

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      49

2.1.6    Base Class and Base Calling Class Constructor         49

2.1.7    Constructor, Destructor, and Garbage Collection      50

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 Multithreading61

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    Monitor73

2.5.3    Reader and Writer Locks        82

2.5.4    Mutexes86

2.5.5    Semaphore86

2.5.6    Coordination Event    87

2.6       Event-Driven Programming    89

2.6.1    Exception Handling    90

2.6.2    Event-Driven Programming Concepts and Mechanisms        93

2.6.3    Case Study: An Electronic Commerce Application in Event-Driven Approach99

2.7       Multithreading Performance   104

2.7.1    Amdahl’s Law 104

2.7.2    Multithreading Experiments   105

2.8       Discussions110

2.9       Exercises and Projects            111

Chapter 3 Essentials in Service-Oriented Software Development     121

3.1       Service-Oriented Software Development Environments       121

3.1.1    Overview121

3.1.2    Windows Communication Foundation          123

3.1.3    Service Interface: Address, Binding, and Contract    124

3.2       Service Provider: Creating and Hosting Services       125

3.2.1    Getting Started with Developing WCF Services        126

3.2.2    Testing Web Services in WCF Test Client     129

3.2.3    Writing a Console Application to Consume a WCF service131

3.2.4    File Service and Data Management    133

3.2.5    Hosting Your Web Services as a Service Provider    134

3.2.6    Source Code Deployment and Precompiled Code Deployment136

3.3       Service Brokers: Publishing and Discovering Services          139

3.3.1    An Ideal Service Broker with All Desired Features139

3.3.2    UDDI Service Registry           142

3.3.3    ebXML Service Registry and Repository       149

3.3.4    Ad Hoc Registry Lists 151

3.4       SOAP and HTTP        151

3.4.1    SOAP Format 151

3.4.2    HTTP152

3.4.3    SOAP Over HTTP      153

3.5       WSDL: Web Services Description Language            155

3.5.1    Elements of WSDL Documents         155

3.5.2    WSDL Document Example    156

3.6       Service Requesters: Building Applications Using Services158

3.6.1    Connecting Endpoint and Proxy         158

3.6.2    Creating a Windows Forms Application in ASP.Net 159

3.6.3    Developing a Web Site Application to Consume WCF Services164

3.6.4    Consuming Services in a Different Platform 167

3.7       Web Service Testing and Dynamic Service Invocation168

3.7.1    Get Web Content from URL  168

3.7.2    Analyze WSDL Document     169

3.7.3    Test Web Service        170

3.7.4    Dynamic Web Services and Web Applications          170

3.8       Java-Based Web Service Development          170

3.8.1    Web Application Building Using AJAX Programming         171

3.8.2    Java-Based Web Service Development and Hosting 173

3.9       Discussions175

3.10     Exercises and Projects            177

Chapter 4 XML and Web Data Formats183

4.1       XML Fundamentals    183

4.1.1    XML versus HTML    184

4.1.2    XML Syntax   185

4.1.3    XML Namespaces      188

4.2       XML Data Processing 189

4.2.1    DOM: Document Object Model         189

4.2.2    SAX: Simple API for XML    191

4.2.3    XML Text Writer        193

4.2.4    XML Processing in Java         194

4.3       XPath195

4.4       XML Type Definition Languages      198

4.4.1    XML Document Type Definition (DTD)       198

4.4.2    XML Schema  201

4.4.3    Namespace203

4.4.4    XML Validation         205

4.5       Extensible Stylesheet Language         207

4.6       Other Web Data Formats        211

4.6.1    XHTML212

4.6.2    RSS214

4.6.3    Atom216

4.6.4    JSON218

4.6.5    HTML 5          219

4.6.6    Google Protocol Buffers and BigTable          223

4.7       Discussions224

4.8       Exercises and Projects            225

Chapter 5 Web Application and State Management231

5.1       Models of Web Applications  231

5.1.1    Pure HTML-Based Web Application 231

5.1.2    Client-Side Scripting  232

5.1.3    Server-Side Scripting and Code-Behind Page Computing     233

5.1.4    Client-Side Out-Of-Browser Computing       234

5.2       Structure of Web Applications           235

5.2.1    Components of Web Applications      235

5.2.2    Server Controls           237

5.2.3    User Controls  241

5.2.4    Web Application Configuration         243

5.2.5    Global Application Class        247

5.2.6    Dynamic Link Library            248

5.3       State Management      249

5.3.1    Overview of State Management Techniques  250

5.3.2    View State      250

5.3.3    Session State   252

5.3.4    Cookies255

5.3.5    Session State and Cookies      257

5.3.6    Application State and Service Execution Model        258

5.4       Save User Data to Server File System            259

5.4.1    File System and Standard File Operations     259

5.4.2    Reading and Writing XML Files        260

5.5       Caching and Recommendation           263

5.5.1    Output Caching           264

5.5.2    Fragment Caching       265

5.5.3    Data Caching  266

5.6       Dynamic Graphics Design and Generation    273

5.6.1    Dynamic Graphics      274

5.6.2    Getting Started with Dynamic Graphics Generation  275

5.6.3    Generating Dynamic Graphics in User Control         277

5.7       Animation and Phone Application Development       281

5.7.1    Silverlight Applications          282

5.7.2    Developing Windows Phone Apps Using Silverlight 285

5.7.3    Android Phone App Development with App Inventor           292

5.8       Architecture Design    298

5.8.1    ASP .Net Forms-Centric Architecture            299

5.8.2    ASP .Net MVC Architecture  299

5.9       Discussions301

5.10     Exercises and Projects            302

Chapter 6 Dependability of Service-Oriented Software        309

6.1       Basic Concepts           309

6.1.1    Dependability309

6.1.2    Dependability Attributes and Quality of Service        310

6.1.3    Security Issues in SOA Software       311

6.1.4    Reputation Management System        313

6.2       Access Control in Web Applications  314

6.2.1    IIS and Windows-Based Security Mechanisms          314

6.2.2    Forms-Based Security 316

6.2.3    User Registration and Account Management 320

6.3       Encryption and Decryption     323

6.3.1    Developing Encryption and Decryption Service in WCF      323

6.3.2    Developing a Secure Hashing Service in WCF          325

6.3.3    WCF Service Client    327

6.3.4    Error Control Code     329

6.4       Dependable Computing in Windows Communication Foundation   331

6.4.1    WS-Security331

6.4.2    WS-Reliability332

6.4.3    Transactions334

6.5       Discussions336

6.6       Exercises and Projects            337

Part II Advanced Service-Oriented Computing and System Integration       341

Chapter 7 Advanced Services and Architecture-Driven Application Development  342

7.1       Self-Hosting Services 342

7.1.1    Developing a Service and a Hosting Service  342

7.1.2    Developing Clients to Consume Self-Hosting Services         345

7.2       Advanced WCF Services        350

7.2.1    Advanced Communication Models    350

7.2.2    Advanced Bindings    353

7.2.3    Service Behavior and State Management       354

7.3       REST Concept and RESTful Services            358

7.3.1    REST Concept and REST Architecture         358

7.3.2    RESTful Services        359

7.3.3    Developing RESTful Service 363

7.3.4    Developing an Image Verifier in RESTful Service    366

7.3.5    Consuming Simple RESTful Service 369

7.3.6    Google RESTful Services: Map Services       371

7.3.7    Making Asynchronous Calls to RESTful Services     374

7.3.8    RESTful Service-Based Web Application Description Language375

7.4       Workflow Foundation 377

7.4.1    Architecture and Components            377

7.4.2    Creating a WF Flowchart Application            379

7.4.3    Creating Custom Code Activity for Workflow Application  381

7.4.4    Implementing Finite State Machine in Workflow      384

7.4.5    Creating Persistence Services Using Workflow         386

7.5       Discussions395

7.6       Exercises and Projects            397

Chapter 8 Enterprise Software Development and Integration           403

8.1       Overview of Composition Languages            403

8.2       BPEL406

8.2.1    BPEL Activities and Constructs         406

8.2.2    BPEL Process 406

8.2.3    WSDL Interface Definition of BPEL Process            409

8.2.4    BPEL Process 411

8.2.5    An Example Invoking Real Web Services     413

8.3       Stateless versus Stateful Web Services           420

8.3.1    BizTalk’s Singleton Object Approach            421

8.3.2    BPEL’s Correlation Approach           421

8.4       Frameworks Supporting BPEL Composition 424

8.4.1    Oracle SOA Suite       424

8.4.2    ActiveBPEL425

8.4.3    BizTalk426

8.4.4    Simple Workflow Service       427

8.5       Message-Based Integration    428

8.5.1    Java Message Service 429

8.5.2    Microsoft Message Queue      430

8.5.3    Database-Supported Messaging          432

8.5.4    Email Supported Messaging   433

8.5.5    Enterprise Service Bus           434

8.6       Other Composition Languages           434

8.6.1    SCA/SDO435

8.6.2    WSFL: Web Services Flow Language           435

8.8       Discussions437

8.9       Exercises and Projects            438

Chapter 9 IoT, Robotics, and Device Integration via Visual Programming   443

9.1       Introduction443

9.1.1    Internet of Things        443

9.1.2    Service-Oriented Robotics Computing           445

9.1.3    Event-Driven Robotics Applications  447

9.2       Robot as a Service      449

9.2.1    Robot as a Service Definition 450

9.2.2    Robot as a Service Design      451

9.2.3    Robot as a Service Implementation    453

9.3       Robotics Developer Studio and Visual Programming Language456

9.3.1    MRDS and VPL Overview     456

9.3.2    Application Development in MRDS and VPL           458

9.3.3    Using VPL in Other Platforms           460

9.4       VIPLE: A New Visual Programming Language        462

9.4.1    ASU VIPLE versus Microsoft VPL   462

9.4.2    Service-Oriented Computing: RESTful, WSDL, and VIPLE Service           464

9.4.3    Multithreading and Parallel Computing         467

9.4.4    Workflow with Code Activities          468

9.4.5    Finite State Machine   471

9.4.6    Event-Driven Programming    475

9.5       Robot Programming and Maze Navigation    477

9.5.1    VIPLE Robot Services            477

9.5.2    Maze Navigation Algorithms in Finite State Machine           479

9.5.3    Implementing Maze Navigation Algorithms Using Unity Simulator481

9.5.4    Implementing Maze Navigation Algorithms Using Web Simulator484

9.5.5    Implementing Maze Navigation Using EV3 Robot   488

9.5.6    Other Platforms supported by VIPLE 493

9.6       Discussions498

9.7       Exercises and Projects            499

Chapter 10 Interfacing Service-Oriented Software with Databases   503

10.1     Databases in Service-Oriented Software        503

10.2     Relational Databases in Service-Oriented Software  504

10.2.1  Interface between Database and Software     504

10.2.2  SQL Database in ADO .Net   506

10.2.3  DataAdapter and DataSet in ADO .Net         512

10.2.4  WCF RIA Service       514

10.3     LINQ, Language Integrated Query    515

10.3.1  What is the Purpose of LINQ?           516

10.3.2  Lambda Expressions   517

10.3.3  LINQ to Object           520

10.3.4  LINQ to SQL  522

10.3.5  LINQ to XML 525

10.4     XML-Based Database and Query Language XQuery            528

10.4.1  Expressing Queries     528

10.4.2  Transforming XML Document          530

10.4.3  XQuery Discussions   532

10.5     Discussions532

10.6     Exercises and Projects            533

Chapter 11 Big Data, Artificial Intelligence, and Cloud Computing 537

11.1     Big Data Systems and Management   537

11.1.1  Big Data Concepts      537

11.1.2  Big Data Management            539

11.2     Big Data Processing and Analytics    540

11.2.1  Map and Reduce         540

11.2.2  Hadoop and Cassandra           541

11.2.3  Apache Pig      546

11.2.4  Big Data Analytics      547

11.3     Big Data Applications and Case Studies        548

11.3.1  Big Data Applications in different domains   548

11.3.2  Recommender System            550

11.4     Artificial Intelligence and Machine Learning 553

11.4.1  Development of Artificial intelligence and Robotics 554

11.4.2  From Traditional Programming to AI Programming  556

11.4.3  Machine Learning Case Studies         559

11.5     Ontology565

11.5.1  Ontology Language RDF       566

11.5.2  RDF Schema   568

11.5.3  Reasoning and Verification in Ontology        574

11.5.4  Web Ontology Language OWL         575

11.5.5  OWL-S and Semantic Web Services  579

11.5.6  Linked Data    580

11.5.7  Ontology Development Environments           581

11.6     Cloud Computing       582

11.6.1  Definitions582

11.6.2  Software Engineering and Software Architecture Leading to Cloud Computing584

11.6.3  Software as a Service and Multitenancy        587

11.6.4  Platform as a Service  590

11.6.5  Infrastructure as a Service and Data Center   593

11.7     Discussions597

11.8     Exercises and Projects            599

Part III Appendices: Tutorials on Service-Oriented System Development   605

Appendix A Web Application Development607

A.1      Design of Graphical User Interface    607

A.2      Discovering Web Services Available Online 612

A.3      Access Web Services in Your Program: ImageService614

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

A.5      Access Web Services in Your Program: USZip Service621

A.6      Creating ASP .Net Web Services       622

A.7      Exercises and Projects            625

Appendix B VIPLE Tutorial629

B.1      Introduction to VIPLE           629

B.1.1   Basic Activities in VIPLE Toolbox    630

B.1.2   Built-in VIPLE Services         632

B.2      Getting Started with VIPLE Programming     633

Ex. 1.   “Hello World” in VIPLE        633

Ex. 2.   Favorite Movie            634

Ex. 3.   Create While Loop Block using Merge and If Activities636

Ex. 4.   Creating While-Loop Block using the While Activity           638

Ex. 5.   Creating an Activity   640

Ex. 6.   Creating Counter Activity      642

Ex. 7.   Build a 2-1 Multiplexor          644

Ex. 8.   Convert an Activity into a Service      646

B.3      Building Larger Systems Using Modules       648

Introduction    648

Ex. 1.   Creating an AND Gate in VIPLE      652

Ex. 2.   Creating OR, NOT, and XOR Gates  654

Ex. 3.   Build a one-bit adder  654

Ex. 4.   Build a 2-1 Multiplexor and a 4-1 Multiplexor          656

Ex. 5.   Build a one-bit ALU   657

Ex. 6.   Automated Testing     658

Ex. 7.   Create Automated Testing for ALU   660

Ex. 8.   Create a 4-bit ALU     660

Ex. 9.   Drive-by-wire simulation        660

B.4      Exercises and Projects            662

Appendix C ASU Repository of Services and Applications  665

References                  676

Index               685