Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services

Edition: 9

Copyright: 2024

Pages: 832

Choose Your Format

Choose Your Platform | Help Me Choose

Ebook Package

$87.00

ISBN 9798385117574

Details Ebook w/KHQ 365 days

Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services focuses on service-oriented computing, web application development, and service-oriented system integration. It covers WSDL services, RESTful services, their development and applications, XML and related technologies, Web data management and database accesses, architecture-driven approach, workflow-based software integration, device and IoT integration, as well as the latest technologies in big data processing, cloud computing, machine-learning, artificial intelligence, and cross-platform mobile/phone application development. The book teaches both principles and hands-on programming skills, leading to operational software development. Exercises, practice questions, and projects are provided at the end of each chapter to help students review and apply what they have learned. 

Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services:

  • integrates new tutorial-based material to build working applications from scratch,
  • features a chapter dedicated to mobile computing and application development.
  • presents autonomous driving in TORCS and traffic simulation and its programming.

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

Chapter 1 Introduction to Distributed Service-Oriented Computing
1.1 Computer Architecture and Computing Paradigms
1.1.1 Computer Architecture
1.1.2 Software Architecture
1.1.3 Computing Paradigms
1.2 Distributed Computing and Distributed Software Architecture
1.2.1 Distributed Computing
1.2.2 N-Tier Architecture
1.2.3 Distributed Object Architecture
1.3 Service-Oriented Architecture and Computing
1.3.1 Basic Concepts and Terminologies
1.3.2 Service-Oriented Computing
1.3.3 Object-Oriented Computing versus Service-Oriented Computing
1.3.4 Service-Oriented System Engineering
1.4 Service-Oriented Software Development and Applications
1.4.1 Traditional Software Development Processes
1.4.2 Service-Oriented Software Development
1.4.3 Applications of Service-Oriented Computing
1.4.4 Web Application Composition
1.5 Enterprise Software Development
1.6 Discussions
1.7 Exercises and Projects

Chapter 2 Distributed Computing with Multithreading
2.1 Introduction to C# and .Net
2.1.1 Getting Started with C# and .Net
2.1.2 Comparison between C++ and C#
2.1.3 Namespaces and the “using” Directive
2.1.4 Class and Object in C#
2.1.5 Parameters: Passing by Reference with ref & out
2.1.6 Base Class and Base Calling Class Constructor
2.1.7 Constructor, Destructor, and Garbage Collection
2.1.8 Pointers in C#
2.1.9 C# Unified Type System
2.2 Memory Management and Garbage Collection
2.2.1 Static Variables and Static Methods
2.2.2 Runtime Stack for Local Variables
2.2.3 Heap for Dynamic Memory Allocation
2.2.4 Scope and Garbage Collection
2.3 General Issues in Multitasking and Multithreading
2.3.1 Basic Requirements
2.3.2 Critical Operations and Synchronization
2.3.3 Deadlock and Deadlock Resolving
2.3.4 Order of Execution
2.3.5 Operating System Support for Multitasking and Multithreading
2.4 Multithreading and Synchronization in Java
2.4.1 Creating and Starting Threads
2.4.2 Thread Synchronization
2.4.3 Synchronized Method
2.4.4 Synchronized Statements
2.5 Multithreading and Synchronization in Python
2.5.1 Creating and Starting Threads
2.5.2 Adding Synchronization 
2.6 Multithreading in C#
2.6.1Threading Classes and Properties
2.6.2 Monitor
2.6.3 Reader and Writer Locks
2.6.4 Mutexes
2.6.5 Semaphore
2.6.6 Coordination Event
2.7 Event-Driven Programming
2.7.1 Exception Handling
2.7.2 Event-Driven Programming Concepts and Mechanisms
2.7.3 Case Study: An Electronic Commerce Application in Event-Driven Approach
2.8 Multithreading Performance
2.8.1 Amdahl’s Law
2.8.2 Multithreading Experiments
2.9 Asynchronous Functions and Their Performance 
2.9.1 Synchronous Functions
2.9.2 Asynchronous Functions and Calls
2.9.3 Asynchronous Implementations of a Travel Booking System
2.9.4 Asynchronous Implementations with Additional Features 
2.10 Discussions
2.11 Exercises and Projects

Chapter 3 Essentials in Service-Oriented Software Development
3.1 Service-Oriented Software Development Environments
3.1.1 Overview
3.1.2 Windows Communication Foundation 
3.1.3 Service Interface: Address, Binding, and Contract
3.2 Service Provider: Creating and Hosting Services
3.2.1 Getting Started with Developing WCF Services
3.2.2 Testing Web Services in WCF Test Client
3.2.3 Writing a Console Application to Consume a WCF Service
3.2.4 File Service and Data Management
3.2.5 Hosting Your Web Services as a Service Provider
3.2.6 Source Code Deployment and Precompiled Code Deployment
3.3 Service Brokers: Publishing and Discovering Services
3.3.1 An Ideal Service Broker with All Desired Features
3.3.2 UDDI Service Registry
3.3.3 ebXML Service Registry and Repository
3.3.4 Ad Hoc Registry Lists
3.4 SOAP and HTTP
3.4.1 SOAP Format
3.4.2 HTTP
3.4.3 SOAP over HTTP
3.5 WSDL: Web Services Description Language
3.5.1 Elements of WSDL Documents
3.5.2 WSDL Document Example
3.6 Service Requesters: Building Applications Using Services
3.6.1 Connecting Endpoint and Proxy
3.6.2 Creating a Windows Forms Application in ASP.Net
3.6.3 Developing a Website Application to Consume WCF Services
3.7 Web Service Testing and Dynamic Service Invocation
3.7.1 Get Web Content from URL
3.7.2 Analyze WSDL Document
3.7.3 Test Web Service through Dynamic Proxy
3.7.4 Test Web Service Using Independent Tools
3.7.5 Dynamic Web Services and Web Applications
3.8 Java-Based Web Service Development
3.8.1 Web Application Building Using AJAX Programming
3.8.2 Java-Based Web Service Development and Hosting
3.9 Discussions
3.10 Exercises and Projects

