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.
The NEW 8th edition of 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.
Author(s): Yinong Chen, Gennaro De Luca
Edition: 8
Publisher: Kendall Hunt Publishing
Year: 2021
Language: English
Pages: 806
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 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 in C#
2.5.1 Thread Classes and Properties
2.5.2 Monitor
2.5.3 Reader and Writer Locks
2.5.4 Mutexes
2.5.5 Semaphore
2.5.6 Coordination Event
2.6 Event-Driven Programming
2.6.1 Exception Handling
2.6.2 Event-Driven Programming Concepts and Mechanisms
2.6.3 Case Study: An Electronic Commerce Application in Event-Driven Approach
2.7 Multithreading Performance
2.7.1 Amdahl’s Law
2.7.2 Multithreading Experiments
2.8 Discussions
2.9 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 and Recommendation
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.3.5 An Example Invoking Real Web Services
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.3.1 MRDS and VPL Overview
9.3.2 Application Development in MRDS and VPL
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 Xamarin
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 Discussions
13.8 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 Access Web Services in Your Program: Weather Forecasting Service
A.5 Access Web Services in Your Program: USZip Service
A.6 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