“Chishiki” is Japanese for “knowledge.” e-chishiki.com aims to bring software developers, information security professionals, IT executives and other IT pros a rich body of knowledge in the form of articles, interviews, tutorials and technical discussions. Our contributors are among the biggest names in the Indian IT industry and include noted authors, educators and practitioners.
Weekly Column - Architecting and Developing Applications
A Web Services Primer (1/10): At Your Majesty’s Service
Yashavant Kanetkar and Asang Dani
The Evolution of Web Services
Until the early 1970's, programming was being practiced only in the best of the academic institutions. Access to computers, operating systems, editors, compilers and associated tools was a big issue. In the 1980's and 90's Berkeley's BSD and AT&T's Unix operating systems enabled people to develop a wide variety of software. As software became more complex, the need to build reusable software was felt. To meet this need, static and dynamic libraries were created in various areas. The C library more affectionately known as “libc” served as a guiding force to programmers in designing the so called “function libraries”. The power of abstraction was first felt by programmers at large in a major way. They stretched their own limits to create more powerful software and applications. Complexity in modern software finally led to the adoption of Object Oriented Programming principles in building software. Languages like (initially) Ada and (later) C++ allowed creation of truly reusable software components using principles like encapsulation, polymorphism, inheritance, and containership etc. These components were bundled into reusable libraries like Microsoft's MFC (Microsoft Foundation Classes), and Borland OWL (Object Window Library), etc.
As the technology became more mature, and became widely used in various large organizations, the diversity of computing platforms became a big issue. Portablity, compatibility, upgradability, and data exchange formats, etc. became catchwords as software/applications from different sources/companies refused to gel cohesively. This is when the need for truly "standardized" distributed computing was felt. The IETF (Internet Engineering and Task Force) standardized RPC – Remote Procedure Call in 1988. It allowed programs on two different systems to communicate using APIs that took parameters and returned values. NFS (Network File System) implementation on various flavors of UNIX embraced this approach. In the last decade of the 20th century, several new programming languages like Java, Python, Ruby, C#, and VB.NET were created and gained widespread acceptance. It was clear that a new approach to distributed computing was required. This approach had to be:
- Language neutral
- Easy to implement on the server
- Easy to use on the client
Various approaches were tried including COM/DCOM, CORBA. Though both these approaches let people communicate between client and server in a language neutral way, they were pretty complex to use. With the advent of Web Services, all these problems were solved satisfactorily. In the next section we will discuss the web services approach to distributed computing in detail.
We are sure that your fingers must be itching to create your very own web service. In our opinion, to be able to create one good thing, you must first see ten good things. This applies to web services as well. Hence, we will see how to use a web service, and subsequently migrate to creating a web service. But even before we learn how to use a web service, we must understand how a web service works.



