My first impressions of ASP.NET

  • Thread starter DotNetIsHorrible
  • Start date
D

DotNetIsHorrible

I write CRUD database applications for a living for an audience of
about 100 users per application using classic ASP. I maintain and
frequently change on user's request 22 different applications by
myself.
Recently we have had .NET 1.1 then 2.0 installed and have been told to
use it.
After reading the books about it, and trying it for a couple of
months, I got so mad I decided to write down all of my issues and
rants and post them here.
I have been in this industry for too long to mindlessly drink the
kool-aid and eat up whatever impractical junk they are hyping at the
moment.
Some of these issues have been resolved by pressure on Microsoft in
version 2.0.

Why dot net is horrible for smaller scale Create Read Update Delete
(CRUD) web development:

Overly complicated, more things can and do go wrong, wasting large
amounts of time.

Slow to load the editor, slow to run.

Unhelpful and bizarre error messages, wasting large amounts of time.
I seem to frequently see Error in application "/".

Applications built using this are very inflexible and will cause us
huge problems in the future, forcing us to rewrite them instead,
wasting large amounts of time.

There is no advantage to using OOP for our scale of applications,
having less than 100 users, no more than 5 at a time.

Way more overhead to do simple things, wasting large amounts of time

Hard to refine user interface, everything is locked into controls,
making our clients unhappy and frustrated they can't have things the
way they want.

Dot net is more suitable for large projects with 20 people on each
one, not ~20 projects per person like we have.

Too many methods and objects to choose from, is faster just to write
one than to find the one that matches.

Poorly implemented security model requiring hacks just to function if
the database is on a different server. (v1.1)

The OOP model clashes badly with the relational data model used in all
our databases, requiring kludges and lots of code to work around and
translate, wasting large amounts of time.
See why here: http://en.wikipedia.org/wiki/Object-relational_mapping

One of the main justifications for OOP is a way of dealing with very
large, monolithic systems, separating functional pieces so they don't
affect each other unintentionally, and it does this reasonably well.
But web applications are self limiting in complexity as they are
divided up into pages, so the complexity never gets to the point where
OOP is worth the overhead.

Seems to be pathologically afraid of HTML, the simplicity and
directness of which revolutionized application development making it
fast, flexible and cheap, now they want to go back to the horrible,
slow, expensive, inflexible old model of windows development instead?
What the hell are they smoking? It seems Windows is the center of
their world, what a surprise.

They keep saying we can use rich user interface controls, when 99.9%
of applications don't need them.
They are often buggy and hard to configure. With a little poking
through the reference, and a small amount of thinking, plain old ASP
can construct whatever you need, exactly to your specifications.
You can do the same thing in dot net but it takes a lot more work to
get around the framework's obtrusiveness and attempts to 'help' you.

Regular ASP and PHP are much more powerful than dot net, as you have
explicit control over the HTML. You don't have to go learn a whole
new API just to manipulate HTML.

Everything in the toolbox can be done with plain old ASP or PHP,
except for maybe XML and the phone stuff which is worthless.
Databases should be handling data transfer between applications
anyway, except for web services.

Drag and drop development is a fundamentally misguided method for
building applications. It will allow you to quickly throw something
crude together, but the overhead it introduces when having to
customize it (that is why we are here as programmers and not in India)
and make it functional quickly outweighs the time savings. Most of
this overhead comes from OOP and the .NET framework.

The kind of projects we do don't fit in a wizard or a prebuilt
control, they require innovative, well thought out interfaces that
exactly fit the process, which is subject to large changes and
additions. Trying to do this in dot net causes large amounts of
rework and patch code, wasting large amounts of time.

Datagrids are the worst thing EVER. In VB 6.0 they were horrible.
They are a hole in which you burn large quantities of time and money
for NOTHING. NOTHING. How hard is it to create an HTML table and add
some data variables to it? You will save about two minutes when you
create the datagrid, then waste two weeks trying to get it to work and
look right and get any information out of it. You can see this by the
massive number of postings on usenet and blogs about datagrids. If
they actually worked no one would have to ask.

