DIME, GXA, RAS, Web Services, Smart
clients, .NET Remoting, ‘No touch
deployment’ and many to go, we hear a lot of
buzzwords only to scare people who do not know much about
them.
Let us look at some of the buzzwords so that we are not left
out in the crowd. We will also look at some of the new
concepts introduced in .NET and see how we can understand
them better.
Following sections are divided into two parts –
buzzword/new technology and my view about it in real life.
Obviously views I presented here are purely from my
experience and my only intention here is to give you little
more feedback. New technology is mostly better than old
technology, as it comes with ways to address current
drawbacks and to improve productivity. It is important also
to understand where to use what, without which we may not be
getting the benefit of the new technology in anyway.
.NET Web Services
.NET Web Services is similar to
SOAP (Simple Object Access Protocol) based distributed
computation. .NET Web Services provide a wrapper on top of
SOAP using WSDL (Web Services Description Language).
Obviously this makes it easy to use web services vs. using
SOAP directly. UDDI (Universal Description,
Discovery and Integration) allows us to publish web services
to enterprise or public Internet so that it can be located
and queried easily.
Reality: So far my experience is that this is really
cool and much better option than using http get/post with
special data formats or using SOAP directly, in distributed
environment. Using visual studio .NET with in very short time
you can create a web service. But my suggestion on this is,
always keep your business logic in separate assembly or set
of assemblies. Use Web services only as a way to expose that
functionality in distributed environment. Also some
developers (and their managers I guess) are in hurry to
develop everything as web services. I would recommend using
web service, in cases you foresee the need for distributed
computation.
DIME
DIME (Direct Internet Message Encapsulation)
specification provides a mechanism for packaging pieces of
data together. When we need to send documents, jpeg/image
files or any other binary data/files through web services,
WS-Attachments defines ways, how to use DIME to send
SOAP messages with these attachments. In many ways it
is similar to sending files as attachments in email or
uploading files through HTML Forms on any web site. Mostly
email attachments use MIME (Multipurpose Internet Mail
Extensions).
MIME and DIME
address similar problem in different ways. There is a very
good article on Microsoft site that gives details of
this:
Understanding DIME and WS-Attachments
.NET Remoting
If you are aware of JAVARMI or DCOM in windows world, this is something
similar in .NET world. In .NET there is no DCOM and .NET
Remoting is best way to support distributed computing, other
than using web services.
Reality: It might be confusing when to use web
services and when to use .NET Remoting. .NET Remoting has
more flexibility in terms of what channel (HTTP, TCP etc) to
be used for communication and other aspects. .NET Web service
is based on SOAP and uses HTTP protocol. Web services
might be easier to use when it comes to development (You need
to know little less details). Unlike DCOM you can use
.NET Remoting in Intranet or Internet environment. Also .NET
Remoting is recommended way to communicate across
Application Domains (Application Domain: .NET
way of separating .NET application's process space).
.NET Framework (Write once and run it anywhere?)
Unlike "Write once and run anywhere" slogan of JAVA, .NET
supports "Write once and Use it everywhere". JAVA
forces everyone to use JAVA language and as long as you write
code in JAVA, it can run on any machine including
UNIX OS (Assuming you installed JVM – Java
Virtual Machine).
Reality:JAVA is good in homogeneous
environment where all the code modules are developed in JAVA
and it is easy to run the whole product in this case, on any
machine irrespective of the operating system. .NET Framework
is similar to JVM and if you need to run any .NET code
on any machine, you need .NET Framework installed on that
machine. But big question is how easy it is to have a fully
functional .NET Framework for non-windows based operating
system. We need to wait and see. One big advantage of .NET
is, it works well with current heterogeneous development
environment where we use many different languages. With
Visual studio .NET IDE, it is very easy to not only
step through different languages, also to inherit or reuse
code developed in different languages. .NET Common Language
Runtime (CLR) and CTS (Common Type System)
support this.
NOTE: I have seen many articles (including ones
on Microsoft site) encouraging people to use Platform Invoke
in .NET, to access Win32 functionality that is not
supported directly in .NET Framework. People who use Platform
Invoke for this purpose are forcing themselves to Windows
platform again. Some articles on Microsoft web site mention,
lack of time for coding, testing and documenting to support
all Win32API, is the reason for this
functionality not supported in current .NET Release.
Hopefully this might improve with future releases.
GXA (Global XML Web services Architecture)
Web
services, built with SOAP, UDDI and WSDL
specification, support basic application environment. Once we
start developing complex applications using .NET Web
services, we might need Transaction, Message routing and
Security support required for most of the enterprise
applications. GXA is an attempt to address these
issues and standardize their implementation in web services
based development.
Reality: If you are using .NET Web Services heavily,
it is good to be in touch with latest developments in this
area.
RAS (Reusable Asset Specification)
Software Industry
research claims that development using Reusable modules costs
only 20% of development cost from ground up. Reusable Asset
Specification (RAS) is taking it to one more level and
defining a standard in grouping your assets in any project.
Assets can include any artifact in the project.
Reality: I understand this concept and like the idea
of reusability. But it takes a huge part of my brain to
really understand the reusability at any level higher than
modules/code. Also there are very few tools available
currently and not sure how much training we need to
understand how to use them. Good news is that Rational has
some tools that integrate well into Visual studio .NET (check
out www.rational.com for more details).
XCopy Deployment
All .NET code can be installed on
new machines with an easy XCopy deployment. XCopy term
is used to say that it is easy to copy and paste (or zip and
unzip) project files from one machine to other machine and
that should complete installation. XCopy deployment in.NET
has no issues of DLL hell or COM registration and registry
mess.
Reality: This is not much different from .ini file
based configuration and using dlls from project directory,
used by most of us in Win 3.1 world. Later on Microsoft
introduced registry as a central place to keep configuration
and introduced COM to avoid DLL hell and multiple
versions of dlls, all over the machine. Now we are back to
similar world with few exceptions. Configuration of .NET
application is stored in XML based configuration file.
Assemblies (are similar to dlls), if they are copied to
current project directory then they are loaded from where
they are. This will allow us to have multiple assemblies of
different versions used by different projects on same
machine. One good thing mainly in web world is, if you copy
new assemblies or change configuration (web.config), it will
be reflected in your application with out stopping the web
server. Annoying thing is that there is no good tool that I
am aware of, to manage all different .NET application
configuration files installed on a single machine. .NET
Configuration tool allows to some extent changing
configuration of applications but does not support all. So we
are back to opening the XML file in notepad and editing
configuration settings.
Smart Client
Get the rich UI experience and more
processing on client machines. With Smart Client you can
download latest assemblies (No touch deployment – more
on this in next section) and give rich UI experience to end
users and do more computation on client machine. (Fine print:
You need .NET Framework installed on client machine).
Reality: This is not new concept. In windows world we
download ActiveX controls and in JAVA world we
download JAVA applets almost the same way. How do we
create a Smart Client normally? Answer is just creating a
simple Windows Forms application using Visual Studio .NET.
Why is it called Smart Client? It is Smart Client because it
can do a lot better (creating threads and nice UI) than an
ASP.NET based Client-server application.
Obviously what you need to know at the end is that you need
to install .NET Framework on client machines before you can
use any Smart Client. Needless to say that for .NET Framework
you must have so and so installed on your machine. For so and
so to install you also need something else to be installed
first. Not sure how simple it is going to be to force all the
clients to install .NET Framework. I will not recommend this
to anyone. In my opinion this Smart Client is another way
Microsoft can push .NET Framework installation to many
machines. Best approach still is to use ASP.NET web
application.
No touch Deployment
With no-touch deployment, Windows
Forms applications (desktop applications) built using the
Windows Forms classes of the .NET Framework, can be
downloaded, installed, and run directly on the users'
machines without any alteration of the registry or shared
system components.
Reality: Like I mentioned above, this is not much
different from .CAB based or .JAR based
download of ActiveX or Applets. Main issue to
remember here is that 'No touch Deployment'
requires .NET Framework and IE 5.01 browser installed on
client machine. If you develop .NET Windows Forms
applications, this is something you will be interested in.
Otherwise it is good to go with ASP.NET application
and avoid any deployment on client machines all together.
Conclusion
Sincerely there is one thing I want to admit.
Visual Studio .NET is the best IDE I have ever worked with.
Microsoft really did a very good job with .NET and Visual
Studio .NET. Mainly people who worked with MFC/ATL and VC++
will sure appreciate how much productive it is to develop
projects with .NET technologies. It is very productive
environment. And also a note on deployment: Visual studio
.NET comes with very good setup project templates, that are
very easy to use for building ‘Windows Installer’
kind of setup packages. In this article I made a sincere
attempt to show you, what is hype and what is reality from my
experience. Please bring to my attention, if you find any
mistakes or any suggestion about this article at:
tjayram@yahoo.com.
About the Author
Jayram Tallamraju is a Sr. Programmer Analyst/Software
Architect for Hemisphere Financials (a Bisys Group Company)
in Boston, MA. He is MCP of .NET, MCSD (Microsoft
Certified Solution Developer) and SCJD (Sun Certified
Java Developer). Jay holds an MS in Electronics and has been
working in the software industry for the past 9 years. He is
focused more in building server architecture and in building
reusable business components. His current area of expertise
is in Microsoft technologies such as .NET, C#, Web services,
ASP.NET, VC++/VB, COM/DCOM, ASP/IIS.