ASP.NET sucks
I recently bought a book about ASP.NET: Pro ASP.NET in C# by Apress, mainly because when I was looking for jobs there were lots of ASP.NET jobs advertised. And I have to say I have no idea why. Part of the problem may be that is book isn’t very good (there are bits of vague contradictions and a general obsessive (and inaccurate) preachiness about it) but I think there are major limitations to ASP.NET.
Firstly the inability to post to a different page. Who the hell decided that was good idea? I know it can be faked but that’s just silly. And you can only really have one form on a page. Well you can only have one “rich” form that ASP.NET can access in a clever and high level way.
I’m assuming people will disagree with me (if not, why is it so popular). If you do, please explain why ASP.NET is supposed to be so amazing because I don’t see it…
Updated - Clarifying my position on ASP.net
Comments
No Comments on ASP.NET sucks
-
RyanC on
Thu, 27th Apr 2006 7:09 pm
-
dunc85 on
Sat, 29th Apr 2006 11:32 pm
-
Oliver on
Sun, 30th Apr 2006 1:23 pm
-
sbo on
Sun, 30th Apr 2006 6:49 pm
-
Oliver on
Sun, 30th Apr 2006 10:17 pm
-
sbo on
Mon, 1st May 2006 4:31 pm
-
Oliver on
Tue, 2nd May 2006 8:45 am
-
BackBase really pushing AJAX - Oliver Brown on
Fri, 5th May 2006 12:00 pm
-
Vincent on
Mon, 8th May 2006 6:07 pm
-
Greg Graham on
Thu, 11th May 2006 4:24 am
-
Graham on
Thu, 1st Jun 2006 7:07 pm
-
BackBase really pushing AJAX - Oliver Brown on
Thu, 22nd Jun 2006 10:25 am
-
ASP.NET Atlas really is like Backbase - Oliver Brown on
Thu, 22nd Jun 2006 11:45 am
-
John on
Mon, 2nd Oct 2006 1:37 pm
-
Andrew Connolly on
Sun, 29th Oct 2006 5:36 am
-
Larry on
Wed, 15th Nov 2006 3:58 pm
-
Bill on
Fri, 24th Nov 2006 3:11 am
-
Amel Music on
Fri, 24th Nov 2006 11:31 pm
-
Paul Yearron on
Thu, 30th Nov 2006 10:32 am
-
U suck on
Thu, 30th Nov 2006 6:11 pm
-
Gabin on
Fri, 1st Dec 2006 11:19 am
-
Greg Graham on
Fri, 1st Dec 2006 8:02 pm
-
Greg Graham on
Fri, 1st Dec 2006 10:39 pm
-
C#, ASP.NET Developer on
Sat, 3rd Feb 2007 10:31 am
-
Ian, C# Asp.net developer, asp developer on
Sun, 18th Feb 2007 9:34 pm
-
Ian, C# Asp.net developer, asp developer on
Sun, 18th Feb 2007 9:38 pm
-
george on
Fri, 23rd Feb 2007 10:22 pm
-
Mark on
Mon, 5th Mar 2007 6:22 am
-
meloncolie on
Fri, 23rd Mar 2007 7:13 am
-
God on
Sat, 24th Mar 2007 6:46 pm
-
Bill on
Tue, 3rd Apr 2007 4:39 am
-
BozoTheClown on
Tue, 10th Apr 2007 7:37 am
-
Andrew on
Tue, 10th Apr 2007 9:10 pm
-
Andyf on
Wed, 18th Apr 2007 2:20 pm
-
Language learning app is back on - Oliver Brown on
Thu, 19th Apr 2007 1:17 pm
-
To Dot NET OR Not Net? on
Sat, 21st Apr 2007 4:29 am
-
Dan on
Mon, 7th May 2007 3:11 pm
-
Asp.Net Dev on
Tue, 15th May 2007 8:09 am
-
so_pod_I_cant_use_my_normal_handle on
Wed, 16th May 2007 3:41 pm
-
Lubos on
Thu, 17th May 2007 10:59 pm
-
DaveC on
Fri, 25th May 2007 10:16 pm
-
NaxShou on
Tue, 29th May 2007 8:31 am
-
Kris on
Mon, 4th Jun 2007 8:45 pm
-
Protos on
Sun, 17th Jun 2007 2:36 pm
-
Mr. J on
Wed, 18th Jul 2007 6:46 pm
-
Fred on
Tue, 31st Jul 2007 5:46 pm
-
Mickiesoft on
Tue, 14th Aug 2007 3:09 pm
-
Sid on
Fri, 17th Aug 2007 12:45 pm
-
JP on
Thu, 23rd Aug 2007 5:59 am
-
mr dev on
Thu, 20th Sep 2007 10:31 pm
-
Aaron on
Sun, 23rd Sep 2007 5:10 am
-
JS on
Mon, 8th Oct 2007 1:20 pm
-
Sean on
Thu, 25th Oct 2007 5:49 pm
-
Bill on
Fri, 26th Oct 2007 5:54 am
-
Desperado on
Fri, 2nd Nov 2007 1:15 pm
-
Juan Carlos Aviles on
Tue, 13th Nov 2007 12:41 am
-
Mark on
Tue, 27th Nov 2007 4:37 am
-
Mark on
Tue, 27th Nov 2007 4:46 am
-
Alice on
Tue, 4th Dec 2007 11:52 am
-
ASPrine .NET on
Tue, 4th Dec 2007 5:56 pm
-
JP on
Thu, 13th Dec 2007 6:10 pm
-
AndrewL on
Mon, 31st Dec 2007 10:56 am
-
Mike on
Fri, 4th Jan 2008 1:36 pm
-
publius on
Thu, 31st Jan 2008 10:21 pm
-
Robert on
Tue, 5th Feb 2008 8:39 pm
-
Pxtl on
Wed, 6th Feb 2008 9:54 pm
-
Aaron Clausen on
Thu, 7th Feb 2008 3:47 am
-
Jeff on
Sat, 16th Feb 2008 5:54 pm
-
Kieran Iles on
Thu, 21st Feb 2008 10:20 am
-
John Plain on
Mon, 25th Feb 2008 10:50 pm
-
RE: Robert Says: on
Thu, 28th Feb 2008 1:38 am
-
Joshua Reed on
Wed, 5th Mar 2008 8:58 pm
-
Forest Marie on
Wed, 9th Apr 2008 3:59 pm
-
Storm14K on
Thu, 10th Apr 2008 4:37 am
-
Mark on
Wed, 23rd Apr 2008 4:02 am
-
Vinson on
Mon, 28th Apr 2008 6:52 pm
-
David on
Tue, 6th May 2008 4:34 am
-
dave on
Sun, 11th May 2008 3:27 am
-
Will Peavy on
Tue, 1st Jul 2008 3:45 am
-
Hunzonian on
Tue, 8th Jul 2008 1:02 am
-
Zijin on
Sat, 26th Jul 2008 6:41 pm
-
Douce Bag on
Sat, 2nd Aug 2008 9:40 pm
-
AreYouKidding? on
Thu, 28th Aug 2008 4:55 am
-
Alex on
Thu, 28th Aug 2008 9:39 am
-
Ryan Anderson on
Wed, 17th Sep 2008 4:50 pm
-
Edward Boot on
Thu, 16th Oct 2008 6:21 pm
-
Erwin on
Tue, 28th Oct 2008 12:38 pm
-
Justin on
Tue, 4th Nov 2008 10:45 am
-
Chris O on
Thu, 11th Dec 2008 6:02 pm
-
alexei on
Sat, 10th Jan 2009 1:42 pm
-
Ryan Zec on
Fri, 23rd Jan 2009 8:51 pm
-
shripaldalal on
Sat, 14th Feb 2009 4:48 pm
-
JS on
Tue, 17th Feb 2009 1:31 pm
-
Lysender on
Tue, 31st Mar 2009 3:52 am
-
awake on
Tue, 21st Apr 2009 4:01 am
-
Saloninus on
Wed, 29th Apr 2009 4:42 am
-
Jeffrey on
Thu, 7th May 2009 7:27 am
-
Paul on
Fri, 8th May 2009 9:53 pm
-
George on
Tue, 26th May 2009 6:06 am
-
dave on
Wed, 10th Jun 2009 10:44 am
-
dave on
Wed, 24th Jun 2009 10:59 am
-
fuckasp.net on
Thu, 2nd Jul 2009 10:27 am
-
Paul on
Thu, 2nd Jul 2009 8:14 pm
Sounds crap to me – basic stuff that you will need for web development is just plain missing…
You can post to another page, just google asp.net cross page posting, it’s all there for you to see.
< ![CDATA[http://msdn2.microsoft.com/en-us/library/ms178139
"certain controls"?
It sounds like for complete freedom in where you post you lose all the advantages of using ASP.NET (i.e. you're left reading the form values manually).]]>
< ![CDATA[you really cant lose with asp.net
if you are interested in developing big time websites that serve thousands of users,
(for examples refer to http://www.asp.net/default.aspx?tabindex=6&tabid=43) then asp.net really is great,
however if you just want to play around and diss anything microsoft makes then asp.net is also great, what an achievement……..:)]]>
< ![CDATA[I don't diss everything Microsoft makes :P
I think .NET in general is the way forward for applications that don't require bleeding edge performance (i.e. everything except top-spec games), I just don't think their web development model (i.e. ASP.NET) delivers.
I read about ASP.NET and don't immediately think "oh my good this makes things easier" (like I did with Ruby on Rails) but find things that aren't obvious (if possible) to implement.
For example, implementing pretty URLs...]]>
like all platforms asp.net has some nice features and some difficult to use ones, pretty urls are not a problem however thanks to url mapping feature for example….in web.config
< ![CDATA[Actually URL mapping isn't the solution, which incidentally is what my last comment was based on.
http://www.asp.net/QuickStart/aspnet/doc/navigation/urlmapping.aspx
“Note that the feature does not support more advanced rules such as wildcard or regular expression based matches.”
I did find an implementation more similar to Apache’s mode_rewrite in power (including support for regular expressions):
[...] with ASP content could have the ultimate cleanness about it (syntax isn’t one of my complaints about ASP.NET). It should be noted that Microsoft are working on Atlas which cou [...]
< ![CDATA[My primary gripes with ASP.NET are with the IDE and the fact that it makes simple things (like a postback dropdown in a datagrid) seem so difficult. You have to deal with a scheme where everything interactive is a object that must be linked to an event; where in RoR you deal with commands to a controller. Makes things so much easyer to deal with.
It seems that so much of ASP is not neccessary and backward. MS goes 90% of the way on the controls, forces the developers (us) to make the rest of the code for them. Try making dynamic pretty urls with ASP. i just game up and used ISAPI_rewrite (idea for this came from a apache plugin btw).
I would so prefer a LAMP server to host sites on.]]>
< ![CDATA[Just spent the whole day implementing a GridView control on top of an ObjectDataSource with existing business objects. Early on, it worked great, got paging of results, figured out how to put my own quicksort in for the columns.
The problem is that if you want to pass parameters into the underlying query, you can't do it unless you bypass the business object layer and use SQL directly in the web page. On the other hand, I can do the query myself through the business object layer and have an array of results, but then I can't get the array results into an ObjectDataSource. It seems like I should be able to, unless I'm missing something.]]>
< ![CDATA[I use asp.net...but not very conventionally. I prefer to cache my (heaven-forbid) html content and write it out using the response buffer.
I hate all the (mostly junior) developers at my work that are obsessed with web controls. They take many times longer to develop their applications which have bleak performance on top of that.
I love win32 api and think c# is okay...but microsoft's attempt at re-inventing web development is pathetic. All companies and developers that are wasting time and resources on this crap is in for a nasty surprise when they throw it on the same scrap heap as vb6, active x controls, mfc, com+, etc. etc. etc. etc.]]>
[...] with ASP content could have the ultimate cleanness about it (syntax isn’t one of my complaints about ASP.NET). It should be noted that Microsoft are working on Atlas which cou [...]
< ![CDATA[[...] ET Atlas really is like Backbase
June 22nd, 2006 by Oliver
It turns out that ASP.NET might not suck after all. Atlas for ASP.NET is an toolkit for doing AJAXy stuff. W [...] ]]>
< ![CDATA[I am a computer engineer working from home as a freelance web application developer. I have about 15 clients. I build custom ecommerce apps; I've built my own full featured CMS that I'm bundling into a web subscribed package; I've developed an online hotel bookings app; ... and lots more in betweeen. Let me tell you all that if you want to work from home and be a freelance web developer, ASP.NET will stress your life out and you will die young. About a year ago, I decided I was going to "take it up a level" and work with ASP.NET and C#. I figured this would put me on equal footing with "real professional programmers". I developed a complex customer manager system in C# that allowed salespeople in a company to create custom email templates for mass mail outs to specific lists of customers. It was a large project that took me about 3 weeks. Working in C# and ASP.NET was extremely frustrating, and I will never do it again. Here's why:
- The learning curve is outrageous
- There are so many classes, and so many permutations on how these classes interract, and so many odd behaviours. Debugging seemingly simple problems can take hours.
- Doing anything even slightly creative with forms is highly problematic.
- Because there are so many thousands of programming issues to keep in mind when programming .NET, and because there are always new features coming down the pipe, the online communities and forums can't keep up.
- Here's the real clincher: The customer manager I built in ASP.NET: every once in a while the "ASP.NET Worker Process" on IIS 6 hangs and my server essentially freezes up. There are no loops on my .aspx page. There is nothing strange. Sometimes the Worker Process can fix itself after a few minutes... sometimes I have to terminate the process manually. I can find no mention of any similar problem on the web.
The only reason most people decide to program in .NET is because Microsoft has a multibillion dollar sales and marketing budget. I was a Microsoft fan, and I was sucked right in. However, the reality of running my own business using .NET has lead me to understand with great clarity that Microsoft as a business is essentially a first rate sales company, and a second rate technology company.
By the way, since my experiment with .NET, I now use PHP and MySQL exclusively. What a difference! I really believe that PHP and MySQL are first rate technologies. They are very robust, allow all sorts of flexibility, you can produce lots of working code quickly, and there's tonnes of online support. I decided on the switch after I found a Powerpoint presentation from Yahoo's technical director on why Yahoo switched to PHP: Real Facts vs. Microsoft Sales Talk.]]>
< ![CDATA[Bottom line: ASP.net (developed with code behind, web classes in C#) develops slowly compared with languages such as ASP (no I don't hate Microsoft) & PHP.
Sure, it keeps people like me employed but this is a backward step for 99% of small business out there who would like to be able to maintain their own sites.]]>
< ![CDATA[OMG! I'm sorry but I gotta hit and hit hard. ASP.net is the biggest piece of crap. I have worked on PHP, and ASP and I've currently worked on ASP.net for about 3 years now (against my will).
Most programmers don't know/don't care but the code does not spit out semantic markup and you have very limited code control. Yeah, that's just what I want; someone else to tell me how the content is laid out. Oh and I just love always hearing the misconception that ASP/ASP.net along with is the way to go for large sites. When are people going to learn that this is not true?
In case you haven't noticed: PHP 5 is out. It's a full blown, mature PL and arguably the 400 pound gorilla of SSI solutions with a long history. MySQL 5 is out aswell. It's a full blown DB and comes with tons of free x-platform admin and design tools that make building the outline of a large webapp a walk in the park and thus scares the living daylights out of Oracle and IBM. You may have noticed IBM virtually giving their DB2 away for free (beer) since just a few months ago. Guess how that happend.
Please do your homework!]]>
< ![CDATA[I started programming in early 80's with Assembler and Fortran and later with VB. I've been developing web sites using ASP since mid 90s. I've never used PHP so I have no idea on that. I find ASP intuitive and easy to use. Recently, I decided to try ASP.NET (with Visual Studio 2005). I have to say that I've never seen so much crap so convoluted in one place. So many unnecessary layers on layers, you have no idea what's going on behind the scenes and you have no control over it. They say, "..you can still use ASP if you wish..ASP.NET is for professionals, ASP is for kiddies..ASP.NET is for big sites..." Ehm.. Up until yesterday the whole MS site was in ASP (most of it still is). Was the MS site a small site then?
All we need is easy access to a database using sql, file uploads/downloads, HTML, XMLHTTP, css, scripts and server side programs. That's all. ASP already provides all of that. There is nothing you cannot do in ASP that you can in ASP.NET.
I am yet to hear a valid argument to justify the existence of ASP.NET. They say "..the code is compiled so it's faster..." Maybe, but ASP was /is fast enough. I've never heard people complaining about the performance of ASP. The problem has always been the bandwidh. Compiling a web site after making a simple change!! Give me a break.
"..ASP.NET code is much more maintainable.." Famous last words.. You can write crap in any language/environment. I've seen many easy to maintain ASP programs written by others.
Here are a few ASP.NET things that I must also mention.
* Why do we need a web site cofiguration file outside IIS?
* If an ASP.NET control doesn't do what you want then you're stuck.
* Adding client site JavaScript to an ASP.NET page is harder then enriching uranium (compared to ASP). I won't even comment on XMLHTTP (don't use the word AJAX - it's crap too in ASP.NET).
There is a lot more about ASP.NET's suckiness but I'll stop here.
I'd abondon ASP.NET without hesitation but there are a couple of major problems:
(1) Ignorant clients who insist on having their web istes in ASP.NET without knowing how costly / disastrous it can be.
(2) MS's hidden threat that ASP may not be supported in the future.
Where does this leave us?
Say NO to ASP.NET.
Regards,
Bill]]>
< ![CDATA[@John, that is what happens when you are just like a hobbist in programming.
See for your self why PHP sux http://www.bitstorm.org/edwin/en/php/
You will find a lot of other links pointing weakness of PHP.
I agree, you can use PHP for small business sites but ASP.NET is made for enterprise and midrange. It’s really easy to learn .NET.]]>
Hi, I have just made a website using Visual Web Developer express and the whole thing works well on my PC. It is not that complicated just a few pages with links etc. However when I upload it onto my TalkTalk web space all I see is the directory listing and not the pages. When I click on default.aspx all I get is the text script and not the page itself. If I have a default.htm page that works ok but not the aspx. Any help would be appreciated. Cheers Paul.
that’s why blog sucks, people write shit about things they don’t even know well
designing an ASP application is not much of a proble getting the application to run on its own in the iis is a hustle conveting the aspx files to htm it works. this is really frustrasting, i i really need help with this
< ![CDATA[Ha! I gave up trying to use the GridView control shortly after my last post on this thred in May. Since then, I've developed a large layered web application in ASP.Net with a data access layer, business layer, and presentation/UI layer. For displaying tabular information, I developed my own control that does not suffer from the limitations I found in GridView last May, but it obviously doesn't have all of the features.
About 3 months ago, we hired a young programmer to help finish coding this large application. We've successfully rolled out phase I and we're poised to roll out phase II in a couple of weeks, and she comes to me and says that we should use GridView for this or that, and that she knows how to wire it up to our Business layer. So I said, OK let's try it for a couple of days. Guess what? It leads to more cycles of "It doesn't quite work. Let's tweak it. Repeat." We eventually ended up with something that can be fed from a business object, but it required the setting of a lot of variables in Session state and lots of adaptors.
The moral of the story? Don't attempt to use Grid View in a large layered application unless you (a) care nothing about encapsulation of data in your application and/or (b) have an large amount of time to tweak it.
The other moral is that ASP.Net is just fine for large enterprise applications. The servers will need special care and feeding, but support people who work in Microsoft shops are used to that. But a lot of the hoohah surrounding "proper Microsoft development techniques" and the glory controls like DataGrid or GridView is often targeted to specific purposes. For example, GridView is an excellent choice for simple webapps that want to spray data directly from their databases onto a web form with little business logic. Trying to make it work in a larger, more traditional layered approach is like trying to fit a square peg into a round hole: eventually you get it but only with lots of effort and some architectural comprimises. I find Visual Studio to be similar: it is excellent at getting novices off the ground and able to create really useful apps on a small scale really quickly, but it adds no more value than, say, SharpDevelop or Eclipse to a more experienced developer. But then Microsoft in general is like that, it adds value by getting people off the ground quickly and getting them more productive quickly by sacrificing a little (sometimes a lot) on their long term productivity.
I sympathize with Bill above though. I was a Java programmer until I got hired by a Microsoft shop late last year. The hardest thing about learning ASP.Net was learning how to sift through all of the hype. Never don't abandon good programming practice and design patterns in the face of a new wizbang control that displays your data and butters your toast too. If you're a seasoned ASP programmer, stick to that mostly, watch and wait, and pick up only the ASP.Net tools and widgets that actually save you time and effort. You'll get 90% of what you need in a few weeks, ignore the rest.]]>
< ![CDATA[I take it partly back. We were NOT successful in using the Grid View AT ALL. It turns out that whatever parameters passed to the data source to drive the GridView must be serializable, including references to the business layer. After carefully setting the business layer references in Session state, binding the GridView control, and removing the parameters from session state, the application still crashes with serialization errors EVEN WHEN the business data is empty. So it must be trying to serialize the business layer via the designation of the reference in the session parameter.
Why would it do this after the control has been bound? Is it trying to send my whole business layer serialized to the web client? Square peg, round hole, enough is enough.]]>
< ![CDATA[How could you judje ASP.NET by book?
Isn't it a bit stupid?
< ![CDATA[I think I'm agreeing with the majority here when I say that asp.net is crap. At first glance, it seems really awesome because it does so much for you. However, after using it for over a year now I realize that that's not a good thing. The form designer creates the ugliest, poorly formatted, crap code that I've ever seen. Why does everying thing need a z-index to the 20th significant digit?!!
Besides that, sometimes the simplest things turn out to be a real pain in the butt, like cross page posting as mentioned by the writer of this blog. Most of the solutions on the net suck for implementing this, and the only way that I could find to do it (my own way) feels cheezy. Seriously how could MS not think that anyone would want to cross page post.
Then I have all these crappy newbie developers at my work that want to make everything a web control. Why does every button need to cause a server postback? Why do I want to validate form input on the server side instead of on the client side with javascript? Why does MS want to eliminate all client side code from my pages by replacing it with stupid and slow server side code? Asp.net breeds lazy programmers who write slow, ugly code (or have slow, ugly code written for them).
The other thing about asp.net is as soon as you want to do something outside of the realm of what MS envisioned it becomes a nightmare. Try doing stuff like adding a client side checkbox to an asp.net datagrid, that executes a client side function.
I hate it. I'm gonna go back to classic asp when I can.]]>
By the way, I agree wholeheartedly with Bill. I didn’t read his post before I posted, but I second everything he said, especially the part about say NO TO ASP.NET
< ![CDATA[I've been programming for over 20 years. I've done ASP and ASP.Net and what I hated the most about ASP was all the html mixed with code. What a mess! Along comes codebehind and what a difference! I can actually look at something and it's clean. Coming from a Visual development background, it was also nice to have things work on an event level. The gridview automated paging and sorting is great. There is no reason we should ever have to write code for such rudimentary functions.
That said, I do agree with the limitations that you have regarding going outside the box, especially in adding JavaScript to the page. What I really hate is the "improvement" in ADO to ADO.NET. It seems that it was much easier to read and write data. You're looking at 7 lines of code just to read a record through a data reader. Give me a break - who thought of this one! And the datasets really become a performance issue when there is large data. It was all very much easier using an ADODB.Recordset.
So in the end you have the good with the bad. I think it's a step in the right direction, but I do wish it was quicker than the old ASP way, however, the code behind model really makes things nicer to look at months after it's been written.
Good riddance to script mixed in with HTML.]]>
Have to agree partially… I really like using VB.net code for the backend and middle tier. I find the development in Visual Studio for this purpose realy efficient. However the “user-control” and “postback” model is crap. Could anything be any more convoluted than a datagrid? What a piece. I just don’t have time to learn a new language right now. Fortunately I am very good with Javascript/DHTML so I am just not using that crap and leveraging alot of Ajax (Prototype.js) and just good old html form and url variables to accomplish things. I do used code behind pages too and avoid alot of inline asp tags. Unfortunately looks like the whole post back and user controls are here to stay.
< ![CDATA[I program in PHP and Ruby in Rails so simple to use and fast this asp .net is crap.... GUI intertace yeah attractive... but fuck it some errors are unknown which is easy to be fixed by PHP or RubyOnRails... I wont Support Expression either....
Keep it Simple Stupid]]>
Please guys, LEARN about a language before diving into it. 95% of you guys haven’t got a clue what you are talking about. If you are comparing ASP.NET to PHP, you shouldn’t be using it.
< ![CDATA[Dear God,
We are not comparing PHP to ASP.NET.
I don't know PHP.
I've been learning ASP.NET in the last 6 months. What I state here is based on my personal experience with ASP.NET;
* Difficult to learn.
* Everything I touched had a MS bug in it. Sometimes I spent days to finally realise that it's a bug in ASP.NET.
Having said that, my comments are not directed to .NET, I am happy with the low level .NET environment.]]>
< ![CDATA[Dear God,
"If you are comparing ASP.NET to PHP, you shouldn't be using it." I agree completely, please tell my boss I'm not worthy of ASP.NET and should use PHP for all my work assignments. In particular GridView sucks!]]>
< ![CDATA[I have the exact opposite opinion of most of the people here. When I moved from classic ASP to ASP.NET I felt an immediate freedom. No more response.write, no more request.form just to get the value out of a textbox. No more looping through a recordset writing out tags just to show a tabular data, ugh. Now I design the page in one place, and add logic to it in another.
Design-time compile error detection is awesome too. Change a class function's return type and know right away every place in your entire solution (which might be multiple projects) that will need to be changed because the return type is now different. I'd much rather know when I hit enter on the keyboard than during QA..."Oh yeah, I forgot that that page used that, wups.". This also makes refactoring much easier.
I have a feeling that most of the people that seem to be having so much trouble with the applications they write in .NET are doing something very out of the ordinary (or are secretly PHP developers, lol). I've certainly never had any stability issues (nor any of the other developers where I work) except when it was a problem in my code. Our servers are 2003 and are rarely rebooted. If they are it's usually planned maintenance (i.e. hardware, moving in the rack).
I've had a smiliar feeling about moving from 1.1 to 2.0, although the differences are much smaller than from classic to 1.1. One particularly useful addition is partial classes, and the much better HTML formatting within Visual Studio 2005 (that was horrible in 2003).
All that said, I do agree with what seems to be a couple major points of contention:
1 - Friendly urls are hard to get going. But unless you're building a CMS or blog are there many other places you need to have this? I've only ever had to do it once (CMS).
2 - The datagrid/gridview hookup to a custom business object can be tedious. The answer here is don't do it, it's not mandatory.]]>
< ![CDATA[With something a large and very different to existing platforms as ASP.NET it's easy to pick a few holes, but once the learning curve is passed you really appreciate the enormous power you can bring to bear on a project. Here are a few things that really show ASP.Net as the way forward. Go down the list and compare to PHP, Perl or whatever, and tick off which ones they do:
1) It's compiled, not interpreted at run time. That means fast with small foortprint and high concurrency
2) Unicode support - An absolute must for multi-lingual, multi-national development
3) Viewstate mechanism - Multistep wizard type forms without any coding are a breeze.
4) Adaptive rendering - largely eliminates coding per browser. Delivers wokable code according to the target browser, without having to code.
5) Script Injection protection - Inputs are checked without writing code
6) Regular Expression validators/ required field validators run on clients without coding them
7) Various authentication models with trivial coding models
8) Run time debugging and code step through
....the list goes on. Plus Web Devleoper Express and SQL 2005 Server Express are FREE.
To balance, it's not all perfect. It IS hard to learn, and bewildering at first, but once you get it, it's a joy to code in.
Others have commented that ADO.NET is much harder/more code than ADO 2.x
This is true, but it is primarily because you are dealing with disconnected data rather than a classic recordset. If you don't know the difference, or don't understand why this is a "good thing", then you have never coded a truly high concurrency application :) In any case, you should be using factory-provider models and methods, not actually writing lines of code to get your data.
With that hand grenade I'll get back to work....]]>
[...] . You see I recently started a large project in C# at work (a desktop app by the way, not ASP.NET after saying I was somewhat familiar with it and it should be easy to learn. The go [...]
< ![CDATA[Man! This blog is a year old and still attracting comments. My initial thoughts on ASP.net are: 1. it is a pain to learn, 2. You lose control of the resulting interface, which is MS-ified (in short UGLY), 3. Code you write, or should I say that VS writes, can be written in any other language in 2 lines of code instead of 10, 4.) boy did MS fuck up the data access stuff, what pain!
I think someone said this above but: basically if you want well managed code with the power of object orient features that C# gives you and you do not care what the resulting site looks (or feels) like, then use asp.net. Asp.net sucks out the artist in us web developers; just try implementing style sheets with ASP.net :o)]]>
< ![CDATA[I just stumbled upon this blog after searching for DotNet Sucks, in my frustration.
I work as an independant with about 3 main clients and 10 small clients. My clients started asking for .Net a couple years ago; who am I to turn down work. What a disaster.
My work is 99.99999% intranet database. The information has to be extremely flexible. Like, having the mouseover on rows open the row up to display further data - if there is a notation on the row. That's actually pretty easy to do in ASP/Javascript. GridView, DataGrid, whatever - what a mess.
I could go on and on.
I'll tell you one thing, thos people that go on and on about code-behind. They need to get a damn life. All my asp applications had 90% of the code in an include file. I'd make the HTML and then insert the appropriate function names where they belong. Nice and clean.
Sometimes, I need to make something just a bit different than my pre-programmed object. I'd just open up the include that had the pre-programmed function, cut and paste it into a different include page and remove the first. Then i could screw with it as much as I like.... rather than spending days trying to figure out how to take a nice clean microsoft object and twist it around to fit reality - which is NOT object based.
Another part of reality is a client who doesn't know what they want until they see it. With ole' asp, they could say, put this box here and that box there, make this button do this and have the 3rd row of this list be blue unless it says 123, etc... It is snap. I could do half of it while they were looking over my shoulder. Now, once I've spent 10hrs making a GridView do what I "want" it to do, the last thing I need is to have to change it.... since that change may mean I have to redo half the work - or add another 10hrs.
Some of the prissy kids who come in and talk a good game are horrified when they find out what my client wants them to do. When they started, they'll whip up a system, show it off to me, show it to the client as a rough draft.... then the'll get the "chage requests", that takes another f&*%&$#*ing month. The next thing I know, I've just paid 2 prissy programmers for 80hrs labor. When they are done, they STILL talk about how cool they are, this time because they were able to get a dotnet control do something it wasn't meant to do. I'm ready to get a gun permit.
All I know is that it has cut my productivity ($$) down substancially.
I've tried it, given up, gone back, given up, and gone back again. Right now it's just too damn late. I've got to admin, picking up old ASP code is pretty ugly, but it is sooooo fast to develop and soooooo easy to alter. I only which microsoft had enhanced ASP rather than simply given us something else entirely.
just sad.]]>
< ![CDATA[ASP .NET was not designed or written by Web Developers. Period.
The people who wrote ASP .Net had absolutely no idea about Client - Server programming.
I've been working with it for a while now, and while there are some great Ideas in there, But there sure are some shockers.
The html is bloated. Viewstate sux, and the fact that it is On by default for every control sux even more. the doPostBack javascript function is ridiculous, as well as the huge Id names generated. Posting Back for every single event sux.
Does MS expect everyone to have super fast internet connections or something?
I don't get why everything has to be an object with umpteen million properties.
Take the Label control, in the end I want it to become something simple like this "My text"
Why does it have to have a font, background and all these other useless properties that bloat the object out of proportion (and take up cpu time and memory when rendering), when all I want to do is render some simple html. it's just a string in the end!
Someone mentioned Adaptive rendering (where depending on your browser it will render differently), complete MS BS marketing hype, I asked some MS guys about this at a conference, and they just laughed and said 'oh that, yeah that was someones grand idea, we didn't quite get to finish that'
Seriously I like C# it's great! I've taken to writing a lot of my controls/pages in the old conventional way, using loops over Record Sets and spitting out html to the response etc in C#.. (similar to JSP or ASP)
Ocasionally I try to use the controls, but they just end up frustrating me, sure they are fine if you want to do something simple (looks great in a demo), but as soon as you try to do something complicated it becomes puzzle that will take ages to work out, or maybe even impossible.)
I like to do as much processing on the client as possible, ASP .NEt sure makes it extremely hard to do this, Where they really went wrong is they forget to have a runat="client" implementation. While they use some javascript to implement there crappy event model, they forgot to think that some developers out there prefer to use javascript with controls a lot.
Try accessing/altering an ASP.NET control with javascript?
it is possible, but wtf MS?
Yep Try Again Microsoft, and this time get some real web developers in on the project from the beginning. Not Windows Forms developers.]]>
< ![CDATA[OK, I just did the search for "asp.net sucks" out of frustration. It's mind-numbing to me how MS could do such a great job with visual studio, and make C# and library building an absolute joy... and then give us ASP.NET.
ASP.NET takes what used to be a very simple realm -- rendering HTML -- and turns it into a completely obscured mess of controls that are fundamentally hard to work with. Perhaps it benefits the person who has no experience writing HTML or Javascript, but for those of us with tons of experience in those realms ASP.NET is maddening. What's the point of a TextBox control? It's a damn input field! Why can't I set properties on it?
I swear, I'm going to code my next website as pure AJAX with calls to JSON code created by .NET. Cut out the middleware completely. It's ghastly.
Thanks to all for keeping this thread alive. I'm glad to know I'm not the only one who thinks ASP.NET is insane.]]>
< ![CDATA[ASP.NET sucks... the point is that .NET by its design assumes that everything must be an object. PHP is in this regard much more flexible. Of course flexibility can throw you into spaghetti code if you're not careful, but that's programmer's fault. I don't like the way how ASP.NET forces me to think as if everything must be an object. I wish I could do what I'm doing in PHP or Python, but I've built quite a sizable library in C# where I really utilized power of OOP concepts and static typing, so I don't have any other choice but stick with ASP.NET.
I'm 100% for using right tool for the job. For ASP.NET I don't use any visual designers, just doing everything inline in notepad just like old ASP and spitting own HTML. It's really simple and yes I could make bunch of server-side controls and make whole thing more OOPish but that's just overhead which doesn't give me any advantage. The last thing I want is to totally tight up my application to .NET so it will be impossible to easily migrate to some other platform sometime later.
My conclusion is that ASP.NET is a great tool for novice programmers (for its simplicity) and for architecture astronauts (so they can have their website 100% OOP as if this is the best thing since sliced bread). For all in-between who are looking for simplicity and efficiency, ASP.NET is going to be struggle at least.]]>
< ![CDATA[I've been a ColdFusion developer for five years now. Before you begin to give me a hard time about that let me explain: Macromedia and Adobe have developed newer versions of CF (MX 6.1, MX 7 and the soon-to-be-released CF 8 - codename Scorpio) to run efficiently on any web server (IIS or Apache - I prefer Apache - even on Windoze). It's very easy to code and very powerful functionality can be written with just a little bit of code.
I'm also a big fan of the LAMP development, of which I have a couple years experience as well.
I've also spent a number of years developing Classic ASP. While it is prone to spaghetti code, it's still much more intuitive and easy to use than ASP.NET. I tried ASP.net when it was version 1.1 and thought to myself, "who the hell came up with this crap?" It's hard to use, and that damn FrontPage-like environment in Visual Studio is terrible. (God love Dreamweaver!) Of course, ASP.NET 2.0 is still just as clunky and hard to code as 1.1 was. Also, whoever posted above and said that AJAX with ASP.net is crap is right. That AJAXToolkit is a joke! First of all, it is a pain in the ass to "register" on the remote server. And good luck trying to figure out what the heck those cryptic compile error messages are trying to tell you when you try to incorporate components you're not familiar with. ASP.net is just crap. AJAX/XMLHTTP is far easier to code with PHP and Classic ASP at this point (not ColdFusion quite yet though...)]]>
< ![CDATA[well, i dont agree at all, cross page is available, and more than that, lets take open source sh*t such as PHP, ZEND has made a crap n they r distributing it. Remebr the basic quote: what comes for free is not always the best.
U can never get a quality product for free, when can u see this not hapening, everywhre i see is that quality demands price, and crap demands none, its for free.
I m using php nowadays, bt im an asp.net developer, i really feel so dificult using it after all the drag n dropping in VS2005, php sucks donkey nuts in front of Microsoft web development products.
i have no hard feelings for php, but they need to make it standardised, its a good tool, (in some sense), but not comparable to ASP.NET...
ASP.NET is the best available, but to get cheap pepl are dissing it. One day all wil understand.]]>
< ![CDATA[Reading through this is pretty annoying... half the arguments against ASP.net (for example, I just read not being able to set properties on a text box, not being able to do crosspage posting, having to treat everything as a server-side event) simply aren't true. It seems a lot of people couldn't do something right away so they simply assumed it couldn't be done. All the data controlls like gridviews are very customizable though not always straightforward. And if you'd rather code exactly how you want it to be, use a datareader, then it's almost like classic ASP.
When I first started ASP.net, it was not good. It really felt like there were a lot of things I wanted to do that I just couldn't. People don't seem to realize that this isn't ASP or PHP, it's a very different type of thinking and you need to develope your applications as such. Once you get over that learning curve (which is fairly steep), ASP.net is a breeze to work on. The code seperation works great and it's nice to have everything in one file instead of a mess of three or four (i used to have seperate pages for insert commands, edit commands, and add commands but now each is its own function on the same page). I used to use Notepad to code so the Visual Studio interface is a nice addition if for nothing more than Intelisence and page numbers.
The time savings for me have been huge since switching to ASP.net, it really saves a lot of time when writing large web applications (expecially on the validation end) and the code is a lot more reusable... I think it's really easy to use now than ASP or PHP, but it took about three months of extensive use before I felt that way.]]>
< ![CDATA[First of all I do agree that ASP.NET is not a perfect, but it's still a great tool. Yeah...a tool, like any other software development tools out there, it has it's pro and cons...If you are stuck with it..don't fight it, learn to learn with it. Most of the arguments against ASP.NET can be solved by something called design/architecture.
Trust me..I have used ASP.NET to wrote an entire accounting software where there are about 15 modules and about 60 forms and 100 reports in each module..I know most of the problem that you mentioned above. Some problem you can solved and some you just have to design you application to work around it..I have been writting application since the good old DOS days...yeah no mouse...no window...but I still can write some good application which help end user to do their job better.
Don't believe me..? ok..you said ADO.NET sucks when it deals with large amount of data..then don't load them all..
do a count on first and then select only the data for the page you are displaying..do your own paging..and what do you know...your gridview it's working as fast no matter your result is large or small.. Hate ASP.NET doing postback on every field..? then don't postback...check all your field on submit..display all your error at once... I think I made my point clear..concentrate on what you need to do, understand what's avaible..then you get to do your job better..
and personally I don't have any preference over ASP.NET, Java, PHP or anything else...the reason I use ASP.NET simply because the amount of resources like library, controls available, which I rarely found in other tools, even if there are some out there but they behave differently on different application servers, and they hardly work well with each other....]]>
< ![CDATA[Well for one thing, ASP is greedy. Like the typical Microsoft mindset, "How can we squeeze you out of your last dollar", the cost of licensing a server to the general public is astounding in comparison to, PHP for example. On a .Net Server there are bandwith issues and dues that have to be paid to Microsoft when a limit has been reached. On a Unix hosting system running PHP for example, there are no real costs associations in server licensing. It's either use all the bandwith you want on Unix/PHP, or pay for ASP/.Net combo.
Now keep this in mind, if Microsoft controlled the general population of the Internet world with ASP/.NET, we'd be paying higher fees for inferior technology. Look at their history and you'll see that they half-ass everything. =)]]>
< ![CDATA[I do some web development on the side as a hobby I plan to turn into a business. I will come right out and say that I have a bit of a bias towards PHP myself. Basically, the way Micro$oft does business just makes me sick. Ten years ago, you could sort of count on them to fulfill customers' needs, but in the last five years or so, all they care about anymore is bilking their customers out of more and more money, plus they deliver a technology that's inferior and doesn't let you do things your way, to boot!
Besides, back when I used Windows (I went to Linux a couple of years ago and haven't looked back since), I used to use AffrontPage (that's what Web Pages That Suck's Vincent Flanders calls it) until I saw how consistently it creates some of the messiest code I've ever seen. Like I said, since this is a hobby I plan to turn into a business, I don't have the money for Dreamweaver, not to mention I've found it to be a bit difficult to use the few times I've used it. In fact, I don't find Dreamweaver to be flexible enough for me, either.
Therefore, even though it may take me a little more time to do, I prefer to do my coding by hand. Some may laugh at me for this, but thankfully, I can type pretty fast -- as much as 75 words per minute, in fact. Besides, when I think of using something like AffrontPage or Dreamweaver versus hand-coding, to me, it's like the difference between fast food and a true gourmet meal. My point is this: If you want true control over how your work turns out, you're gonna need to get your hands dirty with the code. ASP and ASP.net aren't built for that, anyways. PHP is, although it's my understanding that there are a few tools for Windows that can automate some of the PHP coding, but I don't do Windows anymore and really don't need it, anyway.
One main reason I prefer to do hand-coding is because I've recently become sold on the idea of using CSS instead of tables to control web page layout -- try THAT with AffrontPage and Dreamweaver -- to this day, they both still encourage use of tables to control layout, and it's messy.
Using CSS to control layout has the advantages of allowing much more precise placement of objects, is standards-compliant, and it doesn't bog down the page with bloated code. Even though I personally have DSL, several people in my wife's family, who live in a more rural part of the state, only have access to dialup, and since there are still plenty of dialup people out there, I'm a big believer in making my pages as lean as possible without sacrificing quality.
As for server-side stuff, I've tried several server-side scripting languages. ASP is a bit of a pain, plus I do NOT like how it ties you down to IIS and Windows NT/2000/Server 2003. Not to mention, IIS's security track record SUCKS, plus it calls for third-party add-ons for stuff like mail, file handling, encryption, and the like, and that killed off any interest I may have ever had in it to begin with. And after learning what I did about ASP, you think I'm gonna do ASP.net? If you think I am, I've got some oceanfront property right here in St. Louis I'd like to sell you.
As for other server-side scripting languages I've tried, I tried Perl/CGI once and found it frustrating to learn (then again, I didn't know jack about Unix/Linux at the time, either). JSP -- while at least it's not Micro$oft-centric, it too has a steep learning curve, and I didn't really have time for that. While ColdFusion has a lot to like, they charge quite a bit of $$$, too.
And then, there's PHP. When I was just learning it, I was like "wow -- this is free and not that hard to learn, too!" And I've been sold on PHP and MySQL ever since, and that's just ONE reason why I'm a big believer in PHP and MySQL. In short, PHP lets me fulfill what I want to accomplish on MY terms and doesn't give me any grief, either. Can't say the same for ASP or ASP.net. To me, PHP is where it's at. I don't see why anyone would want to bother with ASP or ASP.net -- it's just one more way for Micro$oft to get your $$$, whereas PHP is above that.]]>
Yet again Microsoft preys on the ignorant! I love how the asp.net creators have gone so far as to develop great archives of lessons to tout their pretty little controls that only work in their simplistic little fake environment. I actually got sent to an ASP.net 2.0 class by Learning Tree and asked the teacher why I couldn’t set focus to a textbox control on one of their dynamic controls. He sat there for 45 minutes after the first day before he finally figured out some convoluted process to penetrate all the damn naming containers. And he never did figure out why he couldn’t set the text value of a label that only shows up when the control changes modes. And, like Classic Microsoft; ASP.net gurus pretend not to hear questions which have answers that prove that their product has little value in the real industy. Then again, did anyone expect something different? After all, I imagine most people found this by googling “asp.net sucks”.
< ![CDATA[I've programmed in php before, 6-7 yrs back to be precise. At that time I also looked as ASP and both the technologies were pretty similar. At that time I used to work for a small software company which provided LAMP based solutions. I distinctly remember we used to finish website pretty fast and we never did have much of performance issues.
We also developed quite a few reusable classes and also mini-frameworks which would dynamically render pages based on database schema for master table maintenance etc.. good programming fun! These technologies made us think of reuse, creating frameworks for future projects etc which made us all better programmers I think.
I now work for a big MNC which basically uses only MS technologies. Not just that, they'll use anything MS even if it was released few hours back. I see no mature framework, open source ideas being used in any project. Its just take a web-form at a time, code it and move on to the next one. UI rendering is almost a brain-dead work.
We did try out web-control, but they aren't all that reusable. Often we end up adding bits of code and compiling a completely new assembly. Where is the reuse in that?
I have see quite a few Java projects which use very rich frameworks like Spring, XDOCLET, Hibernate etc...these things really make you see programming in a different and more mature light. MS developer rarely know any of this, they live and die doing SqlCommand, SqlDataAdapter and DataSet. Page posting? There are so many ways of doing that. Look at struts. What does the ASP.NET programmer have? just a mundane knowledge which is useful only when using Visual Studio IDE.
If you even compare desktop application technologies, Borland C++ Builder/Delphi are much easier to use than VC++ or even VB in some cases. Look at the advancement in IDEs. Aren't micro-processors and OS's getting better in terms of performance? Then how come Visual Studio 2005 is so damn sluggish and keeps hanging/crashing. Did you ever see performance problems with VB6 IDE or VC++ 6 IDE? or Borland C++ Builder? Man!
I often develop freeware apps. I will never develop them with .NET. First of all they are s-l-o-w. Second, the end used most probably will not have .NET framework. What's so great about .NET then? VB6 apps worked much faster then the .NET equivalents. In fact, developing them were also easier. I must admit, I have been spoilt by Borland C++ Builder's speed and RAD features.
I rarely see people in my company thinking about re-usable application framework etc. All I see are people mindlessly trying to put technologies like WPF, WCF etc. in all projects. To me, it seems each new technology being introduced by MS makes things worse than before. Have you seen a XAML application? Its rediculous!
Ever used TypedDataSets? The amount of rubbish/unneeded code you get it unbelievable.
We'll its getting late, go to get back to that function I was writing which needs to return a DataSet...]]>
< ![CDATA[I've programmed websites in classic ASP, dotNet 1.1, dotNet 2.0, and Php.
Classic ASP, way back, was usable, but it did tend to become unmanagable when projects grew enormous (ie: 700+ code files, etc...)
C# is great compared to VBScript -- mostly, except for annoying complications, such as a lack of a simple String.Split(string ) function (ie: it needs an array, and thus complicates the use of a Const for a delimiter).
TableAdapters and the quick way of generating DataTable return data is a nice convenience.
But DotNet 1.1 was not ready for Prime Time.
And however, the visual framework is an annoying piece of crap. FYI, anyone remember SOM (Scripting Object Model) in Visual 6.0 Interdev? It's just more of the same overly complex crap.
Clicking and dragging visual controls that render into HTML is not an enterprise level substitute for properly documented source code libraries that emit HTML.
It is a completely stupid idea, from an engineering standpoint, to think that Web programming should follow the same paradigm as Visual Windows Forms programming.
The entire visual framework, which requires a mono-dimensional reliance on postbacks, imposes HUGE, HUGE background complexity. And it probably does promote lazy & inefficient (and possibly hard to diagnose errors) programming because the basic HTML/Data stuff is hidden behind reams of autogenerated code & interdependencies and hundreds of classes -- all meant to support these supposed "easy" visual shortcuts.
Coding a simple form in ASP that has dynamically created controls turns into a huge time consuming mess in dotNet. Custom Controls? Use HtmlWriter? and BeginTag, and EndTag crap? Completely backwards, time consuming, tedious, in comparison to other frameworks.
Custom javascript on your page? What a boondoggle, what utter tedium & overhead for such a simple thing.
COMPLETELY INELEGANT.
COMPLETELY NON-INTUITIVE.
I'm beginning to think that Microsoft Technologies are designed with the powerpoint presentation and the shallow tech demo to the vapid-non-engineer sales exec, as the end result.
But for me, as the end developer using M$ in the trenches -- what an utter headache. Simple, small scale intranet stuff -- that's ok, but try to stray away from the sandbox -- Argh!
Try to make your website look different from cookie-cutter dotNet demo-sites? Argh! Does MS intend that all dotNet sites look & function the same? That all dotNet sites only use one FORM tag (or else use stupidly complex js workarounds)? And that postback forms producing the PAGE EXPIRED error if the user clicks the back button is acceptable? That browsers with limited javascript be off limits to my dotNet website? Is that a professionally acceptable development standard?
I remember inventing simple things in ASP -- it feels like wading through quicksand to do it in dotNet. I'm beginning to feel as if I'm memorizing endless amounts of M$ specific tool facts that are a million miles away from gaining experience about best practices and computer science.
Ie: It seems that dotNet is designed trap developers into investing enormous amounts of effort into their specific platform. Hand code a paginated table of data? MS: use a grid view, and don't learn the basics of doing this the more flexible, clean, and direct way.
It's a big argh, as I go back to my enterprise level dotNet project -- at least it's dotNet 2.0, instead of the completely awful 1.1.
What I hope for the future of MS C# and Webtechnologies is to emulate the PHP community. MS Web Tech must go open source in order to compete and evolve more with end users (WEB DEVELOPERS) in mind.
In addition, more open source DotNet websites would help spread best practices better. Look at Php -- there are many great demi-"enterprise" sized projects (eg: Drupal, Tiger CRM, OSCommerce) that are open source and ready as examples of learning basic technique, as well as for modification.
MS are you reading these posts? You've got the billions, get it right!
--signed, beleagered dotNet C# developer.]]>
< ![CDATA[The .net core is useful and can do quite powerful stuff (async calls etc)
I have created a large complex commercial website communicating with multiple suppliers in real time, works well.
Key is to completely disregard the retarded server controls and all other html generation sh*t of the platform and generate your own html from specialized generator classes.
Not as quick to develop as ASP but runs quicker and is actually easier to maintain.
Gridview? Don't even bother.]]>
< ![CDATA[I got into web app development using coldfusion, but nobody uses it so I decided to try my hand at asp.net, since there are so many job openings asking for .net.
I'm glad to see other people hate it, because it makes so many things convoluted and complicated which used to be so simple and straight forward. I hate ADO.net and the fact that you can't just pass URL parameters to other forms like in PHP or coldfusion.
I'm not sure if I should keep going, or give up on this.]]>
< ![CDATA[I've been using ASP.NET for about a year now, and I'm not from a web development background. But what I've noticed about ASP.NET is this:
1) its got a very steep learning curve despite the seemingly easy drag+drop interface to get components wired up and getting things working quickly. Yes you can get a gridview working very quickly, but once you want to start tweaking things, it gets quite difficult.
2) you get lots of quite vague server errors which don't really tell you exactly where the error exists, say if you have lots of similar components on a page. This means its difficult to find where the problem actually exists. You can't debug it because the error happens on the binding of the components to the database without it touching any code you've written. The error is often somewhere embedded in one of the properties.
3) there seems to be lots of what I call ASP.NET quirks. Take this is an example; if you want to make sure that a textbox only accepts a value, you have to use a range validator component. However, from the properties box you can't access the TYPE field - its missing! You have to set this to 'Integer' but and do this in code behind mode, where its not readily obvious what properties are available to you.
So there is no visual way of knowing whether this property existed in the first place. Also if you set the minimum value to 0, and leave the maximum value blank (I didn't want the range of the value being checked for a maximum value), the code blows up! This is because by default the maximum value is 0, so it tries to compare 0 to 0.
I've had to learn this way (trial & error & through forum help) by being burnt time and time again and learning for next time, if I happen to remember! It seems there are lots of issues like this, and its impossible to learn them all. I wish there was an ASP.NET book which documented these *quirks* so this learning curve could be much smoother for newbies!!
Thats why I'm documenting these on my new blog at:
http://jonswain.wordpess.com
Does anyone agree with my comments?]]>
< ![CDATA[I'm glad to see there are a few more out there who think ASP.NET is a steaming load. I switched from six years of php/mySQL development to .NET due to a forced job change, and I am simply astounded at
1. the horrible loss of control in all aspects of application design
2. massive (and I mean really massive) speed decrease
3. hugely increased development time
4. convoluted development path for even the simplest of changes
Agreed with JS just above on the quirks and the vague errors. I cannot dis-recommend this platform strongly enough.]]>
11 months after my last post. Nothing has changed. ASP.NET still sucks..
Sucks big time. BIG TIME. Problem is that management don’t have a clue either way. They buy into the buzzy MS marketing b*lls**t. Let’s put it this way. If these guys took their cars for a service they wouldn’t restrict the mechanic to pliars and ring spanners and expect them to do a good job. Hey! Managers! Do you think we can get back to basics and define the job first before we decide on what tools we need to deliver it? Dump this idiotic, obsessive .Net/C# fits all crap and, while you are at it, learn something about the job OR leave the key technical decision making to those who know what they are doing.
< ![CDATA[Hi all, I'm a .NET developer focused on C#( actually) and i think that .NET and others programming tools like J2EE are so architectural and so structured OOP inmediatly ready platforms.......But, they grow without control.
When the Net Frameworks 1 Cames, i'll never have the time to study all or have allthe needed experience when the Net Framework 2 arrives....Besides i'm a PHP 5 OOP programmer too (SQLSERVER, SYBASE ASE, DB2, MYSQL...) and i need to say that on PHP i'll found 3 or 4 times more faster and efficient way to do the same development.....So, my opinion is .NET is not a Crap, but at the same time .NET is not the better way to do Web Applications...(Net) is a pain in the ASS for people that needs application ready for TODAY!. In that Case PHP 5 OOP it's fast and strong, and if you are a carefully developer and you implement good patterns and good practices PHP can offer a high architectural implementation too competitive as J2EE or .NET...........So use .NET and C# are greats, but take care PHP6 it's comming....and when it came PDO need to be considerated beacasue its seriaus, mature, strong and powerfull techonology for ALL.]]>
< ![CDATA[I started learning about web development this year from scratch.
And as a 100% newbie to HTML and Databases etc. I thought ASP.NET was great with all the controls such as ASP: text boxes and Grid Views etc. making things easy.
However, as I went on, I started to see how heavy and inflexible these controls were. For example if I wanted to created a div with several different spans in it (depending on the requirement), I would nest several ASP:label controls in the div, and in the VB code:
If request.querystring("whatever") = "true"
label1.visible = true
label2.visible = false
label2.text = "this some text"
label2.backcolor = red
It just gets really messy.
Since realizing how stupid these controls are, I've completely abandanded the asp controls and just use the 'response.write' method of all html strings through out the whole application.
The GridView is a joke. What's the point in those rowdatabounds?
The best is the DataReader I found. You can simply create a string of html. Whilst the DataReader reads each row, you can use so many functions to change your string.
Web devopment is so simple. All you are doing is sending a string of HTML to the clients browser with forms and inputs etc. and microsoft are making it hard to control that HTML - with their complex asp controls that you really have no control over.
I thought microsoft were smart, but what are they thinking with .NET are they making it too complex? I think so.]]>
Also, a warning for all serious developers. If you want a high performance website – do not base it on the asp.net membership provider. Again, you don’t have full control over it.
< ![CDATA[I'm so confused. I'm primarily a web designer who dabbles on coding. With my old job, the websites are all written in ASP. We also outsourced major web developments to programmers. I am extremely adept in HTML & CSS and have over the years learn to code ASP and work with database. But in my new job, the entire website is in ASP.NET. I'm trying to learn ASP.NET but it's very frustrating and like everyone said the learning curve is so steep.
Is it just me or is the ASP.NET not very flexible design wise.
:( so sad....]]>
< ![CDATA[The only people that would agree that ASP .NET is better than Classic ASP are the idiots at Microsoft that developed it. I would not doubt that Microsoft has a bunch of trolls out on the web that do nothing but sit around and post positive comments about it all day.
ASP might be easy if you are developing one site that you don't have any intentions of making it look like, feel like, or be like anything you have ever done before in classic ASP. I can write Classic ASP with my eyes closed. .NET ASP is so restrictive, convoluted and unnecessary it makes me want to throw up.
If you develop sites for a large company like I do - it just plain sucks. Manipulating the datagrid or gridviews is 1000 times harder than just doing it directly in the code. Especially when you KNOW what is going on in the code in the first place. Ngyaaaaahhhhhh!!!!]]>
< ![CDATA[I want to clarify.
While dotnet server controls makes life frustrating if you have to control the appearance, and user interface exactly, it is much quicker to develop business applications that don't care about how _exactly_ the UI should look.
Also dotnet makes Ajax easy -- but it can cause performance problems, just like the overuse of Ajax, in general, is doing on the net today.
So, for business intranets, asp.dotnet is quicker to develop, and because of the Visual Studio IDE and the OO nature of C#, it is easier to manage than non-OO languages, when the code base gets huge, or if there are complex business rules to implement.
Also in terms of security & database access -- microsoft has a bit of an advantage, due to its use of parameterized queries, fast development of database functions through table adapters, database transactions, stored procedure calls, and strongly typed database access.
So in short:
* -- Dotnet is weak & frustrating for implementing flashy, off-the wall, custom UI.
* -- However Asp dotNet is strong for rapid development using standard UI designs, complex business rules, and database access.
I would like to see CVN integration with Visual Studio, or integration with other open source control applications.
Also Microsoft should release a different web-html framework for software engineers who need to develop more creative looking websites.]]>
< ![CDATA[I've developed in ASP (I'm also one who hates the term 'classic') for the last 7 years.
It's flexible, light, and I can do *anything* with ASP.
Of course ASP can be messy because it has the flexibility like PHP to be taken and abused by bad programmers. However that same flexibility allows good programmers (and I'd consider myself a good ASP programmer) to use this language and do good things with it:-
- caching dynamic areas of websites do reduce CPU load
- good programming practices like using includes sensibly and procedures for reusable code
Why change to .net? There's a lot to consider when developing websites:-
- W3C compliancy
- CSS
- Cross-browser compatibility
This means being able to control every byte of (X)HTML that's outputted. .Net sounds like it's a nightmare to try and do that.
A good article here regarding ASP v .NET:-
I’ve been using .NET for since its inception and I have to say it certaining does f**king suck!!!
< ![CDATA[i used to be a web developer, and i worked with asp professionally for five years. yeah, it could get a bit messy, but if you used include files wisely to handle data it was more than manageable. i've also done a fair bit of application development in vb.net, so the general .net framework is fairly familiar.
anway, i still do contract gigs from time to time and for an intranet project i'm working on i decided i'd try to do it asp.net. i figured that with years of experience in asp and experience in vb.net it couldn't be that difficult...all i can says is jesus f-ing christ. maybe if you're running the most complicated, most highly trafficked, 7-layer dip of a site you need asp.net and you are leveraging all the things that asp can't offer. but i figure that's about 1% of the cases out there.
but if all you want is a standard, moderate traffic web site with database connectivity, asp is clearly the way to go.
oh, recordsets (connected or not)...how do i love thee? let me count the ways....
let's just say that my plans to learn asp.net have been put on indefinite hold in the name of actually being able to get some useful work done in asp.]]>
< ![CDATA[However, as I went on, I started to see how heavy and inflexible these controls were. For example if I wanted to created a div with several different spans in it (depending on the requirement), I would nest several ASP:label controls in the div, and in the VB code:
If request.querystring(”whatever”) = “true”
label1.visible = true
label2.visible = false
label2.text = “this some text”
label2.backcolor = red
It just gets really messy.
The only thing that looks messy is your implementation; jesus learn to program before complaining about your programming tools]]>
< ![CDATA[I have to say, I've been working a bit with ASP.NET, and I can see where the frustration is coming from. ASP.NET was an attempt to shoehorn stateful object-oriented programming into a place it was not welcome. Worse, it was implemented before generics were available, so despite the fact that most ASP.NET objects are effectively containers for business-objects, they're all typeless (and inconsistently waver between using "string" or "object' to represent the stored data.
There were a few outright design flaws that occurred on the lowest level - the complexity of Postback, the decision to heavily rely on viewstate (and refusal to provide session-state as an alternative), and so on. But still, the basic concept is salveagable.
The real nightmare happened when they started to get past the most basic, effective controls like the asp.net wrappers around HTML objects. asp:img is nice, asp:literal works fine and so on. It starts getting a little wierd at Repeater, and by the time you hit Wizard or Gridview or any of that nightmarish databinding stuff it just comes off the rails. You start fighting with rendering orders, bubbling out event information by stuffing it in the "commandname" attribute of your buttons, and so on.
Asp.Net was a failed attempt to re-implement Windows.Forms in a stateless web-site. The ultimate "Square Peg - Round Hole" situation.]]>
< ![CDATA[ASP.Net is pathetic and very inflexible. I've coded fluently in ASP, PHP, Cold Fusion, JSP and ASP.Net is by far the worst. PHP/MySQL All the way 100% for true web coders who truly know and understand HTML backwards off the top of their head.
The people who prefer ASP.Net are the ones who don't really know what's going on behind the scenes in a web app and just like the drag and drop controls. I've used ASP.Net pretty deeply for years now and made all kinds of custom controls and played with most of its features.
It really is a filthy struggle and constant battle for any true computer scientist who knows how to code.
Microsoft have a lot of catching up to do. I think they're better off in ditching the entire concept and going back to an inline script kind of design just like ASP was, but make the syntax C# and modernise it a lot.]]>
< ![CDATA[Wow! Thank goodness I'm not the only one. Coded in Classic ASP, HTML, CSS, javascript for about 7 years not. Just started .NET about 6 months ago. I feel like all I'm doing is implementing something that someone else built. I have spent hours and hour researching how to do simple things. Insane......
I'm sure all this is part of resistance to change but......in all practicality Classic ASP still feels more flexible and easier to make changes. .NET is like building from a foundation that can't be changed...i dunno....sux i think]]>
< ![CDATA[I'd say going back to an inline classic asp would be a disaster. I personally love the seperation of code and html. It makes things cleaner and you get compile time errors. I'm not a true computer scientist, but surely it's better to seperate display code and behaviour code?
Still it has a lot of problems as people have mentioned on here.
On the plus side it seems with the new MVC approach they're taking they've realised the problems and now want to work towards a better solution.]]>
< ![CDATA[.net is a mess!
Does anyone like all those hideous drag and drop controls and setup boxes? Yuk!!
Classic ASP is very clean and easy to implement. .net is a real pain in the ass.
I like to hand code, not drag a bunch of crap onto the page, then try and figure out what the hell it does. If you write code, it's much easier to fix if something goes wrong. Good luck with this mess.]]>
< ![CDATA[RE: Robert Says: "The only thing that looks messy is your implementation; jesus learn to program before complaining about your programming tools"
That's what I'm getting, at asp.net controls forces a programmer to code stupidly. Show us some code on how else are you suppose to change a asp:label's look and feel (for a certain condition) retard.
If you think asp.net server controls are good you are an absolute idiot and probably don't know how to render good HTML.]]>
< ![CDATA[I approached ASP.NET a while back, looking to see if it afforded any significant improvements on the PHP 4 I had been using. Though I tried hard to keep an open mind about it, tt was extremely difficult to get the hang of at first.
For one thing, I was very irritated about the drag and drop thing in Visual Web Developer. You'd think that it would be easy, but I hated bringing those controls onto the designer, and then I'd have to go over to the properties panel and change the name from "ExcessivelyLongControlName1" to something more meaningful. But once I learned enough about the controls, it became much easier just to type them in. I started to get the hang of it, despite my frustrations. Honestly, ASP.NET seemed like it was trying to make web development like developing Windows forms, which was never something I liked.
But I soldiered on, and I saw how ASP.NET made things a little easier. Having to use an event model still gave me fits, and although it honestly might have been a lot easier than the "if (isset($_POST['submitName']))" thing I did in PHP, I still had trouble getting comfortable with it. But I was able to make changes and learn the MS way of doing things sufficiently.
The real issue came as I delved deeper into the functionality: ASP.NET, VB.NET, C#.NET, and all that jazz are *poorly documented*. Yeah, PHP has weird, inconsistent function names, but I could find simple, detailed explanations of each one in a matter of seconds on http://php.net/. MSDN offered nothing anywhere near that level of elegance and simplicity. You’d think MS would want to document their stuff well so more developers will want to use it, but they don’t.
I finally switched back to PHP last year to find that PHP 5 had made many improvements, and that Zend had put out Zend Framework, which does a lot of the stuff I had always wanted PHP to do. It’s not perfect; function names still give me fits, and I think the -> object selector is a really annoying holdover from C, but all in all, I find it much easier and cheaper to use.
I don’t like ASP.NET. But that doesn’t mean I think no one should use it. If you like it, go ahead. Or use JSP. Or ColdFusion. Or Rails. Or whatever. But I think ASP.NET sucks, and I’m not gonna use it.]]>
< ![CDATA[If you are working on an enterprise application, ASP.NET is certainly the way to go, period.
As for as people crying about controls, etc., ASP.NET does NOT dictate you have to use their controls in the System.Web.UI.WebControls library. You can implement your own and most top ASP.NET developers will do that.
C# 3.0 is also a godsend. Love it!]]>
< ![CDATA[Well lets keep the love going. :-)
In all honesty my experience has been that people that really really like ASP.net don't know how to program. I come from a PHP ASP, PERL, ColdFusion, Java, C/C++ background basically and it has to rank near the bottom. There was no huge learning curve for this crap. I learned it in a couple of weeks because I actually knew how to program OOP.
I first heard about ASP.Net from somebody ranting and raving about all these things it could do that PHP couldn't. Most of the stuff he described seemed pretty easy to do in PHP and when I finally got to develop with ASP.Net for 2 years I found that they were. People rant about this code behind crap as if you couldn't simply write your code in one PHP file and include it in another. You want to control a stye?...write the style stuff in the "code behind" file and put a simple ?= in place. Don't dare say that its mixing code with html because the last time I checked asp:whatever was not an html tag. And the list of stupid stuff went on and on. It lead me to see that these people just didin't know jack shit about what they were doing in PHP or any other language free of a framework. They needed someone to tell them how to organize their code basically.
And because they don't know how to code they don't realize the drawbacks. First let me say HELL YEA you can tell this crap will suck by reading books. Once I got the basics down I went looking for books to get into advanced topics. Every book I found was chapter after chapter on using controls and mainly the gridview....even the so called advanced books. I could find nothing on tips for large scale application architecture, code re-usage or optimization or it was a very small section of the book. None of the experienced .Net developers on this new job could point me at anything. You can't really learn much of ASP.Net for some much emphasis needing to be placed on the usage of the stupid controls. When we went to training everyone was goo goo eyed over features that they could have long since implemented themselves in PHP, ASP or any other raw language if they knew anything about MVC and OOP. The idea of Master Pages seemed like a last minute realization that without any sort of include method it was quite ugly to implement any sort of page template. You ended up having to copy header and footer code to every page. The Master Page crap was very cumbersome compared to just a simple include scheme. Don't let you need to display a table of data that isn't just a dump of a database table. You have to create a list of "lightweight" objects to hold your converted data to bind to a gridview. If you say use a repeater instead then I'll ask you whats the advantage of doing that vs building a table loop in PHP....then I'll tell you there is none.
So to wrap it up I'll tell you how I shut up the zealotry of my coworkers. I took the data access layer we were writing that spanned many files and hundreds of lines of code and wrote a 1 file, 1 class, 130 line piece of PHP code that did everything the data access layer did and then some. And that one file would serve as any database tables as you wanted. I was able to show them how they could write 1/5 the code they were writing with PHP in an object oriented manner. Then for the closer I pointed the to Prado framework and showed them how if they actually knew something about OOP and MVC they could have implemented everything they see in ASP.Net using PHP.
Oh and I wish people would shut up with that "interpreted" crap. Many PHP developers use opcode caches which allow PHP to behave exactly like ASP.NET...compile once and run the compiled code for each request after the first. I have also seen one LAMP server support thousands of users and ASP.NET apps that ran excruciatingly slow with only one user because of the mess created with datagrids. And don't tell me anything about tweaking or some alternative/proper way to use them because you don't have to go through that hassle in PHP. You use the common sense programming practices you were taught in CS101 and your code normally runs fine.]]>
I’ve been a professional C++ programmer for the last 10 years. Recently I got into C# and I must say I like it. Then I tried out ASP.NET and I was disappointed. I think MS should ditch ASP.NET and go with something entirely new….something less visual and more programmatic. Making dynamic pages in the designer seems like the wrong approach. The designer is great for static pages though, but so is Front Page. For dynamic pages I would rather do straight up coding in C#.
< ![CDATA[I don't think Microsoft own website is developed using Server Controls. What i do for asp.net is making use of its rich library and powerful language but program using PHP/ASP way. It may not be a perfect web dev platform but I think the API is more consistent and richer than PHP. ASP.net is a language but i am a human. So do what human does, adapt.
PHP is shit for me but i think it has its goods, cos I'm new to php. If I could use PHP5 and mySQL 5, things can be easier. PHP is just not consistent enough.]]>
< ![CDATA[I am a professional developer in the USA. My company uses me for specifically ASP.NET programming. I've been a developer for over 7 years.
ASP.NET is the WRONG approach. It simply controls the output too much, so you have to code around the server controls, unless you want REALLY BASIC pages. It is really good for programmers who DON'T know the web very well.
The .NET framework is great and has tons of capability built-in. But ASP.NET is a crappy way to do web programming.
I have found PHP to be much better for developing High-End, world-class, AJAX driven applications, in almost every way.]]>
< ![CDATA[Not a day goes by where I don't say - "I hate dot net"
I have been developing for years using classic asp 3.0
Dot Net takes about 10 times longer and about 3 times the amount of code.
To top it off the site is much slower.
I am forced to use dot net by the company I work for, just to say the site is dot net.
I HATE DOT NET !!!!]]>
I’m glad I found this site. It’s good to see I’m not alone in my frustration with ASP.NET. I’m a professional web developer. I have experience working on applications in ASP, PHP, ColdFusion, and JSP. I recently decided to try out ASP.NET to see what it’s all about (I started out with an open mind, and even a bit enthusiastic about it), but after working with ASP.NET for a short while I think it is essentially made for two types of people: (1) Windows application developers that want to build web applications without having to learn the basic grammar of user agents, and (2) kids straight out of school that don’t know anything yet and can be coached (i.e. brainwashed) into developing web sites ASP.NET style. — If phrases like ‘semantic markup’ or ‘progressive enhancement’ have any meaning or value to you – then forget about ASP.NET. If you like being able to control what you send to the client, then forget about it. ASP.NET is basically an HTML generator, designed for people who are not web developers, to build applications to be distributed via HTTP.
Asp.Net suck when you are starting out Period. Not because it is not comprehensive but because there is no documentation and examples on anything useful for every day development. Something that takes only two minutes to implement will take two weeks of google search. Finally you get a half-baked answer you have to settle for. Some of you think that drag and drop solutions are bad and I think you’re all friking retards. Perhaps you can sit on your fat ass and potts around writing everything from scratch while some one pays your salary. Wait till you are in business for yourself. Customers want everything done yesterday and they want it for free. The only way I can make some money is if I get it done fast. Some stupid retard from the stone age came up with the idea that we still should use notepad to create web applications and all the sheeple repeats it as if it was THE way to get things done. ..But getting back to Asp.Net. It sucks, it blows chunks! You can’t find one decent book to go beyond the basics that you can actually use in real life. The asp.net community is possibly the worst of its kind. Unless you know some one who can show you the ropes, prepare for at least 2-3 years before you’re up and running. The amount of things you have to commit to memory just to create a simple application is mind blowing. I got into it because it was on top of the job market and seemed to offer the best pay and provide the best opportunity.
< ![CDATA[People always tried to find the best tool available to get the job done quickest, asp.net tries to make programmers job easier by having server controls (drag the server control, bind it to a data source, job done). BUT real world web development is not exactly that simple. You want to work with raw html and customised every part of the page. To customise asp.net server controls it will give you so much frustation!
PHP5 + Zend framework is really making PHP ahead of the game in web development (oop, mvc, good documentations). No one will diss MS ASP.net if it's good tools and make developers job easier.
MS has realised that the asp.net webform model does not work, they have started this asp.net MVC, following the foot steps of Zend framework! ASP.net is doing the catch up now, and it's open source, let's watch and see what happens.
For now, PHP is my choice whether to develop large applications or simple websites.]]>
< ![CDATA[What a fucking douchebag blog post this is. Leave moms basement PHP douchebag childish crap.
I’m sorry, but PHP sucks.
Tim Bray says: “based on my limited experience [...] all the PHP code I’ve seen in that experience has been messy, unmaintainable crap. Spaghetti SQL wrapped in spaghetti PHP wrapped in spaghetti HTML, replicated in slightly-varying form in dozens of places”.
Right off the bat: there are things to like about PHP. I will list those first, to get them out of the way. I think this is important so that I don’t get mail that basically says: “yeah, but X”.
1. “PHP makes it easy to get things done for a beginner”
This statement is absolutely, positively, true. I taught a course on PHP, so I know. While all Programming 101 courses that start with Java will spend a lot of time explaining things that beginners have a hard time to understand, like OOP principles and so on, PHP lets you connect to a database in no time. MySQL support? It’s filed right under “mysql”. A PHP page at first relates to exactly one HTML page. This concept makes you feel powerful. Something most other programming languages, at least at first, don’t.
PHP gets out of your way, in the start, more than anything else. It’s what people who already know about OOP like about RoR.
2. “PHP is easy to install”
In fact, there are multiple packages like XAMPP, that get you started in no time.
Unfortunately, that’s where the fun ends. Here’s what makes PHP a toy and not a tool. I can’t stress that enough. If you’re planning to develop a software system and you have a choice on which technology you want to implement it: there is almost NO reason for implementing it with PHP, but a lot of reasons against. I already used PHP when it was called PHP/FI. I understand that today’s PHP has organically grown out of that CGI binary. But unfortunately PHP is now being marketed as a “enterprise-class” technology.
This is why it sucks.
1. There are 3 incompatible versions of PHP.
There have been 2 forward-incompatible changes in the codebase that make a certain amount of code backward and forward-unportable. While backward-portability is most often not supported, as new versions of the runtime introduce new features, forward-portability, that means backwards-compatibility for the runtime, is a must. Especially for software systems that need big investments to develope.
In detail, the changes were:
* from PHP 4.3 to PHP 4.4 the behavior of references has been changed to avoid a memory leak.
This means that the perfectly reasonable code:
function &myFactoryMethod() {
return &new ProtectedClass();
}
does not work anymore. Instead, to do the same thing you now have to write:
function &myFactoryMethod() {
return $var = &new ProtectedClass();
}
While small scripts tend to not use a factory pattern, or any pattern for that matter, every properly designed medium-sized software will.
* from PHP 4.x to PHP 5.x many core concepts of the PHP language have been changed to better support OOP.
Not only were new features introduced, that would be expected, but also a lot of behavior has changed. Call-by-reference is now standard behavior, exceptions were introduced, new keywords have been reserved, attribute and method visibility has been added. While the Zend Corporation ensures that “most scripts will work flawlessly with the new object model”, fact is that only few systems have been ported to PHP 5.x by today (02/12/2006). Many libraries remain unavailable. Still, PHP 5 seems to be a major push from the developers to get their act together. Unfortunately everybody is still having PHP 4 installed, as most bigger software systems don’t work with PHP 5, even as Zend asserts otherwise.
However, one of the most pressing problems, the incredibly bad character set support, has not been adressed.
A smaller problem that should not go unnoticed is that PHP’s generally good idea of making things easy by providing direct access to functions like the mysql_*-family also broke compatibility when MySQL 4.1+ introduced new binary protocol features. Any script that doesn’t use the mysqli_* functions or a proper database abstraction layer for PHP (like ADODB or PEAR-DB) is broken and needs to be updated for the new database version.
I didn’t realize how badly broken these scripts are, until I recently finished a project that ran exactly into this problem.
It has been pointed out to me that PHP 6 will finally introduce Unicode support. Which will be another incompatible change. So there will be only incompatible versions of PHP. I’m guessing that we’ll see a repeat of the landslide that is the adoption of PHP 5.
2. PHP’s character-set support is so bad, I want to scratch my eyes out
Parsing text, like HTTP form input, with PHP is incredibly hard to get right. Even if you’ve compiled the mbstring extension and configured PHP to override its string functions (most likely breaking the often-used mail()-function on the way), the character-set support is incredibly bad. I’ll first give you some pointers before I start the head-shaking:
*
PHP can supposedly parse XML. It really can’t. It can pattern-match properly structured text files in certain character-sets only used in a small part of the world
*
Some security-critical functions in PHP break if used with certain character sets. A list of supported character sets is here, but unfortunately this doesn’t include for example CP850.
Abetting this problem is that many developers, especially beginners with PHP, have absolutely no idea what a character-set really is, so it’s hard to explain the problem. In fact, most of the people teaching courses at the University of Regensburg have no idea what a character-set is. The quote I use most often, comes from the C 101 course that I had to take in 2004: “German Umlaute don’t work in C, so don’t use them”.
If you are one of those people read at least this article by Joel Spolsky and then go to this post by Mark Pilgrim and don’t stop researching the net until you know what it means.
The problem is also supported by the fact that the database most PHP applications are built on (MySQL) has had notoriously bad character-set support up to version 5.0 (the support was phased in in the 4.1 release, but there it only broke lots of Java applications because the standard table collation was Swedish).
While MySQL’s character-set support is not exceptionally bad anymore, it’s still bad!
Interestingly, people with mostly western character-sets never stumble over this problem until their web-application gets so popular that someone from Russia tries to leave a comment in russian (and their forum software suddenly falls apart in that thread). However, people like the makers of ezPublish come from Norway and recognized PHP’s problems right from the start.
3. (string)"false" == (int)0 is true
Now that’s just nasty. Please note the explicit casts. Even in a dynamically-typed language this shouldn’t happen, because you’ve just explicitly “statically-typed it”. Of course the opposite of this flawed creation also evaluates to true: (boolean)false == (string)"0".
Please note that this problem has nothing to do with the use of double-quotes.
This is PHP’s type coercion gone haywire, because every other not-empty string value is interpreted as true.
But of course this problem has a solution: enter PHP’s flawed identity concept. Take the following code:
if ("false" == true) echo "true\n";
// => true
if ("false" == false) echo "true\n";
// => false
if ("false" == 0) echo "true\n";
// => true, wtf
if (false == 0) echo "true\n";
// => true, as expected
// so "false" = true && "false" = 0, so "false" is true and
// false is false and we haven't even discussed identity, yet
if ((string)"false" === (int)0) echo "true\n";
// => false, ...ok...
if ("0" === 0) echo "true\n";
// => false
if ("false" === false) echo "true\n";
// => false
if ((int)"0" === 0) echo "true\n";
// => true, with type coercion
This means: if you want to predictably compare two variables and you don’t control their input range (i.e. one of them contains user input, for example), you have to compare them by identity, but then you have to explicitly convert them and know what their contents’ type is, so you get a predictable result. So PHP because of the strange conversion mentioned above, essentially has 2 type systems that behave differently. Because “false” is 0 or false in one type system, but “false” is true in the other (or false… sometimes).
4. References are syntactically complex and implemented, let’s be nice, “badly” (PHP 5 solves some of this with an incompatible change)
The first part of the sentence means that any kind of high-performance object-handling, be it arrays, hashes or object instances, requires a lot of syntactic sugar that invites syntax errors and produces bugs just to avoid the “copy-by-default pass-by-value” handling that PHP 4 normally uses. It’s just like C, but C knew when you tried to return a pointer (or a reference in C++, for that matter), so you still needed less syntactic sugar than you need in PHP.
In PHP 5 objects are passed by reference by default.
The second part means that references aren’t references like you know them from any other language. References are aliases in PHP. The reason why you have to assign a new object reference to a variable in PHP 4.4? Otherwise there exists no name for the returned variable to point to and the garbage collector never finds it.
function &myFactoryMethod() {
return $var = &new ProtectedClass();
}
$xyz =& myFactoryMethod();
// now $xyz is not a reference to the returned object, it is AN ALIAS for $var
Why don’t they just automatically create names for anonymous variables? I don’t know… perhaps they thought that would have been bad design.
5. PHP isn’t thread-safe
PHP 4 and 5 can only be used with Apache2’s mpm_prefork model, not with mpm_worker. That means that PHP limits your performance choices with the Apache HTTP-server. It seems that it can be used with mpm_worker by not using the mod_php plug-in directly, but by using FastCGI. However, currently (11/11/2006) there’s at least one bug in PHP’s fastcgi support that could smack you in the face when you least expect it.
In a presentation by Cal Henderson about Flickr’s use of PHP that I found recently, he says “PHP leaks memory like a sieve”, which is one of the main problems for making PHP work with FastCGI, SCGI or a threaded execution model.
PHP’s session handling is single-threaded, too
Another real caveat here is PHP’s session handling. By default, PHP will use disk-based sessions (i.e. files) and will acquire a lock on the file as soon as you call session_start(). This will essentially make sure that multiple requests that use sessions will run serialized, one after the other. While session-handling in concurrent scenarios is not a trivial task, it still is important to note that with the default setting of PHP, if you do a session_start() at the top of every PHP page, user’s will experience strange behavior on your site. For example, if they open multiple links in tabs or windows, or your site uses frames, these will load sequentially, not in parallel. You can alleviate this problem by closing your sessions with session_write_close() or by using a solution like Sharedance to solve this problem.
6. The quality of PHP’s compiled-in libraries differs widely
While, of course, the quality of all libraries differs widely, in most other systems, the core libraries are designed to a certain set of standards. PHP’s internal XML support just sucks. At the same time PHP’s developers couldn’t decide if they prefer the underscore method of function_naming() or Java-style functionNames(). So they just used both… sometimes… when they didn’t use C-style fncnms().
Also, as Jason pointed out, some functions (like money_format()) are only defined on some platforms and not on others. Please note: money_format() is not a function that is provided by an extension, it’s part of PHP’s standard library!
7. PHP’s support for large integers is exactly as idiotic as its unicode handling and its type system
PHP’s integers are 32-bit signed integers on 32-bit platforms and 64-bit signed integers on 64-bit platforms. There’s no official way to tell what the size of an int is.Theoretically, if you were to load a 32-bit unsigned number from a binary stream, you could use unpack(). That would convert a really big number into a float, if it didn’t fit into 32-bit, a problem in its own right. Unless you’re running PHP version 5.2.1, because that version had a bug in unpack(), but I digress.
So if you want to write a PHP program that can handle integers larger than 2^31 on any platform, you can’t use normal operators (+ - * /), you’ll need to use the bcmath library. Oh, you also can’t use unpack() because of one of my favorite notes in PHP’s documentation:
“Note that PHP internally stores integral values as signed. If you unpack a large unsigned long and it is of the same size as PHP internally stored values the result will be a negative number even though unsigned unpacking was specified.”
So you want an unsigned integer? Ummm… no, sorry, can’t expect us to return one. Hopefully you’re not writing software for an electronic voting box! You can read more on this in an excellent post titled “Integers in PHP, running with scissors and portability” on the excellent MySQL performance blog. They also came up with a portable function that allows you to sidestep this issue, it reads like this (they could have chosen better variable names, though :-) ):
function _Make64 ( $hi, $lo ) {
// on x64, we can just use int
if ( ((int)4294967296)!=0 )
return (((int)$hi)100000 ) { $r4-=100000; $r3++; }
while ( $r3>100000 ) { $r3-=100000; $r2++; }
while ( $r2>100000 ) { $r2-=100000; $r1++; }
$r = sprintf ( "%d%05d%05d%05d", $r1, $r2, $r3, $r4 );
$l = strlen($r);
$i = 0;
while ( $r[$i]=="0" && $i]]>
< ![CDATA[@Douche Bag....I mean Douce Bag....seriously dude, why don't YOU go back to your mom's basement and cuddle up with your Bill Gates plush doll.
PHP and ASP.NET both have their limitations - but at the end of the day I'd never choose ASP.NET over PHP. It's a bloated, convoluted, overstuffed piece of Microsoft garbage. I've built plenty of enterprise level websites that get millions of hits per moth in PHP with no problems whatsoever - so blow it out your Halo...]]>
< ![CDATA[Tbh I'm relieved it's just not me... I resorted to adding to my list of "things I would rather do than develop in ASP.NET" every time I wanted to fist the screen.
The result? I nice endorsement for it at http://www.aspdotnet.org.uk – it’s a very “bunny suicides” kind of humour.]]>
< ![CDATA[No wonder ASP.NET is only good for enterprise applications - those people have time (and money) to sit around and debug phantom issues. That's the reason most small and medium sized businesses go for LAMP - they care more about getting the web app up and running, rather than how immaculate their OOP .NET code looks like. Also, as soon as the original .NET app developers leave a corp, and rely on maintenance programmers to fix issues, you'll likely have another re-write on your hands.
Stick with standards - XML/XSL/CSS/Javascript. These things don't change every year. The only thing you really need to focus on is generating the XML in a web service, and for that ASP.NET is fantastic. Right now, I do the XSL transformations in PHP - but I could do it in classic ASP also with very minimal code. XSL transformations in PHP5 give me ZERO negative performance. ASP.NET for full-on web apps is a convoluted mess, and will always be (until they change it, again!).
Yes, I found this by Googling ASP.NET sucks, in a moment of frustration to see if I was the only one who thought this. ASP.NET is for developers who get paid by the hour, and don't have to worry about clients or budgets.]]>
< ![CDATA[Well this page certainly has alot of different views on server side programming!
I also found this page on Google, as I just started to learn Visual Basic .NET in college (which isn't hugely different from ASP.net and is very similar coding wise). I've been coding applications and programs in PHP for 3 years now, and I am interested in diving into ASP for the sake of knowing another programming language for a job.
For the past 6 monthes, I have been coding my own social networking site in PHP and MySQL, and I think over most other people, I can really pinpoint on what I think is weak in PHP vs. some of the things I have been learning in .NET.
First off, PHP can get very sloppy after a while. All variables are declared the same way and although they are easier to write ex.
PHP
$var = 25
.NET
Dim Var As Integer
Var = 25
The problem with PHP emerges when we are using functions. NET is built to be more of an OOP (object oriented programming) language, and although PHP has the class structures to resemble OOP, actual use of functions for smaller applications are a pain to use because you have to include the variables to pass in the function as well as return them in the end of the function or the value is null, while you can use constants and private variables in NET outside of functions without having to return their values.
Beyond this setback for simple variable use, PHP's biggest setback for me building a social networking engine is the lack of FRAMEWORK. Sure, there are several pieces of framework out there, but:
1. If everyone is using different framework, how can there be a consist way of developing programs?
2. Learning to use different frameworks is a b*tch to learn and a waste of time when there should be a standard.
Overall, I think it really has to do with what you are coding. Next time I build a large scale website, I'm going to dive into ASP and try some of the techniques I learned in college, but when you are coding smaller programs, there is nothing wrong with PHP, although it still can be simple to make programs in ASP. I have alot to learn yet, but I have been a die hard PHP programmer for years and I wanted to throw my thoughts out there.]]>
a website with asp.net? site error site error site error… duh. Must say that the error page is kinda cool. Keep it simple for simple sites. ASP or PHP. Thats simple enuf.
< ![CDATA[I have been a web developer for about 8 years now. I have used PHP, ASP and ASP.NET. I have also used may different kinds of db backbends including MSSQL and mySQL.
I don't normally post on things like this. I just hate it when people pull the PHP sucks argument and say things like, its not made for large applications. The fact is people swallow everything Microsoft spits out without thinking or even searching the web to see what the facts really are.
I just think people don't like to move away from Visual Studios and MS products only support MS products so if you want to use PHP you have give up Visual Studios and I have met many so called programmers that if you take away Visual Studios they cant program.
I am not going to post 1000 lines on why PHP does not suck. I just what to know if any body has heard of these big websites that they RUN PHP.
http://www.facebook.com/index.php
http://digg.com ( http://www.oreillynet.com/onlamp/blog/2006/04/digg_phps_scalability_and_perf.html )
http://www.wikipedia.org/ (mediawiki only runs PHP + mySQL)
And I wonder why so many big sites have moved to CMS’s like Drupal.
You MS lovers can continue to use ASP.NET, the more you do the better I look.
Visual Studios + ASP.NET + MSSQL = high cost + Crap output (html + JS) + Lots of Debug time
PHP + mySQL + Apache + Linux/BSD = what every you want and it only cost you time]]>
< ![CDATA[Look guys development is development. Yes I 100% agree that WebForms (ASP.NET) is an experiment that failed. But its just 1 web model that can be used around the .NET framework.
What you guys are doing is like me saying php sucks because I found it hard to manipulate phpCake.
As many have mentioned here, you DO NOT HAVE TO USE WEBFORMS in .NET development!!!!!
Php, rails or whatever doesn't touch The .NET framework as a whole. And the .NET community is learning how to make both the web layer and other layer development better by looking at other languages.
We now have the best of most worlds, and I think when MS start pushing MVC hard their will be a few converts among you because you will get the flexibility your asking for with the power of the .NET framework.]]>
< ![CDATA[If you dont want to deal with HTML, JS, Browser and OS incompatability issues and other crap, but still want to write kick a$$ AJAX apps, checkout GWT.
< ![CDATA[I am also glad that I am not the only one who thinks that ASP.NET is a big piece of inflexible crap.
Now don't get me wrong, ASP.NET is not all bad it does have a lot of good things about it. For one I like that I can use a clean strong typed language like C#(I do prefer strong typed languages). ASP.NET also has some nice caching functionality. I also like(from what i hear) you can deploy and ASP.NET on multiple server so that if one server is getting hammered that it can pas request to other servers to even the load. One last thing that I really like that was adding in 3.5 was LINQ with is a nice simple extendable ORM type system. The one thing I hate(and it seems like ASP.NET is built solely around the use of these) are the user controls(like gridview, detailview formview, etc...)
On the surface user controls are great and it is very easily to get something up very quickly that might take a little longer for PHP however once you start needing to tweak it, forget about. I don't know about the people at Microsoft but when i want to display my data in a grid view, the gridview should not be the same for every grid. For instance let’s say I was to display a list of tasks for ones that are both completed and not completed and for the ones that are completed, lets have a button that allows me to click on it and it just completes it. Well i have yet to find a way inside a gridview to display certain things based on fields of the record it is displaying. Maybe this is possible but i have not found a way yet after days of looks(is this could be because of the things i find about ASP.NET show super simple non-real world examples). Now for the people that said "if you can't do something with a control just design your application around it", WHAT!?!?!? I am sorry but with all the options out there(and for me PHP is still the best) or web programming "languages", why the hell should i have to design an application the way Microsoft think it could be done.
Now with PHP, it gives you everything you need to do whatever you want and does not really restrict you in any way. Sure it can’t build a gridview for you but you can do that yourself(and if you can’t, then you should not be programming) and you are left to control the look, feel, functionality yourself.
I also loved the guy who pointed out a number of things had in it the phase “with no coding”. Sure ASP.NET is great if you don’t want to touch a single line of code but i am not a programmer to drag and drop build websites.
ASP.NET is for people who don’t want to code and are find with the default(UGLY) templates the windows provides and you need to build something outside the scope that Microsoft provides. PHP, Classic ASP(from what i have seen), Ruby, etc.. are for people who know how to code and want a system that is easily extendable.]]>
< ![CDATA[I agree with everything said above. Classic ASP makes spaghetti code but rocks. And advanced developers can find their way through such code. ASP.NET is for babies. Spoon feeding. How can you tell me how I should do my things ?
They have even removed the Execute statment because of compiled code. I found the eval function in JScript .NET worked perfectly for me to port my code but JScript .NET is hardly supported in documentation and not at all in VS 2008. Just great!
The only reason I am switching over is the fear that what if Classic ASP is discontinued ten years from now....]]>
I’ve returned 18+ months later (see my comment around Oct 2007), and although I’m definately a better ASP.NET developer (nearly 3 years development) I’ve still spent all day messing around with control validators. Why oh why am I wasting my time with this stuff?!? Am I alone in constantly trawling the ASP.NET forums to find answers to some ridiculous problem that some other poor fellow has been facing?!?
< ![CDATA[Oh my! What a very hot post. I'm a PHP dev and now stucked with a project to maintain a ASP.NET mobile application.
I may end up spending a whole day doing nothing just to make the things work.]]>
< ![CDATA[You guys need to try the Yii Framework (a PHP framework). It basically steals the best concepts from others out there.
For ASP.NET developers, PRADO Framework (a PHP framework) is kinda like a clone of what you're probably used to.]]>
happy 3rd birthday!
< ![CDATA[been doing asp.net and c# for the past 4 years. never enjoyed a single day (when doing asp.net)!
in general c# and .net ARE GREAT! visual studio is so so (code generation etc sucks, too heavy weight). windows not so great compared to linux and mac.]]>
< ![CDATA[PHP is for those self-taught script kiddie types. It's garbage.
.NET is for educated professional programmers. It's a real development environment.]]>
< ![CDATA[ASP.NET is a pile of steaming horse turds.
ASP.NET _interferes_ with your programming, forcing you to achieve things in roundabout ways, and bending you to microsoft's utterly crapulent paradigm. I'm a programmer, I want to write a program. I know what I need to do and how to do it, just give me a semi-decent tool and I'll make it happen. A programming language is meant to assist you, the developer, to do what YOU want, not make you do things how THEY want you to do things.
If microsoft made a car it would only make left turns. The funny thing is, you'd still get microsoft-ians saying how you can still go wherever you want, you just have to turn left three times in a row to make a right, and how turning left really is better than turning right after all.]]>
< ![CDATA[asp.net forces the programmer away from the essentials of web development: html/css/patterning. it can be summed up as 'leaky abstraction'.
...and don't konck VB6: it was light, powerful and distributable. I often use it to 'plug gaps' here in corporation land. dotnet frameworks as STILL often absent on the client, and this has left many companies without a simple, low-cost local app distribution technology from MS.]]>
< ![CDATA[... And now, MS go the MVC route. Which involves apparently, and I quote, "mixing code directly with html".
... so glad I kept the stuff that matters in classic asp.
webforms face abandonment. another generation of programmer facing up to every piece of experience they have turning obselete. I remember VB6. People were scornful, but I put 2 c++ types out of their jobs using it.]]>
< ![CDATA[fuck asp.net and fuck anyone who uses it
its the biggest pile of horse cum ive ever seen.
all these fucking jobs for asp.net?
what the fuck do they need to use that garbage shit for?
its useless,
i can't be fucking bothered to spent fucking months reading tutorials and books just to do simple fucking things
life is too short to fucking waste time on pointless things like "classes", "oop".
fuck em all.
even php is a fucking hassle.
Thats why your best bet is to use something ready made and just modify it where needed.
Take a wordpress blog for example, take it, modify it and fanny's your aunt, you have a full website with many features.
asp.net is for fucking cock lickers who have nothing better to do but masturbate over pictures of bill gates while ejaculating to speeches of steve balmer.
i bet you microsoft cum lickers love to put cream on your testicles when lick it off each other.
fucking baboon fuckers!]]>
< ![CDATA[Pretty funny how long this article has been commented on...
I certainly won't claim to be an expert in ASP.NET, but as someone who constantly thirsts for knowledge, I'm always trying to learn new programming languages even just for the sake of learning them. ASP.NET was the first one that made me think to myself "Why am I wasting my time with this?" There are so many aspects of programming that should really be up to the developer, but Microsoft has taken it upon themselves to decide on a particular convention that they prefer, and it just feels like it's being forced on everyone else (naming conventions and annoying web forms are the two that stand out for me with this one). Additionally, the language itself feels so... hands off. After going through several tutorials and "coding" some things like a calendar, I really didn't even feel like I had coded it. It felt more like someone from Microsoft coded it, provided me with some documentation, and I just made a function call or two with some variable declarations. That's fine, but that's a framework. It gets the job "done" while it left me feeling empty, without that satisfaction I get when I write my own solution.]]>
