ASP.NET annoyances:
1. Have to compile the project.
Many people regard this as one of the strengths of dot-net. I guess that I'm
kinda gunshy about compiled web apps, (and compiled business applications in
general) because when I took my current position, I was handed many compiled
applications to support. I did not receive any source code. It was apparently
lost, after the author left the company. I was basically helpless to fix bugs,
and helpless to even answer simple questions about the application. I had to
rely on network traces to even figure out what database it was working with.
Over time I've been required to re-write all of those applications, because
of issues that would have been easy to fix.
Ultimately, it's an issue of source code management. My company didn't do
this very well. We're better now, but it still isn't handled consistently.
Without proper source code management, compilation is a liability.
Less importantly, it's an extra step required in the publishing process.
2. Web Site (HTML) Management -- the original purpose of the web script.
If I have an HTML page, I can use Server Side Includes (SSI) and Cascading
Style Sheets (CSS) to apply a server-wide look and feel to a page. Here's an
example of a web page that makes use of this:
<HTML>
< HEAD>
<TITLE> Sample Page </TITLE>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/includes/web.css">
< /HEAD>
< BODY>
< !--#include virtual="/includes/header.html"-->
Hello World.
< !--#include virtual="/includes/footer.html"-->
< /BODY>
< /HTML> |
With classic ASP, I can put dynamic controls in the header and footer (i.e.
breadcrumbs, global navigation, date last modified, statistics about the page,
etc.), with a little slight-of-hand. I can have 100,000 content pages in a
complex heirarchy of 30,000 folders that won't need to be touched in any way,
shape, or form to make minor look & feel modifications and even complete
site overhauls. ASP.NET doesn't really address this type of problem at all.
With ASP.NET, every piece of content has to be part of an application in order
to receive the benefits of ASP.NET dynamic controls. You have to register and
call libraries for headers, footers, and dynamic elements. You basically buy
into a lot of complexity by moving to dot-net.
3. Excessive Objects
This is one of my major gripes against SDKs, APIs, and Frameworks in general.
There is too much "stuff" in there that I don't need. When you look
at a typical database/workflow system, there are probably 100 or fewer objects
that you really need. Let me catalog them for you:
Important Object Types:
a. String object
b. Integer object
c. Number object (float)
d. Date/Time Object
e. Array Object (preferably an ArrayList!)
f. Request object
i. String array of CGI/ISAPI Variables
ii. String array of Form variables
iii. String array of QueryString variables
g. Response object
i. HTTP variables (response codes, HTTP headers)
ii. Methods to write output
h. Database object
i. Recordset object
j. File System object
k. Folder Object
l. File Object
m. Socket object
Really nice Additional Object Types:
n. SMTP Delivery Object
o. POP3 Retrieval Object (and/or IMAP)
p. HTTP Retrieval Object
q. Ping/TraceRt Object
r. FTP Object
s. NNTP Object
t. gif/jpg/bitmap object(s?)
Well... we're at 20. If I've oversimplified things a bit, you could double
it and call it 40. I've pretty much exhausting every need I've ever had. Now...
don't get me wrong. I like making my own objects and data structures -- it
simplifies things quite a bit. I wouldn't mind if Microsoft put a couple hundred
classes in dot-net to meet the typical user's needs. I just think 30,000 objects
with 180,000 properties and methods is ridiculous.
4. Illogical Object Hierarchies with strange relationships and Enigmatic Abstractions
Damn. I don't even know where to start on this one. I don't have these object
heirarchies memorized, yet (or probably ever), but Dot-Net is a mess.
5. Partially Complete
One of the neat things about dot-net is that it's very easy to do some things
that take a lot of effort with traditional tools. As an example, Dot-Net includes
a lot of data validation routines written in javascript. So, if I want a user
to enter a date in a certain form control, I can very easily put a data validation
constraint on that field. Here's the problem: If I want to force the user to
put a date, dot-net is cool. If I want to force the user to put a date/time,
I'm screwed. If I want the user to enter a date OR LEAVE IT BLANK, I'm screwed.
By screwed, I mean that I can't even manually write the javascript to do this,
because dot-net exercises a lot of control over client-scripting events.
(actually, if anyone is trying to use this list for any professional purpose,
consider this: It appears that there are ways of dealing with this... I'm still
a neophyte on some topics. This is something that annoys me and pisses me off,
but it's not high on my list of things to understand. I can do data validation
on the server-side, which is what I rely on right now. I will eventually understand
this better)
6. Strongly Typed Data, and Excessive Data Types
So... I have a String variable, and I want to read in a String from my database
recordset. The database has a NULL in that field. Crash. So... every single
person who writes dot-net code and speaks to a database (i.e. every single
person who writes dot-net code) has to write some kind of handler routine for
that. Probably to put an empty string into your string variable. Gee, thanks
Microsoft. This is, naturally, much nastier with a variable of type Date, where
there is no reasonable interpretation of a NULL.
7. "Application Settings"
Each ASP.NET application must be defined as an application in IIS in order
to function. You need to have a web administrator physically configure a folder
on your webserver for each application that you write. WTF?
8. Organization & Folders
There are no folders or organization within an ASP.NET project. Every single
file related to a project sits in the same folder. Do you like to segregate
your images, web pages, CSS, Javascript, objects, and includes? Forget about
it. Not in dot-net. Also, there are ASPX, XML, and and code-behind files for
every page. A very simple project (i.e. 10 pages or so) can easily be 100 files
in a single folder. While this isn't a major impediment in development, I think
it's sloppy and unprofessional.
9. General Technical Glitches
I have an ASP.NET application in a folder. The folder, in IIS, is configured
to require integrated windows authentication, and the folder in the file system
is restricted to certain users. For some reason, this fails -- periodically
-- on every Windows 2003/ IIS 6 server I run it on, even though I don't deal
with authentication beyond the two points listed above. I've had the "Microsoft
ASP.NET Team" from premiere support looking at it for the last two weeks.
It's a measly couple hundred lines of code.
|