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:
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:
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
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
|