Chapter 4 XML and Web Data Formats
4.1 XML Fundamentals
4.1.1 XML versus HTML
4.1.2 XML Syntax
4.1.3 XML Namespaces
4.2 XML Data Processing
4.2.1 DOM: Document Object Model
4.2.2 SAX: Simple API for XML
4.2.3 XML Text Writer
4.2.4 XML Processing in Java
4.3 XPath
4.4 XML Type Definition Languages
4.4.1 XML Document Type Definition (DTD)
4.4.2 XML Schema
4.4.3 Namespace
4.4.4 XML Validation
4.5 Extensible Stylesheet Language
4.6 Other Web Data Formats
4.6.1 XHTML
4.6.2 RSS
4.6.3 Atom
4.6.4 JSON
4.6.5 HTML5
4.6.6 Google Protocol Buffers and BigTable
4.7 Discussions
4.8 Exercises and Projects

Chapter 5 Web Application and State Management
5.1 Models of Web Applications
5.1.1 Pure HTML-Based Web Application
5.1.2 Client-Side Scripting
5.1.3 Server-Side Scripting and Code-Behind Page Computing
5.1.4 Client-Side Out-of-Browser Computing
5.2 Web Application Structure and Architecture
5.2.1 Components of Web Applications
5.2.2 Server Controls
5.2.3 User Controls
5.2.4 Web Application Configuration
5.2.5 Global Application Class
5.2.6 Dynamic Link Library and Package
5.3 State Management
5.3.1 Overview of State Management Techniques
5.3.2 View State
5.3.3 View State Security and Machine Key
5.3.4 Session State
5.3.5 Cookies
5.3.6 Session State and Cookies
5.3.7 Application State and Service Execution Model
5.4 Save User Data to Server File System
5.4.1 File System and Standard File Operations
5.4.2 Reading and Writing XML Files
5.5 Caching 
5.5.1 Output Caching
5.5.2 Fragment Caching
5.5.3 Data Caching
5.6 Dynamic Graphics Design and Generation
5.6.1 Dynamic Graphics
5.6.2 Getting Started with Dynamic Graphics Generation
5.6.3 Generating Dynamic Graphics in User Control
5.7 Discussions
5.8 Exercises and Projects

Chapter 6 Dependability of Service-Oriented Software
6.1 Basic Concepts
6.1.1 Dependability
6.1.2 Dependability Attributes and Quality of Service
6.1.3 Security Issues in SOA Software
6.1.4 Reputation Management System
6.2 Access Control in Web Applications
6.2.1 IIS and Windows-Based Security Mechanisms
6.2.2 Forms-Based Security
6.2.3 Forms-Based Security with Self-Registration
6.2.4 User Registration Using the Built-in Account Management
6.3 Encryption and Decryption
6.3.1 Developing Encryption and Decryption Service in WCF
6.3.2 Developing a Secure Hashing Service in WCF
6.3.3 WCF Service Client
6.3.4 Error Control Code
6.3.5 Secure Sockets Layer Cryptographic Protocols
6.4 Dependable Computing in Windows Communication Foundation
6.4.1 WS-Security
6.4.2 WS-Reliability
6.4.3 Transactions
6.5 Discussions
6.6 Exercises and Projects

Part II Advanced Service-Oriented Computing and System Integration

Chapter 7 Advanced Services and Application Development
7.1 Self-Hosting Services
7.1.1 Developing a Service and a Hosting Service
7.1.2 Developing Clients to Consume Self-Hosting Services
7.2 Advanced WCF Services
7.2.1 Advanced Communication Models
7.2.2 Advanced Bindings
7.2.3 Service Behavior and State Management
7.3 REST Concept and RESTful Services
7.3.1 REST Concept and REST Architecture
7.3.2 RESTful Services
7.3.3 Microservices
7.3.4 Developing RESTful Service
7.3.5 Developing an Image Verifier in RESTful Service
7.3.6 Consuming Simple RESTful Service
7.3.7 Google RESTful Services: Map Services
7.3.8 Making Asynchronous Calls to RESTful Services
7.3.9 RESTful Service-Based Web Application Description Language
7.4 Advanced Web Application Architecture
7.4.1 ASP .Net Forms-Centric Architecture
7.4.2 HTML5 on ASP .Net Core Framework
7.4.3 MVC Architecture on ASP .Net Core Framework
7.4.4 MVC Web Application Development Example
7.5 Discussions
7.6 Exercises and Projects

