Services make the Internet an interactive, programmable
is Microsoft's vision for delivering software as a service,
and Web Services form an important part of that promise.
In an e-mail interview, Gopal Kakivaya, software architect
at Microsoft Corporation, and one of the lead authors
of Simple Access Object Protocol (SOAP) and conceptualist
of XML Web Services talks about the impact these technologies
would have on the developer community By Bhavish Sood
(Pronounced See Sharp) is largely being touted as the
first component-oriented language in the C/C++ family.
Please share some more information on this since languages
like Smalltalk achieved this years ago
C# derives its syntax from C/C++ while providing the benefits
of modern component languages such as simplicity, type
safety and garbage collection. Thus, it is immediately
familiar to C/C++ developers. It supports a fairly rich
type system termed "Common Language Specification
(CLS)" ensuring interoperability with components
written using other CLS compliant languages such as Visual
Microsoft .NET vs. J2EE: How do they stack up in technical
Before I answer this question, I would like to clarify
that one cannot really compare .NET and J2EE. .NET is
Microsoft's vision for delivering software as a service,
and Web Services form one part of that promise. The .NET
offering comprises three other components, which include
the servers, the tools and the end user experiences. J2EE
on the other hand, is purely a specification for building
applications. By itself it does not really deliver on
the real benefits that Web Services can bring; nor does
it have anything about user experience. The difference
in the vision and the offerings that deliver on this vision
is the biggest difference in technical terms as well.
Probably Sun ONE comes closer but beyond announcements
Sun has not made available any more details about it.
So there is not much to compare at this stage with elements
Since you are now talking about CLR (Common Language
Runtime) why is C# important? Is it a corporate strategy
C# is a simple, modern, object-oriented, and type safe
programming language derived from C/C++. It aims to combine
the high productivity of Visual Basic with the raw power
of C++. Its syntax will be very familiar to C/C++ programmers
reducing the learning curve needed for them to develop
applications using the .NET Framework. Common Language
Runtime provides runtime support such as garbage collection
and type safety for CLS (Common Language Specification)
compliant languages. It also provides rich class libraries
callable from any CLS compliant languages such as C#.
Programmers still need a programming language that targets
CLS for developing applications and as such CLS and C#
complement each other. C# is part of a family of products,
called Visual Studio.NET, that also includes Visual Basic.NET
and Visual C++.NET.
C# is a language that is created from the ground up for
the .NET platform, so there are some distinct advantages.
It is a Component Based Language that supports events
and properties as part of its language syntax and it supports
the creation of Web Services natively.
Since .NET is also being touted as an open standard and
platform independent, what do you think about the possibility
of porting the .NET Framework to the non-Windows platform?
Is it technically possible now?
Microsoft has submitted CLS to ECMA (European Computers
Manufacturer's Association) for standardization and a
number of efforts have been announced for porting .NET
to non-Windows platforms such as Linux, Free BSD, Unix
Why do you think developers should change to the Web
The beauty of Web Services is that any application using
any language from any platform can use a service. By allowing
developers to "quilt together" several services
into one solution, Web Services allow the creation of
future ready applications at record speeds. Today, one
of the biggest problems facing developers is the availability
of a plethora of scripts and components, making their
integration into a cohesive, maintainable solution, a
complex process. Web Services allows developers to pick
and choose technology with the confidence that it will
all integrate smoothly, increasing developer productivity
and increasing time to market for the solutions. Also,
Web Services make the Internet so far static and rigid
an interactive, programmable platform providing developers
with a powerful tool for software creation. And lastly,
as the Internet becomes the backbone of all business interaction,
Web Services provide developers with unmatched revenue
Developers looking at the .NET Framework for their application
development efforts have asked whether or not the common
language runtime (CLR) is a virtual machine (VM). Also
how does the CLI compare to the CLS and the CTS?
Language Runtime" implements "Common Language
Specification (CLS)" and provides runtime support
in the form of type safety, access to platform APIs, and
garbage collection to applications targeting it. It, in
conjunction with the .NET Framework, serves as the platform
targeted by any CLS compliant language, thereby enabling
seamless interoperability between components developed
by various CLS compliant languages. This should be contrasted
with conventional VM that typically supports a single
language. CTS is a specification for all object oriented
languages on .NET while CLS is a specification for all
non-object oriented languages so that they share the same
data types and the languages can interop between each
other in the form of cross language debugging etc.
CLI (Common Language Infrastructure) is the specs submitted
to the ECMA body and implementations of CLI can be on
any OS possible.
Any advantages C# would have over Visual Basic (VB)
in terms of the framework?
Both C# and Visual Basic.NET target CLS and as such choice
of the language depends largely on the familiarity with
the language syntax. The C/C++ programmer will most probably
choose C# for developing .NET applications while the existing
VB programmer will find Visual Basic.NET most attractive
as they are already familiar with VB syntax.
You have been involved with authoring both COM and
now SOAP. Any experiences you would like to share with
the developer community?
SOAP combines the component development approach with
the open protocol approach of the Web. It allows separation
of the presentation (UI) information from the data in
contrast with the current Web, where both are mixed up
in HTML pages. Thus, it enables development of many building-block
Web Services that can be put together in different ways
by applications. The skill set developers have developed
for COM is very relevant in the Web Services space because
every COM object can be a SOAP end-point. .NET makes developing
components easy by eliminating COM artifacts like reference
counting and registration. As such I encourage developers
to experiment with the .NET platform and understand how
it improves the development experience.
Why is there a pressing need for SOAP since RPC (Remote
Procedure Calls) always existed in the distributed computing
RPC systems require thick software stacks on the end-points
as the protocols are quite complex with hairy state machines.
Experience has shown that such complex protocols do not
interoperate unless the same code is executing on both
the end-points. The situation is further complicated by
the vendor extensions. SOAP, in contrast, is built on
Web technologies such as XML and HTTP. Almost all platforms
have XML and HTTP software stacks and SOAP basically shows
how they can be put together to develop a messaging system
that can also do RPC.
Bhavish Sood can be reached at: firstname.lastname@example.org