The designers of dot net haven't caught on to the concept that the
more they add to the development environment, the less productive it
is. They need to fix what was broken with the old ASP, not pile on
new complex and incompatible ways of doing simple stuff.

The complexity and shakiness of the environment means you can't depend
on anything or be sure that it is going to work due to the huge number
of dependencies. This is bad for clients and for you when things
break for no apparent reason.

Trying to get your head around what is going on and trying to fix it
when it frequently breaks takes your mind away from the problem you
are being paid to solve. If you are in business doing this you need
to charge a hefty premium and make yourself less cost competitive
which is death in today's IT market.

The edit, compile, run cycle is slower than ASP by a large margin.

It consumes a large amount of memory and disk space, and is very slow
to compile and run the first time, or when it gets flushed out of the
cache due to non use. Our users get upset if they have to wait all
the time.

The only useful things are the XML bits, webservices, and maybe the
site map template.

If there is an error anywhere in the website, it crashes the whole
thing, all pages. In old ASP only the affected file stops working.
This makes a test server mandatory, wasting time and money. No quick,
cheap fixing on the fly for us.

If you want to add a file to a project, such as a graphic, you have to
put it in the directory before you open Visual Web Developer 2005
otherwise it can't find the file because it presumably already thinks
it 'knows' what is in the project directory. I have to close then
reopen Visual Web Developer to see the file, wasting more time. This
is idiocy.
It is in Beta though, but this sort of thing should never happen.
When you click on the errors list, it thinks you want to jump down
through the errors, when I just want to look at the one I selected.
More idiocy.

You can't put a dynamic menus such as a header in the Master Page
because it is static and you can't send a parameter to it. How is this
an improvement? How hard is it to copy and paste a header or use an
include? I guess that is too straightforward and efficient.