Chapter 8 Enterprise Software Development and Integration
8.1 Overview of Composition Languages
8.2 Workflow Foundation
8.2.1 Architecture and Components
8.2.2 Creating a WF Flowchart Application
8.2.3 Creating Custom Code Activity for Workflow Application
8.2.4 Implementing Finite State Machine in Workflow
8.2.5 Creating Services and Persistence Services Using Workflow
8.3 BPEL
8.3.1 BPEL Activities and Constructs
8.3.2 BPEL Process
8.3.3 WSDL Interface Definition of BPEL Process
8.3.4 BPEL Process
8.4 Stateless versus Stateful Web Services
8.4.1 BizTalk’s Singleton Object Approach
8.4.2 BPEL’s Correlation Approach
8.5 Frameworks Supporting BPEL Composition
8.5.1 Oracle SOA Suite
8.5.2 ActiveBPEL
8.5.3 BizTalk
8.5.4 Simple Workflow Service
8.6 Message-Based Integration
8.6.1 Java Message Service
8.6.2 Microsoft Message Queue
8.6.3 Database-Supported Messaging
8.6.4 E-mail Supported Messaging
8.6.5 Enterprise Service Bus
8.7 Other Composition Languages
8.7.1 SCA/SDO
8.7.2 WSFL: Web Services Flow Language
8.8 Discussions
8.9 Exercises and Projects

Chapter 9 IoT, Robotics, and Device Integration via Visual Programming
9.1 Introduction
9.1.1 Internet of Things
9.1.2 Service-Oriented Robotics Computing
9.1.3 Event-Driven Robotics Applications
9.2 Robot as a Service
9.2.1 Robot as a Service Definition
9.2.2 Robot as a Service Design
9.2.3 Robot as a Service Implementation
9.3 Robotics Developer Studio and Visual Programming Language
9.4 VIPLE: A New Visual Programming Language
9.4.1 ASU VIPLE versus Microsoft VPL
9.4.2 Service-Oriented Computing: RESTful, WSDL, and VIPLE Service
9.4.3 Workflow with Code Activities
9.4.4 Finite State Machine
9.4.5 Event-Driven Programming
9.5 Robot Programming and Maze Navigation
9.5.1 VIPLE Robot Services
9.5.2 Maze Navigation Algorithms in Finite State Machine
9.5.3 Maze Navigation Algorithms Using Unity Simulator
9.5.4 Maze Navigation Algorithms Using Web Simulator
9.5.5 Maze Navigation Using Lego EV3 Robot
9.6 Different Platforms Supported by VIPLE
9.6.1 Open Interface between VIPLE and Device
9.6.2 Connecting VIPLE to Open Architecture Robots
9.6.3 Using Robot Motion Service to Control Complex Robots
9.7 Autonomous Driving in Simulation Environment
9.7.1 A Simple Autonomous Driving Program
9.7.2 An Improved Autonomous Driving Program
9.7.3 Traffic Simulation and Programming
9.8 Discussions
9.9 Exercises and Projects

Chapter 10 Interfacing Service-Oriented Software with Databases
10.1 Database Systems and Operations
10.2 Relational Databases in Service-Oriented Software
10.2.1 Installing a Database
10.2.2 Interface between Database and Software
10.2.3 SQL Database in ADO .Net
10.2.4 DataAdapter and DataSet in ADO .Net
10.3 LINQ, Language Integrated Query
10.3.1 What Is the Purpose of LINQ?
10.3.2 Lambda Expressions
10.3.3 LINQ to Object
10.3.4 LINQ to SQL
10.3.5 LINQ to XML
10.3.6 GraphQL
10.4 XML-Based Database and Query Language XQuery
10.4.1 Expressing Queries
10.4.2 Transforming XML Document
10.4.3 XQuery Discussions
10.5 Discussions
10.6 Exercises and Projects

Chapter 11 Big Data Processing and Cloud Computing
11.1 Big Data Systems and Management
11.1.1 Big Data Concepts
11.1.2 Big Data Management
11.2 Big Data Processing and Analytics
11.2.1 Map and Reduce
11.2.2 Hadoop and Cassandra
11.2.3 Big Data Simulation in VIPLE
11.2.4 Apache Pig
11.2.5 Big Data Analytics
11.3 Big Data Applications and Case Studies
11.3.1 Big Data Applications in Different Domains
11.3.2 Recommender System
11.4 Cloud Computing
11.4.1 Definitions
11.4.2 Software Engineering and Software Architecture Leading to Cloud Computing
11.4.3 Software as a Service and Multitenancy
11.4.4 Platform as a Service
11.4.5 Infrastructure as a Service and Data Center
11.5 Discussions
11.6 Exercises and Projects

