It's not a matter of sides. You can be proficient in C#, but also
understand that it isn't always the best tool for the job. You can also
be good at C#, and be a bigger fan of java.
I think this bit here is the biggest poison that infects MS loonies:
"I think the biggest obstacle for .NET and MS as a whole to overcome is
the ingrained concept in some developers mind that all MS products suck
(not true), and that MS has lots of security issues (somewhat true), and
most of all the general hatred because they have a monopoly on the
desktop/office market. They also get a bad rap for being "proprietary"
when in actuality they are pushing the envelope and just not waiting for
a panel of "experts" to "standardize" the API they happen to be working
on. And for this reason Visual Studio has superior support for Web
Services."
Open standards are what drive technology. Take TCP/IP for example, or
HTTP, HTML, CSS, PNG, etc. These are things that have a set format or
API, and are *not going to change.* This basically means that we can
stop worrying about how such and such is supposed to be implemented at
this point in time, and start worrying about making the existing
implementation more efficient, or start worrying about more important
things.
MS is not pushing the envelope by any means when it comes to open
standards. They've submitted the C# language and got it ISO certified,
but now C# 2.0 is out. They didn't standardize the framework libraries,
many of which contain patented material (I'm not going to even approach
the validity of software patents). When you patent something, you're
trying to make sure that you have a legal monopoly on selling that item
for a set amount of time. It is a version of "proprietary."
The panel of "experts" that you refer to is what you rely on every day.
If it weren't for these "experts," then you'd have a number of
different servers that speak in different languages, and may or may not
understand each other. You'd be able to talk to IIS, for instance, but
maybe not access Hotmail (which, I believe, is still based on BSD).
Then again, these "experts" were around when the industry started, or
they built the infrastructure for the industry themselves. Let's just
call them "experts," because they don't deserve any more respect than
that. </sarcasm>
Visual Studio is a good tool, no doubt about it. Does it, however, work
in the same way with mono? Apache? The problem of creating an end-all
tool like Visual Studio, as easy to use as it is, is that you've got
platform lock. Someone else is making the decision for you, as to what
web server you're going to use, or what operating system you are going
to run. That is, if you really really want to use visual studio. For
those who don't want to be confined to an extremely small set of
platforms, they choose to go with a tool that promises to work with many.
Eclipse, for instance, is open sourced. It has a board-standardized
plugin API, and a number of plugins exist for it. Eclipse, in effect,
has much more flexibility and extensibility than Visual Studio does. It
doesn't have an embedded WYSIWYG HTML editor, nor does it seamlessly
integrate with web servers by default. It does have a java debugger,
though. Everything else is handled by plugins, and I'm certain that
there are HTML plugins, web service plugins, visual form editing tools,
UML, etc.
One last thing, just an FYI, to tell the truth. It isn't the web server
that has debugging built in. When you're debugging a web service in
..NET, or ASP.NET, you're interacting with the .NET runtime, not the web
server. When the web server sees that you're requesting a .NET type
page, it passes the request off to the runtime, which processes the
request itself. In this respect, yes, you can debug java web servlets
and services, since you can debug through the virtual machine.
Sorry... this is a bit of a rant, but astroturfing without knowing both
sides of the equation is rather frustrating.