The dot net website (http://beta.asp.net/GuidedTour/default.aspx),
which proudly says 'Powered By ASP.NET v2.0', crashed and was
unavailable for a while when I was looking at it.

The help system is so poorly designed it has a large 'Help on help'
section in it, and by looking at it, you know why it is absolutely
necessary.

Microsoft never gets it right until version 3.0, so stay away until
they finish it.

Component reuse is hugely overrated, and heavily pushed in dot net,
and I can count on one hand the number of times it would have been
useful in the last nine years. If you need lots of component reuse in
your application, the analysis is probably deeply flawed. However,
this may not apply to very large software projects and certain
applications where access is restricted and actions that are complex
must occur together, such as accounting.

Since every object, like a datagrid or a textbox has its own function
to populate it, it becomes a lot more work to get the results from one
query to be part of the criteria for another query on the same page,
wasting large amounts of time.

When everything is abstracted away and layered and put into multiple
places, it makes changes and maintenance a nightmare, wasting large
amounts of time.

There is way too much back and forth server traffic through postbacks,
so if your connection is slow or the server is overloaded, it will be
immediately apparent in the application. Programmers still don't get
it that most people don't have broadband, though within the workplace
they do.

Server validation is an order of magnitude slower than client
validation. In the book, Real World ASP.NET Best Practices by Farhan
Muhammad and Matt Milner, and I quote, "For example, suppose you are
asked to provide a drop-down list of credit card numbers, and, when
the user selects a number, to display the cardholder name and
expiration date by using text boxes.
One way to accomplish this task is to capture the SelectedIndexChange
event of the ASP.NET drop-down list control. When this event occurs,
the page makes a post-back trip to the server and triggers your event
handler. In the event handler, you can obtain the selected credit card
number and retrieve remaining information by querying the database.
This mechanism, even though it is an ASP.NET way of accomplishing
tasks, is very slow and causes unnecessary traffic on the Web server."

By the time you are finished typing in all the OOP overhead code even
for a small application, your fingers will be bloody stumps, or it
will feel like that. There is a high irrelevancy ratio with dot net,
where you are often
having to code things that have very little to do with the actual work
you are trying to accomplish, mostly OOP overhead.

PHP and Perl are far more powerful than dot net, and much more
satisfying and less frustrating to use.

The database wizards in Visual Web Developer 2005 don't always work.

The visual editor is finicky and imprecise, especially when it
interface is getting complex.

The built in controls have horrible ugly unrefined user interfaces.
To fix them requires more work than fixing plain html.

The coding complexity in dot net explodes when doing anything remotely
complicated. You can't easily follow the logic of what is
going on without jumping all over the place.

They are trying to make things more efficient by adding more code to
break operations up into smaller pieces, when having too much code is
the problem.

ASP.NET is like communism, it should work in theory, but in practice
it is a nightmare.

Instead of writing a breadcrumb control where the pages are defined
ahead of time, which in any real life application is a pain to update,
and will likely not get done, why isn't there one that just gets the
referring page title and put it into the breadcrumb trail?

Conclusion: Microsoft .NET represents huge step backward in
programming Web applications, by imposing an inappropriate
object-based programming model imposing large overhead costs and
bloat.



I am sure most of you will feel the opposite, but if you want to know
why dot net has not taken off like a rocket, read the reasons above.
I rest my case.
-c-

P.S. Java is horrible too and I think it is worse.
 
C

Claudio Grazioli

On 1 Apr 2005 10:11:53 -0800, DotNetIsHorrible wrote:

When I first read your message, I thought it was a 1st of April joke.

Guy, you really have a problem.

1. To all what you said about OO
-> you just don't get it! If you don't understand OO, of course you come to
a conclusion like: may be good for large applications, but not for small
ones. What a joke.
-> But hey, do it like this guys: http://www.classicvb.org and get happy
with VB6 and ASP. Don't care about OO, miss the train, loose your job in
some years because no one wants you anymore (maybe you are lucky like the
cobol guys and something like y2k bug crosses your way).

2. To all what you said about ASP.NET
-> To be honest. I'm not a web developer. But one thing I know for sure.
ASP.NET is a great technology, great web sites are implemented using it
(small ones and large ones) and it's much better than ASP. But of course,
if you don't understand OO concepts, well, of course, maybe it's difficult
to see it.
-> The funniest thing is where you write several times that it so much more
difficult to maintain than plain old ASP solutions. Wow. Do I understand
you right? Spaghetti Code is more maintainable than OO code? Funny.


Seldom read so much crap like in your post. Was really funny to read.
 
S

Sylvain Larin

I don't have the time (and the interest) to read all your post and
respond to it, but here are two points I couldn't miss.
There is no advantage to using OOP for our scale of applications,
having less than 100 users, no more than 5 at a time

Among other reasons, the complexity of an application and the
possibility of code reuse does affect the decision of using OOP. The
number of users an application has doesn't.
The dot net website (http://beta.asp.net/GuidedTour/default.aspx), which proudly says 'Powered By ASP.NET v2.0',
crashed and was unavailable for a while when I was looking at it.

Don't the web site name start with "beta"?
 
J

Jason Newell

Option 1:
- Get a faster computer
- Get some training
Option 2:
- Download DotNetNuke www.dotnetnuke.com for a good example of writing
a good ASP.NET app.
Option 3:
- Find another line of work
 
J

JD

You can still write old ASP style applications with ASP.NET, you don't have
to use any rich controls or OOP, its still all there for you. Personally I
find the new object model in ASP.NET better but hey its all a matter of
preference.
 
L

Ludwig Stuyck

On 1 Apr 2005 10:11:53 -0800, (e-mail address removed) (DotNetIsHorrible)
wrote:

I don't think this was a joke. I mean, you don't write such large text
as a joke. No, this guy is serious.

Which makes if even a better joke.
 
T

T. DAVIS JR

Thanks for the laughs guys!! People at work was looking at me like I am
crazy when I laughed out loud. This guy just need to get over it.
 
G

Guest

I agree with your assessment completely. These others are obviously clueless
nerds who've never worked at a real company with a responsibility to provide
the user with SOMETHING THAT WORKS FOR MORE THAN A YEAR! I've spent 10 years
with VB constantly updating the same code with the "newest" technology.
Funny how when I go back to my VB3 versions, it does the EXACT same thing as
my .NET versions. Weird how 7 years ago at VSLive (or what ever it was
called back then) I was told ActiveX was the "technology of the
future"...ActiveX? whats that? My company of 40,000 is so fed up they are
throwing Microsoft development products out and bringing in IBM...they
actually support their programming languages you know?
Sell you stock is my advise...
 
J

JiangZemin

Hmm, if you have failed to significantly improve your applications since the
days of VB3, its no wonder that your internal clients are so "fed up" with
your IT department.
Somehow I doubt that the problem here is the technology (either MSFT or
IBM).
 
O

Olaf Baeyens

Hmm, if you have failed to significantly improve your applications since
the
days of VB3, its no wonder that your internal clients are so "fed up" with
your IT department.
Somehow I doubt that the problem here is the technology (either MSFT or
IBM).
I have the impression that this guy likes the old days of programming where
everything was simple and better.
But in those days, hackers were rare, virusses and worms were rare, security
breaches were rare. We live in a different world now, where security is top
priority, and the .NET way is a big step forward because every .NET program
has security standard implemented. Unlike the conventional programming.

But I am wondering how he would solve the problem that everything is perfect
instead of complaining. What are his solutions to these problems? And why is
he jumping to ASP.NET if ASP was better?

My experience is that if you start to use newer technology and it fails and
crashes and slows down en any other complaints then it is 99% of the time
the reason that you try to use it the old way and violate every modern
design philosophy of that language.
My biggest guess is that he tries to do it the ASP way and not the ASP.NET
way in C#.

Let go that ASP way of thinking, and start thinking like a pure ASP.NET and
many problems you face now will be gone.
I admit that the step between conventional way of programming (ASP, PHP)
towards the ASP.NET way is very huge but I believe that it is worth it to
create even more secure programs.

One thing that makes me a little sad in his comments is the fact that the
..NET framework should only contain the components that HE needs. He doesn't
realize that other people might need different components. Ofcourse that
means a bigger online help file and I have to admit that even a cat would
not find its young in that help file.
 
G

Guest

Our company built a web site for the US Navy using ASP. This web site is
extremely important for squadrons to order the aircraft components to save
the lives of pilots. Without these components, planes don't fly and soldiers
die.

Our ASP web site consisted of 2200 pages after it was partially complete.
We have 4 programmers to maintain these pages. We were looking forward to
being able to convert the site to .net in order so as to reduce the number of
pages and to expedite page processing. However after the deployment of
several new ASP.Net modules we have found the following issues.

Limited server resources are being utilized so heavily that at times it will
take 20 minutes or more to load a simple listing 15 data points.

The some programmers are relying on the highly toted garbage collector to
clean up their database objects instead of disposing of them explicitly
thereby creating large numbers of database connections that use up the
resources of the database server.

The literature on deployment extolled the virtues of the "xcopy" means of
deployment yet none of the objects want to work when deployed in this fashion
requiring extensive amount of troubleshooting on the production machines and
as well as time spent creating deployment packages.

Strange behavior quirks occur in the IDE that are different from machine to
machine and even project to project. This means that a lot of expensive
programming time is being spent learning about and dealing with these quirks.

Example. VS creates the inital page of a Web project to be webForm1,
obviously an unsatisfactory name for a web page. However, when the rename
function is used to rename the file, it does not rename the public Class on
the page behind the file. When this is noted, and handled, the inherits
statement in the aspx file still needs to be changed. Our programmers have
taken to deleting the initial webform and adding a new one with the name we
choose from scratch.

Another example, IIS prefers the initial file of a Web app to be named
"default". However VS will not allow the class of the code behind file to
have the name "default" so it renames it "_default". This is fine for the
first project created like this. But then when I opened a second project and
did the same thing, upon running an error reports that it could not load
type "projectname._default". After changing the name of the class to
something innocuous like "zeus", and putting a break point in the page load
event, Visual studio proceeded to show as open SECOND "default.aspx.vb" file
with a Public class named "_default"?!!?

Another example. A control gets dropped on a form. Then it's moved to
examine a new layout. When you try to put it back where it was it won't go.
The only alternative is to delete the control and start all over.

Another example: We wanted to convert one page at a time to use ASP.Net.
However we found that we opened an ASP.Net project in the folder of the page
we wanted to replace, That folder could no longer be seen in interdev. None
of the Design Time Controls that were toted so intensively a few years ago,
could be accessed from the VS.Net project. So there was no way to repair
pages that were breaking. When we asked Microsoft for assistance, we were
informed "We sorry. Visual Interdev is no longer supported. Please update
your applications and try again."

While any new product is going to have a learning curve and quirks, we still
have 2200 pages to maintain and convert. We don't have a enough programmer
resources to spend half each day searching the internet trying to deal with
all of these issues that keep cropping up. VS.Net is not making it easy or
helpful.
 
C

Cor Ligthert

Hi,

I have partially the same idea about a lot what you wrote if it is about
ASPNET.

It is not easy to change things etc etc..
The documentation is very much based on classic ASP etc etc.

However I think that it has more value to discuss it in these newsgroups.

http://forums.microsoft.com/MSDN/default.aspx

Maybe is it already improved and maybe can your input help to make it
better.

Cor
 
P

Patrice

Inline...

--

OldProgrammer said:
Our company built a web site for the US Navy using ASP. This web site is
extremely important for squadrons to order the aircraft components to save
the lives of pilots. Without these components, planes don't fly and soldiers
die.

Our ASP web site consisted of 2200 pages after it was partially complete.
We have 4 programmers to maintain these pages. We were looking forward to
being able to convert the site to .net in order so as to reduce the number of
pages and to expedite page processing. However after the deployment of
several new ASP.Net modules we have found the following issues.

Limited server resources are being utilized so heavily that at times it will
take 20 minutes or more to load a simple listing 15 data points.

Normal behavior ? Really strange IMO or is this such an old server ?
The some programmers are relying on the highly toted garbage collector to
clean up their database objects instead of disposing of them explicitly
thereby creating large numbers of database connections that use up the
resources of the database server.

Solved now that they know that. Lack of training prior to switching to
ASP.NET (IMO it's quite well documented).
The literature on deployment extolled the virtues of the "xcopy" means of
deployment yet none of the objects want to work when deployed in this fashion
requiring extensive amount of troubleshooting on the production machines and
as well as time spent creating deployment packages.

It works fine for us...
Strange behavior quirks occur in the IDE that are different from machine to
machine and even project to project. This means that a lot of expensive
programming time is being spent learning about and dealing with these
quirks.

Never had this one (though we are only 4 here)
Example. VS creates the inital page of a Web project to be webForm1,
obviously an unsatisfactory name for a web page. However, when the rename
function is used to rename the file, it does not rename the public Class on
the page behind the file. When this is noted, and handled, the inherits
statement in the aspx file still needs to be changed. Our programmers have
taken to deleting the initial webform and adding a new one with the name we
choose from scratch.

Renaming manually also works. A bit annoying but that's not the everyday
task...
Another example, IIS prefers the initial file of a Web app to be named
"default". However VS will not allow the class of the code behind file to
have the name "default" so it renames it "_default". This is fine for the
first project created like this. But then when I opened a second project and
did the same thing, upon running an error reports that it could not load
type "projectname._default". After changing the name of the class to
something innocuous like "zeus", and putting a break point in the page load
event, Visual studio proceeded to show as open SECOND "default.aspx.vb" file
with a Public class named "_default"?!!?

I believe we had this one once... Not sure how we get around...
Another example. A control gets dropped on a form. Then it's moved to
examine a new layout. When you try to put it back where it was it won't go.
The only alternative is to delete the control and start all over.

Try to move it in HTML mode (anyway due to HTML you can't always IMO be
rigourous when placing an HTML element, I tend to do fine layout tuning in
HTML view.
Another example: We wanted to convert one page at a time to use ASP.Net.
However we found that we opened an ASP.Net project in the folder of the page
we wanted to replace, That folder could no longer be seen in interdev. None
of the Design Time Controls that were toted so intensively a few years ago,
could be accessed from the VS.Net project. So there was no way to repair
pages that were breaking. When we asked Microsoft for assistance, we were
informed "We sorry. Visual Interdev is no longer supported. Please update
your applications and try again."

We are using VS.NET now for both ASP and ASP.NET applications (or for those
who have a mix of ASP, ASP.NET pages).
While any new product is going to have a learning curve and quirks, we still
have 2200 pages to maintain and convert. We don't have a enough programmer
resources to spend half each day searching the internet trying to deal with
all of these issues that keep cropping up. VS.Net is not making it easy or
helpful.

Try to ask a question at a time to get help on particular subjects if
possible..


Patrice
 
J

John

OldProgrammer said:
Our company built a web site for the US Navy using ASP. This web site is
extremely important for squadrons to order the aircraft components to save
the lives of pilots. Without these components, planes don't fly and
soldiers
die.

Holy crap!!!!

It's a scary thought that lives are dependent on a Classic ASP app!!!
 
G

Guest

I am sure that the families of the 1769 US service men and women that have
died in Iraq and the 500+ that have died in Afghanistan think it is very
funny as well.

I am sure that you could write in 20 minutes an application in compliance
with DoD regulations to replace the existing Web Site which was working
wonderfully until ASP.Net came along. Why don't you write the Dept of the
Navy and bid on the contract for the CAD/PAD VFS website.
 
R

Rob R. Ainscough

Not sure what this is about, guess someone doesn't like classic ASP?? Not
sure what Afghanistan has to do with this. I've got a lot of programming
experience and to be honest I'd rather do any other kind of programming that
is NOT web based.

But whether the language is ASP, VB.NET with ASP.NET, HTML, XHTML,
JavaScript, VBScript, etc. etc. etc. -- the fundamental problems of
developing in this nightmare of an environment are:

1. Stateless
2. Security
3. Rendering pages

Those issues have not changed, we just have different tools with same set of
issues as the old tools. Change is needed, what that change will be I'm not
sure, but the current status of web development is ultimately doomed unless
we realize those changes soon.

My personal opinion and what can be achieved to some success today is rely
on .NET framework on client PCs -- since .NET framework is currently
available across platforms it might be a much better faster and more rebust
solution. Use basic HTML to retain the pretty graphics and basic linking,
but the links such for example "Manage Your Account" should just download
small footprint .NET apps that execute immediately on the client side
(outside of the browser). This will elminate stateless, and page rendering
and IF implemented correctly can be much more secure.

Rob.
 
W

W.G. Ryan MVP

What did I miss here? Obvsiously this took a serious turn somewhere but if
I can possibly be of any assistance, please let me know and I'll do what I
can
 
G

Guest

The basic thrust was that we have a 2200 page ASP web site in production that
is responsible for the delivery of vital aircraft parts to active duty US
Navy aircraft so that they may continue to fly and provide close air support
to our troops in Iraq and Afghanistan. This site needs to be updated to the
latest technology but VS.net kept placing obstacles in the way with its
inconsistent behavior. so of these kids seem to think it was funny that
peoples lives are dependent upon the proper operation of an application.
Re inconsistent behavior, The other day I was using a class level variable
to preserve state between post-backs as advertised and advocated by Microsoft
only to be informed that the latest information on the subject was advising
against the use of these constructs as they did not perform as advertised. I
was able to confirm this through experimentation and had to rely on an old
ASP trick of storing the variable in an hidden text box. This is not the
kind of product I have come to expect from Microsoft. I have been repeatedly
disappointed while using this environment. I think you must add to your list
ease of use. Unless a product can be consistently developed easily and
quickly, there is going to be increasing amount of hesitation in updating
the massive older applications to use the new technologies. I am sure
everyone remembers the big Y2K fiasco.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top