Chapter 12 Artificial Intelligence and Machine Learning
12.1 Development of Artificial Intelligence and Machine Learning
12.2 From Traditional Programming to AI Programming
12.3 Machine Learning Case Study on Traffic Sign Recognition
12.3.1 Using Traditional Programming
12.3.2 Using Machine Learning
12.3.3 Machine Learning Experiments
12.4 Machine Learning Case Study on Flight Path Recognition
12.4.1 Flight Activity Recognition
12.4.2 Implementation
12.4.3 Experiment and Configurations
12.5 Machine Learning Case Study on Network Traffic Monitoring
12.6 Ontology
12.6.1 Ontology Language RDF
12.6.2 RDF Schema
12.6.3 Reasoning and Verification in Ontology
12.6.4 Web Ontology Language OWL
12.6.5 OWL-S and Semantic Web Services
12.6.6 Linked Data
12.6.7 Ontology Development Environments
12.7 Discussions
12.8 Exercises and Projects

Chapter 13 Mobile Computing and Application Development
13.1 Introduction
13.2 .NET MAUI
13.3 Mobile Application Architectures
13.3.1 Three-Layer Architecture
13.3.2 MVC Architecture
13.3.3 MVVM Architecture
13.4 XAML
13.4.1 XAML Basics
13.4.2 Xamarin Layouts
13.4.3 Xamarin Controls
13.4.4 Animations
13.5 VIPLE Connection Example
13.6 Encrypt-Decrypt App Example
13.7 Number Guessing Game
13.8 Discussions
13.9 Exercises and Projects

Part III Appendices: Tutorials on Service-Oriented System Development

Appendix A Web Application Development
A.1 Design of Graphical User Interface
A.2 Discovering Web Services Available Online
A.3 Access Web Services in Your Program: ImageService
A.4 Exercises and Projects

Appendix B Visual IoT/Robotics Programming Language Environment
B.1 Introduction to VIPLE
B.1.1 Basic Activities in VIPLE Toolbox
B.1.2 Built-in VIPLE Services
B.2 Getting Started with VIPLE Programming
Ex. 1. “Hello World” in VIPLE
Ex. 2. Favorite Movie
Ex. 3. Create While Loop Block Using Merge and If Activities
Ex. 4. Creating While Loop Block Using the While Activity
Ex. 5. Creating an Activity
Ex. 6. Creating Counter Activity
Ex. 7. Build a 2-1 Multiplexor
Ex. 8. Convert an Activity into a Service
B.3 Building Larger Systems Using Modules
Ex. 1. Creating an AND Gate in VIPLE
Ex. 2. Creating OR, NOT, and XOR Gates
Ex. 3. Build a 1-bit Adder
Ex. 4. Build a 2-1 Multiplexor and a 4-1 Multiplexor
Ex. 5. Build a 1-Bit ALU
Ex. 6. Automated Testing
Ex. 7. Create Automated Testing for ALU
Ex. 8. Create a 4-Bit ALU
Ex. 9. Drive-by-Wire Simulation
B.4 Exercises and Projects

Appendix C ASU Repository of Services and Applications

References

Index

Yinong Chen

Yinong Chen received his Ph.D. from the Karlsruhe Institute of Technology (KIT), formerly known as the University of Karlsruhe, Germany, in 1993. He did postdoctoral research at KIT and at LAAS-CNRS – France between 1993 and 1995. From 1994 to 2000, he was a faculty member at Wits the University at Johannesburg, South Africa. Dr. Chen joined Arizona State University in 2001 and is a full teaching professor in the School of Computing and Augmented Intelligence and the director of IoT/Robotics Education Lab in the school.

Dr. Chen’s primary research interests are in software engineering, programming languages, service-oriented computing, artificial intelligence, Robot as a Service, Internet of Things, and computer science education (http://www.public.asu.edu/~ychen10/). He is the co-inverter of the VIPLE – Visual IoT/Robotics Programming Language Environment (https://venus.sod.asu.edu/VIPLE/) He (co-) authored a dozen books and over 300 technical papers in these research areas. Dr. Chen is the Editor-in-Chief of Journal of Artificial Intelligence and Technology since 2021, an associate editor of the International Journal of Simulation and Process Modelling (IJSPM) since Jan 2004, an area editor of the Elsevier journal Simulation Modeling Practice and Theory, since Jan 2006, and an editorial board member of the CAAI Transactions on Intelligence Technology, since Jan 2016. Dr. Chen has taught a wide variety of computer science and engineering courses, ranging from freshman, sophomore, junior, and senior, to graduate courses, at Wits University and at Arizona State University. He received two consecutive Teacher of the Year awards in 2008 and in 2009 from the School of Computing and Informatics at Arizona State University.

GENNARO DE LUCA

Gennaro De Luca received his Ph.D. from Arizona State University (ASU) in 2020. He won multiple top prizes during his study, including Intel Cup, Intel Cornell Cup, Intel® IoT Roadshow Hackathon, and Microsoft Imagine Cup. He began working as a lecturer in 2020 in ASU Information Technology department, and now with ASU School of Computing and Augmented Intelligence as an assistant teaching professor. Dr. De Luca teaches a variety of courses, including freshman and sophomore programming languages, senior mobile application development and capstone, and various graduate-level topics.

Dr. De Luca’s primary research interests are in quantum computing, artificial intelligence, machine learning, computer science education, workflow programming, and robotics (https://www.public.asu.edu/~gdeluca1/). He has (co-)authored multiple research papers and textbook chapters on VIPLE, the Visual IoT/Robotics Programming Language Environment (https://venus.sod.asu.edu/VIPLE/), which he co-invented. His current work focuses on near-team quantum computing and its various applications, such as machine learning.

Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services focuses on service-oriented computing, web application development, and service-oriented system integration. It covers WSDL services, RESTful services, their development and applications, XML and related technologies, Web data management and database accesses, architecture-driven approach, workflow-based software integration, device and IoT integration, as well as the latest technologies in big data processing, cloud computing, machine-learning, artificial intelligence, and cross-platform mobile/phone application development. The book teaches both principles and hands-on programming skills, leading to operational software development. Exercises, practice questions, and projects are provided at the end of each chapter to help students review and apply what they have learned. 

Service-Oriented Computing and System Integration: Software, IoT, Big Data, and AI as Services:

  • integrates new tutorial-based material to build working applications from scratch,
  • features a chapter dedicated to mobile computing and application development.
  • presents autonomous driving in TORCS and traffic simulation and its programming.

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

Chapter 1 Introduction to Distributed Service-Oriented Computing
1.1 Computer Architecture and Computing Paradigms
1.1.1 Computer Architecture
1.1.2 Software Architecture
1.1.3 Computing Paradigms
1.2 Distributed Computing and Distributed Software Architecture
1.2.1 Distributed Computing
1.2.2 N-Tier Architecture
1.2.3 Distributed Object Architecture
1.3 Service-Oriented Architecture and Computing
1.3.1 Basic Concepts and Terminologies
1.3.2 Service-Oriented Computing
1.3.3 Object-Oriented Computing versus Service-Oriented Computing
1.3.4 Service-Oriented System Engineering
1.4 Service-Oriented Software Development and Applications
1.4.1 Traditional Software Development Processes
1.4.2 Service-Oriented Software Development
1.4.3 Applications of Service-Oriented Computing
1.4.4 Web Application Composition
1.5 Enterprise Software Development
1.6 Discussions
1.7 Exercises and Projects

Chapter 2 Distributed Computing with Multithreading
2.1 Introduction to C# and .Net
2.1.1 Getting Started with C# and .Net
2.1.2 Comparison between C++ and C#
2.1.3 Namespaces and the “using” Directive
2.1.4 Class and Object in C#
2.1.5 Parameters: Passing by Reference with ref & out
2.1.6 Base Class and Base Calling Class Constructor
2.1.7 Constructor, Destructor, and Garbage Collection
2.1.8 Pointers in C#
2.1.9 C# Unified Type System
2.2 Memory Management and Garbage Collection
2.2.1 Static Variables and Static Methods
2.2.2 Runtime Stack for Local Variables
2.2.3 Heap for Dynamic Memory Allocation
2.2.4 Scope and Garbage Collection
2.3 General Issues in Multitasking and Multithreading
2.3.1 Basic Requirements
2.3.2 Critical Operations and Synchronization
2.3.3 Deadlock and Deadlock Resolving
2.3.4 Order of Execution
2.3.5 Operating System Support for Multitasking and Multithreading
2.4 Multithreading and Synchronization in Java
2.4.1 Creating and Starting Threads
2.4.2 Thread Synchronization
2.4.3 Synchronized Method
2.4.4 Synchronized Statements
2.5 Multithreading and Synchronization in Python
2.5.1 Creating and Starting Threads
2.5.2 Adding Synchronization 
2.6 Multithreading in C#
2.6.1Threading Classes and Properties
2.6.2 Monitor
2.6.3 Reader and Writer Locks
2.6.4 Mutexes
2.6.5 Semaphore
2.6.6 Coordination Event
2.7 Event-Driven Programming
2.7.1 Exception Handling
2.7.2 Event-Driven Programming Concepts and Mechanisms
2.7.3 Case Study: An Electronic Commerce Application in Event-Driven Approach
2.8 Multithreading Performance
2.8.1 Amdahl’s Law
2.8.2 Multithreading Experiments
2.9 Asynchronous Functions and Their Performance 
2.9.1 Synchronous Functions
2.9.2 Asynchronous Functions and Calls
2.9.3 Asynchronous Implementations of a Travel Booking System
2.9.4 Asynchronous Implementations with Additional Features 
2.10 Discussions
2.11 Exercises and Projects

Chapter 3 Essentials in Service-Oriented Software Development
3.1 Service-Oriented Software Development Environments
3.1.1 Overview
3.1.2 Windows Communication Foundation 
3.1.3 Service Interface: Address, Binding, and Contract
3.2 Service Provider: Creating and Hosting Services
3.2.1 Getting Started with Developing WCF Services
3.2.2 Testing Web Services in WCF Test Client
3.2.3 Writing a Console Application to Consume a WCF Service
3.2.4 File Service and Data Management
3.2.5 Hosting Your Web Services as a Service Provider
3.2.6 Source Code Deployment and Precompiled Code Deployment
3.3 Service Brokers: Publishing and Discovering Services
3.3.1 An Ideal Service Broker with All Desired Features
3.3.2 UDDI Service Registry
3.3.3 ebXML Service Registry and Repository
3.3.4 Ad Hoc Registry Lists
3.4 SOAP and HTTP
3.4.1 SOAP Format
3.4.2 HTTP
3.4.3 SOAP over HTTP
3.5 WSDL: Web Services Description Language
3.5.1 Elements of WSDL Documents
3.5.2 WSDL Document Example
3.6 Service Requesters: Building Applications Using Services
3.6.1 Connecting Endpoint and Proxy
3.6.2 Creating a Windows Forms Application in ASP.Net
3.6.3 Developing a Website Application to Consume WCF Services
3.7 Web Service Testing and Dynamic Service Invocation
3.7.1 Get Web Content from URL
3.7.2 Analyze WSDL Document
3.7.3 Test Web Service through Dynamic Proxy
3.7.4 Test Web Service Using Independent Tools
3.7.5 Dynamic Web Services and Web Applications
3.8 Java-Based Web Service Development
3.8.1 Web Application Building Using AJAX Programming
3.8.2 Java-Based Web Service Development and Hosting
3.9 Discussions
3.10 Exercises and Projects

Chapter 4 XML and Web Data Formats
4.1 XML Fundamentals
4.1.1 XML versus HTML
4.1.2 XML Syntax
4.1.3 XML Namespaces
4.2 XML Data Processing
4.2.1 DOM: Document Object Model
4.2.2 SAX: Simple API for XML
4.2.3 XML Text Writer
4.2.4 XML Processing in Java
4.3 XPath
4.4 XML Type Definition Languages
4.4.1 XML Document Type Definition (DTD)
4.4.2 XML Schema
4.4.3 Namespace
4.4.4 XML Validation
4.5 Extensible Stylesheet Language
4.6 Other Web Data Formats
4.6.1 XHTML
4.6.2 RSS
4.6.3 Atom
4.6.4 JSON
4.6.5 HTML5
4.6.6 Google Protocol Buffers and BigTable
4.7 Discussions
4.8 Exercises and Projects

Chapter 5 Web Application and State Management
5.1 Models of Web Applications
5.1.1 Pure HTML-Based Web Application
5.1.2 Client-Side Scripting
5.1.3 Server-Side Scripting and Code-Behind Page Computing
5.1.4 Client-Side Out-of-Browser Computing
5.2 Web Application Structure and Architecture
5.2.1 Components of Web Applications
5.2.2 Server Controls
5.2.3 User Controls
5.2.4 Web Application Configuration
5.2.5 Global Application Class
5.2.6 Dynamic Link Library and Package
5.3 State Management
5.3.1 Overview of State Management Techniques
5.3.2 View State
5.3.3 View State Security and Machine Key
5.3.4 Session State
5.3.5 Cookies
5.3.6 Session State and Cookies
5.3.7 Application State and Service Execution Model
5.4 Save User Data to Server File System
5.4.1 File System and Standard File Operations
5.4.2 Reading and Writing XML Files
5.5 Caching 
5.5.1 Output Caching
5.5.2 Fragment Caching
5.5.3 Data Caching
5.6 Dynamic Graphics Design and Generation
5.6.1 Dynamic Graphics
5.6.2 Getting Started with Dynamic Graphics Generation
5.6.3 Generating Dynamic Graphics in User Control
5.7 Discussions
5.8 Exercises and Projects

Chapter 6 Dependability of Service-Oriented Software
6.1 Basic Concepts
6.1.1 Dependability
6.1.2 Dependability Attributes and Quality of Service
6.1.3 Security Issues in SOA Software
6.1.4 Reputation Management System
6.2 Access Control in Web Applications
6.2.1 IIS and Windows-Based Security Mechanisms
6.2.2 Forms-Based Security
6.2.3 Forms-Based Security with Self-Registration
6.2.4 User Registration Using the Built-in Account Management
6.3 Encryption and Decryption
6.3.1 Developing Encryption and Decryption Service in WCF
6.3.2 Developing a Secure Hashing Service in WCF
6.3.3 WCF Service Client
6.3.4 Error Control Code
6.3.5 Secure Sockets Layer Cryptographic Protocols
6.4 Dependable Computing in Windows Communication Foundation
6.4.1 WS-Security
6.4.2 WS-Reliability
6.4.3 Transactions
6.5 Discussions
6.6 Exercises and Projects

Part II Advanced Service-Oriented Computing and System Integration

Chapter 7 Advanced Services and Application Development
7.1 Self-Hosting Services
7.1.1 Developing a Service and a Hosting Service
7.1.2 Developing Clients to Consume Self-Hosting Services
7.2 Advanced WCF Services
7.2.1 Advanced Communication Models
7.2.2 Advanced Bindings
7.2.3 Service Behavior and State Management
7.3 REST Concept and RESTful Services
7.3.1 REST Concept and REST Architecture
7.3.2 RESTful Services
7.3.3 Microservices
7.3.4 Developing RESTful Service
7.3.5 Developing an Image Verifier in RESTful Service
7.3.6 Consuming Simple RESTful Service
7.3.7 Google RESTful Services: Map Services
7.3.8 Making Asynchronous Calls to RESTful Services
7.3.9 RESTful Service-Based Web Application Description Language
7.4 Advanced Web Application Architecture
7.4.1 ASP .Net Forms-Centric Architecture
7.4.2 HTML5 on ASP .Net Core Framework
7.4.3 MVC Architecture on ASP .Net Core Framework
7.4.4 MVC Web Application Development Example
7.5 Discussions
7.6 Exercises and Projects

Chapter 8 Enterprise Software Development and Integration
8.1 Overview of Composition Languages
8.2 Workflow Foundation
8.2.1 Architecture and Components
8.2.2 Creating a WF Flowchart Application
8.2.3 Creating Custom Code Activity for Workflow Application
8.2.4 Implementing Finite State Machine in Workflow
8.2.5 Creating Services and Persistence Services Using Workflow
8.3 BPEL
8.3.1 BPEL Activities and Constructs
8.3.2 BPEL Process
8.3.3 WSDL Interface Definition of BPEL Process
8.3.4 BPEL Process
8.4 Stateless versus Stateful Web Services
8.4.1 BizTalk’s Singleton Object Approach
8.4.2 BPEL’s Correlation Approach
8.5 Frameworks Supporting BPEL Composition
8.5.1 Oracle SOA Suite
8.5.2 ActiveBPEL
8.5.3 BizTalk
8.5.4 Simple Workflow Service
8.6 Message-Based Integration
8.6.1 Java Message Service
8.6.2 Microsoft Message Queue
8.6.3 Database-Supported Messaging
8.6.4 E-mail Supported Messaging
8.6.5 Enterprise Service Bus
8.7 Other Composition Languages
8.7.1 SCA/SDO
8.7.2 WSFL: Web Services Flow Language
8.8 Discussions
8.9 Exercises and Projects

Chapter 9 IoT, Robotics, and Device Integration via Visual Programming
9.1 Introduction
9.1.1 Internet of Things
9.1.2 Service-Oriented Robotics Computing
9.1.3 Event-Driven Robotics Applications
9.2 Robot as a Service
9.2.1 Robot as a Service Definition
9.2.2 Robot as a Service Design
9.2.3 Robot as a Service Implementation
9.3 Robotics Developer Studio and Visual Programming Language
9.4 VIPLE: A New Visual Programming Language
9.4.1 ASU VIPLE versus Microsoft VPL
9.4.2 Service-Oriented Computing: RESTful, WSDL, and VIPLE Service
9.4.3 Workflow with Code Activities
9.4.4 Finite State Machine
9.4.5 Event-Driven Programming
9.5 Robot Programming and Maze Navigation
9.5.1 VIPLE Robot Services
9.5.2 Maze Navigation Algorithms in Finite State Machine
9.5.3 Maze Navigation Algorithms Using Unity Simulator
9.5.4 Maze Navigation Algorithms Using Web Simulator
9.5.5 Maze Navigation Using Lego EV3 Robot
9.6 Different Platforms Supported by VIPLE
9.6.1 Open Interface between VIPLE and Device
9.6.2 Connecting VIPLE to Open Architecture Robots
9.6.3 Using Robot Motion Service to Control Complex Robots
9.7 Autonomous Driving in Simulation Environment
9.7.1 A Simple Autonomous Driving Program
9.7.2 An Improved Autonomous Driving Program
9.7.3 Traffic Simulation and Programming
9.8 Discussions
9.9 Exercises and Projects

Chapter 10 Interfacing Service-Oriented Software with Databases
10.1 Database Systems and Operations
10.2 Relational Databases in Service-Oriented Software
10.2.1 Installing a Database
10.2.2 Interface between Database and Software
10.2.3 SQL Database in ADO .Net
10.2.4 DataAdapter and DataSet in ADO .Net
10.3 LINQ, Language Integrated Query
10.3.1 What Is the Purpose of LINQ?
10.3.2 Lambda Expressions
10.3.3 LINQ to Object
10.3.4 LINQ to SQL
10.3.5 LINQ to XML
10.3.6 GraphQL
10.4 XML-Based Database and Query Language XQuery
10.4.1 Expressing Queries
10.4.2 Transforming XML Document
10.4.3 XQuery Discussions
10.5 Discussions
10.6 Exercises and Projects

Chapter 11 Big Data Processing and Cloud Computing
11.1 Big Data Systems and Management
11.1.1 Big Data Concepts
11.1.2 Big Data Management
11.2 Big Data Processing and Analytics
11.2.1 Map and Reduce
11.2.2 Hadoop and Cassandra
11.2.3 Big Data Simulation in VIPLE
11.2.4 Apache Pig
11.2.5 Big Data Analytics
11.3 Big Data Applications and Case Studies
11.3.1 Big Data Applications in Different Domains
11.3.2 Recommender System
11.4 Cloud Computing
11.4.1 Definitions
11.4.2 Software Engineering and Software Architecture Leading to Cloud Computing
11.4.3 Software as a Service and Multitenancy
11.4.4 Platform as a Service
11.4.5 Infrastructure as a Service and Data Center
11.5 Discussions
11.6 Exercises and Projects

Chapter 12 Artificial Intelligence and Machine Learning
12.1 Development of Artificial Intelligence and Machine Learning
12.2 From Traditional Programming to AI Programming
12.3 Machine Learning Case Study on Traffic Sign Recognition
12.3.1 Using Traditional Programming
12.3.2 Using Machine Learning
12.3.3 Machine Learning Experiments
12.4 Machine Learning Case Study on Flight Path Recognition
12.4.1 Flight Activity Recognition
12.4.2 Implementation
12.4.3 Experiment and Configurations
12.5 Machine Learning Case Study on Network Traffic Monitoring
12.6 Ontology
12.6.1 Ontology Language RDF
12.6.2 RDF Schema
12.6.3 Reasoning and Verification in Ontology
12.6.4 Web Ontology Language OWL
12.6.5 OWL-S and Semantic Web Services
12.6.6 Linked Data
12.6.7 Ontology Development Environments
12.7 Discussions
12.8 Exercises and Projects

Chapter 13 Mobile Computing and Application Development
13.1 Introduction
13.2 .NET MAUI
13.3 Mobile Application Architectures
13.3.1 Three-Layer Architecture
13.3.2 MVC Architecture
13.3.3 MVVM Architecture
13.4 XAML
13.4.1 XAML Basics
13.4.2 Xamarin Layouts
13.4.3 Xamarin Controls
13.4.4 Animations
13.5 VIPLE Connection Example
13.6 Encrypt-Decrypt App Example
13.7 Number Guessing Game
13.8 Discussions
13.9 Exercises and Projects

Part III Appendices: Tutorials on Service-Oriented System Development

Appendix A Web Application Development
A.1 Design of Graphical User Interface
A.2 Discovering Web Services Available Online
A.3 Access Web Services in Your Program: ImageService
A.4 Exercises and Projects

Appendix B Visual IoT/Robotics Programming Language Environment
B.1 Introduction to VIPLE
B.1.1 Basic Activities in VIPLE Toolbox
B.1.2 Built-in VIPLE Services
B.2 Getting Started with VIPLE Programming
Ex. 1. “Hello World” in VIPLE
Ex. 2. Favorite Movie
Ex. 3. Create While Loop Block Using Merge and If Activities
Ex. 4. Creating While Loop Block Using the While Activity
Ex. 5. Creating an Activity
Ex. 6. Creating Counter Activity
Ex. 7. Build a 2-1 Multiplexor
Ex. 8. Convert an Activity into a Service
B.3 Building Larger Systems Using Modules
Ex. 1. Creating an AND Gate in VIPLE
Ex. 2. Creating OR, NOT, and XOR Gates
Ex. 3. Build a 1-bit Adder
Ex. 4. Build a 2-1 Multiplexor and a 4-1 Multiplexor
Ex. 5. Build a 1-Bit ALU
Ex. 6. Automated Testing
Ex. 7. Create Automated Testing for ALU
Ex. 8. Create a 4-Bit ALU
Ex. 9. Drive-by-Wire Simulation
B.4 Exercises and Projects

Appendix C ASU Repository of Services and Applications

References

Index

Yinong Chen

Yinong Chen received his Ph.D. from the Karlsruhe Institute of Technology (KIT), formerly known as the University of Karlsruhe, Germany, in 1993. He did postdoctoral research at KIT and at LAAS-CNRS – France between 1993 and 1995. From 1994 to 2000, he was a faculty member at Wits the University at Johannesburg, South Africa. Dr. Chen joined Arizona State University in 2001 and is a full teaching professor in the School of Computing and Augmented Intelligence and the director of IoT/Robotics Education Lab in the school.

Dr. Chen’s primary research interests are in software engineering, programming languages, service-oriented computing, artificial intelligence, Robot as a Service, Internet of Things, and computer science education (http://www.public.asu.edu/~ychen10/). He is the co-inverter of the VIPLE – Visual IoT/Robotics Programming Language Environment (https://venus.sod.asu.edu/VIPLE/) He (co-) authored a dozen books and over 300 technical papers in these research areas. Dr. Chen is the Editor-in-Chief of Journal of Artificial Intelligence and Technology since 2021, an associate editor of the International Journal of Simulation and Process Modelling (IJSPM) since Jan 2004, an area editor of the Elsevier journal Simulation Modeling Practice and Theory, since Jan 2006, and an editorial board member of the CAAI Transactions on Intelligence Technology, since Jan 2016. Dr. Chen has taught a wide variety of computer science and engineering courses, ranging from freshman, sophomore, junior, and senior, to graduate courses, at Wits University and at Arizona State University. He received two consecutive Teacher of the Year awards in 2008 and in 2009 from the School of Computing and Informatics at Arizona State University.

GENNARO DE LUCA

Gennaro De Luca received his Ph.D. from Arizona State University (ASU) in 2020. He won multiple top prizes during his study, including Intel Cup, Intel Cornell Cup, Intel® IoT Roadshow Hackathon, and Microsoft Imagine Cup. He began working as a lecturer in 2020 in ASU Information Technology department, and now with ASU School of Computing and Augmented Intelligence as an assistant teaching professor. Dr. De Luca teaches a variety of courses, including freshman and sophomore programming languages, senior mobile application development and capstone, and various graduate-level topics.

Dr. De Luca’s primary research interests are in quantum computing, artificial intelligence, machine learning, computer science education, workflow programming, and robotics (https://www.public.asu.edu/~gdeluca1/). He has (co-)authored multiple research papers and textbook chapters on VIPLE, the Visual IoT/Robotics Programming Language Environment (https://venus.sod.asu.edu/VIPLE/), which he co-invented. His current work focuses on near-team quantum computing and its various applications, such as machine learning.