Why Many Developers Hate ASP.NET… and Why They’re Wrong
Few platforms draw the same amount of ire as ASP.NET (or .NET in general) from the development community. While there are certainly valid criticisms of the platform (what platform doesn’t?), the majority of negativity comes from those who haven’t spent any time with .NET. Those developers typically rely on misconceptions or flat out hatred to base their opinion, and they do a disservice to others looking to learn a new technology and to the platform itself. So, let’s examine these excuses and add a dose of reality on why you shouldn’t listen to the rabble and give ASP.NET a try.
It’s Made by Microsoft
This is probably the #1 reason for all ASP.NET hate.
Microsoft is a massive software corporation, and like all other corporations, they’re in business to make money. Duh, right? Unfortunately, this is probably the #1 reason for all the ASP.NET hate: it’s a Microsoft technology, and the “evil” taint still lingers over the giant in many people’s minds. I’ve always found this interesting because the other major technology companies, such as Google and Apple, are just as “evil” as Microsoft, but the zealots fans of those other companies typically turn a blind eye (or are in denial) to those “evils.” I personally think the majority of people are normal minded people. They don’t really care who makes a product as long as that product works well.
But I’m not talking about normal people, right? Normal people don’t see a headline containing "ASP.NET" and have an automatic urge to make an inane comment. Instead, I’m talking about the developers (and geeks) that treat technology, and/or the company that creates it, as a religion. I’m not kidding—find any article or tutorial on X platform, and chances are good you’ll find comments stating “X Sucks! Y Rules!”
It’s as if these people are on some weird crusade to defend their chosen tech/company to the hilt and bash the competition in an attempt to bring the unwashed masses into their fold.
It’s sad that the technology = religion mindset exists. Technology is a just tool, and a real developer is going to try multiple tools in order to find the right one for the job. That’s not to say that someone cannot dislike a technology, but to echo our parents, "you don’t know you don’t like it until you try it." In order for someone to truly dislike something, that person has to try it. So don’t listen to the rabble—they haven’t tried it and haven’t formed an informed opinion. If you decide you want to try it, they’ll attempt to dissuade you by saying it costs too much.
Misconception: It’s Expensive
Find any article comparing ASP.NET with any other platform, and you’ll read, either in the article or in the comments, “ASP.NET costs more than [insert any other server-side tech other than ColdFusion here].” Before discussing the actual cost of something, it’s important to put the term “expensive” in context, as what is expensive for personal use can be considered cheap in a business environment. In business, there are many factors that make up the “cost” of a product. The initial price obviously needs to be considered, but the benefit of the product is also factored into the overall cost.
If a product is $10,000, but it saves the company $1,000 a month, the purchase decision is a no brainer. But on a personal level, it would more than likely be difficult to justify the initial $10,000 cost.
So when talking about cost, it’s important to keep things in perspective according to the context in which it will be incurred. To keep things simple, I’m going to assume that if you’re reading this, you’re more concerned with the personal cost than the business cost (if I’m wrong with that assumption, I’ll make this very easy for you: if you have a Windows environment, ASP.NET is cheap).
You don’t actually need Windows to develop ASP.NET apps, thanks to the Mono project.
Let’s get the biggest cost out of the way: the Windows operating system. You don’t actually need Windows to develop ASP.NET apps, thanks to the Mono project (more on this later), but Mono typically lags behind the official .NET Framework coming out of Microsoft’s ovens. So, if you want all of the latest features and .NET-goodness, you’ll need Windows. Most OEMs (companies like Dell, HP, Acer, etc) ship their computers with Windows already installed; so, if you buy your computer from an electronics chain store like Best Buy, chances are pretty darn good that the computer will have Windows. If you’re more of a power user and build your own computers or plan on run Windows in a virtual machine, you will have to purchase a copy of Windows. An OEM version of Windows will run you anywhere from $99 to $189, depending on which version of Windows you buy. You don’t need to have Professional ($139 OEM) or Ultimate ($189 OEM), but if you’re a power user, you’ll more than likely want to opt for one of those two versions (OEM versions are cheaper than retail versions, but they are tied to the hardware you activate them on).
Development Costs
With that out of the way, let’s review development costs. ASP.NET development is thought to be expensive for two reasons.
-
It’s Microsoft. They supposedly don’t give anything away for free, but that’s exactly what they do. Everything you need to develop ASP.NET applications (or .NET apps in general) can be obtained without spending a dime.
Beginners: First, Microsoft gives away WebMatrix, a development environment targeted at beginners. It combines an integrated development environment (IDE) with a built-in web server (IIS Express) and a database engine (SQL Compact Edition). It also has tools to help users deploy their websites to a remote host.
Advanced Users: For more advanced developers, Microsoft makes available the Express editions of Visual Studio. Like WebMatrix, these trimmed down versions of Visual Studio are free, but they offer some of the features and abilities found in the full versions of Visual Studio. The web-focused Express product is Visual Web Developer Express (VWD), and it, too, has a built-in web server. It doesn’t have a built-in database engine, but Microsoft gives away SQL Server Express, a trimmed down version of SQL Server, that you can use for development (and even some deployment situations). If you later decide you like Visual Studio and want to purchase the full version, the projects you developed with VWD can be opened with Visual Studio.
Students: And if you’re a student, you can get lots of Microsoft software (Visual Studio Pro, Windows Server OSs, and Expression Studio to name just a few) for free through the DreamSpark program.
-
Secondly, Windows-based hosting is thought to be mucho expensive-o. Ten years ago, that argument held some weight. Today however, you can find no shortage of reasonably priced hosting for ASP.NET. DailyRazor (the company I use) starts plans at $2/month, and you can find other hosting providers that sell their services at low prices.
So cost isn’t really a problem, but naysayers will then say ASP.NET is only suitable for enterprise-class websites as opposed to your personal site(s).
Misconception: It’s Horrible for Small, Personal Websites
One only has to look at the .NET Framework’s class library to get the “this is for enterprise” feeling.
It’s actually easy to get into the mindset that ASP.NET isn’t suited for anything but large-scale sites. Microsoft is a platform company, after all, and their products are primarily focused towards business solutions. .NET isn’t really different in that respect; it’s huge in business environments, and its foothold continues to grow as Microsoft expands new and revitalized products like Azure (Microsoft’s Cloud platform) and Windows Phone, respectively. One only has to look at the .NET Framework’s class library to get the “this is for enterprise” feeling. It’s almost as if the framework guides developers to a mindset that (ASP).NET applications needs to be highly structured masterpieces of object oriented design. A lot of .NET is complex, and doing simple things isn’t always as simple as it should be. It sounds like I’m making the naysayer’s case, doesn’t it? I kind of am, but there two things to consider.
Simplicity
First, Microsoft wants you developing on their platform, and they’ve recognized that it needs some (perhaps a lot of) simplification in order to grow. After all, PHP is as popular as it is specifically because of its simplicity, and that’s the primary reason Microsoft released WebMatrix: to offer new developers (either to .NET development or web development in general) a simplified approach to writing sites with ASP.NET.
Not only is the all-in-one IDE easy to use, but Microsoft created a simplified API to make ASP.NET development easier and less complex.
Multiple Approaches
You can also build sites with the same kind of “scripting” mentality that thrives in PHP.
Second, you don’t have to fall into the “highly structured or die” mentality. There are many approaches to ASP.NET development. If you want to create highly structured masterpieces of object oriented design, you can. But you can also build sites with the same kind of “scripting” mentality that thrives in PHP. The point is, ASP.NET development is flexible enough to fit your needs, and you can choose the development approach that best fits you.
Oddly enough, there’s a somewhat prevalent idea that ASP.NET isn’t suitable for enterprise-class websites. o.0
Misconception: It’s Horrible for Large, Enterprise-class Websites
I honestly have no idea where this comes from because, as mentioned earlier, ASP.NET excels in the enterprise space. But don’t just take my word for it; let’s examine a real-world website (well, a network of websites) that run on ASP.NET.
Have you ever heard of StackOverflow.com? You probably have, and if you haven’t, it’s a Q&A website for developers (regardless of technology). Its an invaluable resource, and one I find myself visiting quite often.
StackOverflow is a member of the Stack Exchange Network, a network of Q&A websites for a variety of topics: servers, databases, legos, sci-fi, cars, and so on, and so on. There are currently 71 sites in the network, and it continues to grow.
The folks at the Stack Exchange Network are pretty open about their network. Much of the code running on the site is open sourced, and they often provide information regarding the network in general. In a March 2011 blog post, Kyle Brandt provided an overview of the technology powering the Stack Exchange Network, as well as the traffic the network gets. Keep in mind this information is regarding the entire Stack Exchange Network. It gets 95 million page views a month and handles 800 HTTP requests a second, and those requests are handled by twelve (yes only twelve) Windows web servers, two MS SQL Server servers, two Linux load balancers, and two Linux caching servers (fail-over hardware is not included in that count).
Reread those stats—I’ll wait. Phenomenal, right? It’s amazing that only twelve servers, serving many different websites, handle that amount of traffic. It’s a testament to just how good Microsoft’s server and application architecture is.
It’s Statically Typed
Dynamic languages rule the web. Be it on the server side, where languages like PHP, Ruby, Python, and Perl live, or in the browser with JavaScript, dynamic languages are the backbone of the web. It’s not that these languages are better, but they are quickly adopted because dynamic languages are typically easier to learn and understand than statically typed languages.
So what we essentially end up with is a massive community of developers who have only used dynamic languages, and that community almost has an aversion to static languages.
I fully understand the mindset. I used to be one of those people, and I understand the desire to stay within one’s comfort zone. After all, dynamic languages are lenient, and there is some comfort found in that leniency.
Static languages have a strict type system.
But there’s a bad side to that leniency; it is extremely easy to introduce bugs into your app if you’re not careful. You’ll typically not find that bug until runtime, and a common cause of bugs is the assignment of a different and unintended type of value to a critical variable. This is where the primary benefit of static languages comes in: type safety. Static languages have a strict type system, in that a variable can only contain one type of value (eg: a variable declared as an integer can only contain integer values; it cannot contain a string or floating point numbers). If you mistakenly assign a string to a number variable, you will immediately know of the error when you compile the code because the compiler with halt and alert you to the error.
Type safety can also alleviate the type checking you need to perform in dynamic languages. For example, how many times have you written code like the following to ensure the data a function accepts is of the expected type:
function add($a, $b) {
if (is_int($a) && is_int($b)) {
return $a + $b;
}
// throw error
}
This is a simple PHP function that adds two numbers together. In order to ensure predictable results, checking if the supplied values are of the appropriate type is imperative (admittedly, the type checking here isn’t complete; there are numeric types other than integer); otherwise, your app could break at unexpected times. In contrast, let’s look at the C# equivalent code:
int add(int a, int b) {
return a + b;
}
This code defines an add() method. C# is the most popular .NET language, and it is purely object oriented. There are no functions; only methods of a class. This method accepts two integer values (denoted by the int keyword before the a and b identifiers), and it returns an integer value as denoted by the int before add. Because C# is a static language, the type checking is performed by the compiler—not by you. So, if you were to call this method, pass a string as one of the arguments, like add("hello", 123), and attempt to compile the code, the compiler will stop the build process and alert you to the error. Chances are, however, you wouldn’t even try to compile the code because Visual Studio performs its own type and syntax checking; the IDE will warn you of errors before you even try to compile (see the below screenshot of Visual Studio 2010).
Also consider that Microsoft continually updates and improves the C# language. In the first two versions of the language, you had to identify a variable’s type when declaring it like this:
XmlDocument document = new XmlDocument();
This code creates an instance of the XmlDocument class by declaring its type prior to the variable’s name. Admittedly, this syntax is rather cumbersome and adds far more typing, but as of C# 3.0, however, you can simply use the var keyword to define a variable, like this:
var document = new XmlDocument();
There are .NET-enabled versions of PHP, Ruby, Python, and PERL.
The compiler is smart enough to infer that the document variable is an XmlDocument. This syntax sort of blurs the line between dynamic and static languages. You get simple, typeless variable declarations with the benefits of type safety… a win-win in my book.
But if I still can’t persuade you to give C# a try, ASP.NET sites do not have to be written in C# (or even VB.NET… but who would want to do that?). There are .NET-enabled versions of PHP, Ruby, Python, and PERL (and others) that you can use to write ASP.NET sites with, and they are just as dynamic as usual thanks to the Dynamic Language Runtime, a feature of .NET 4. So while I recommend anyone picking up ASP.NET to learn C#, you don’t have to leave your comfort zone if you don’t want to (but if you do the benefits are worth it).
It’s Compiled
The same dynamic languages that rule the web are also interpreted, and there is a certain benefit that comes with interpreted languages. Unlike compiled environments like ASP.NET where you typically write your code, compile it, and upload it, interpreted environments let you simply write your code and upload it. The common idea being that compiled environments require an extra step in development, and that wastes time. But it really doesn’t. The compiler gives us many benefits that you just cannot get in an interpreted-language environment.
First, the compiler checks the code and can give you warnings. Warnings are just that: a warning. It’s something you’ve done that may be a bug, but it won’t stop the compiler from compiling your code. Let’s look at the following code that would cause a warning:
string DoSomething()
{
var foo = "Hello";
var bar = "World!";
return foo;
}
This code defines a method called DoSomething(). Its body creates two string objects, foo and bar, and foo is returned to the caller. The bar variable is not used, so the compiler would issue a warning stating that bar is assigned but its value is never used. It may be that I created bar and forgot about it, or that I ended up not needing it. But it could be the source of a bug if I forgot bar already existed and used it elsewhere in the method. The compiler brings it to my attention so that I may address it and avoid future bugs. Here’s a screenshot of what Visual Studio tells me:
Do you want another example? Sure you do:
void DoSomethingElse()
{
var foo = true;
if (foo = false)
{
// this code will never execute
}
}
In this method definition, a boolean variable, foo, and defined as true. It is then used in an if statement, where it is assigned a value of false. That may be exactly what I intended (although I would argue that I should never do that), but chances are I meant foo == false (yes, the logical not ! operator would be better here… but it doesn’t work for my example). It’s not an error, however, so the compiler will compile the code. However, it will issue a warning asking if I meant == instead of =. These are issues that I would have found an in interpreted environment, but I would have needed to run the app and test it in order to find those mistakes.
Second, the compiler checks the code for errors. Naturally, a compiler cannot catch logic errors, but it can type check and check the code’s syntax. Although, a decent IDE will do these things for you without needing a compiler, and Visual Studio does.
Last, you get a performance boost. Compiled code runs faster than interpreted. Admittedly, .NET isn’t a truly compiled environment. Our code is compiled into an intermediate language (IL), which is then just-in-time compiled by the .NET runtime. The IL, however, is optimized, and the .NET runtime executes it. But it’s still very fast.
Misconception: It’s Closed
Microsoft makes the source code for the .NET Framework available for free.
Microsoft is a company that sells software, and they are naturally very protective of their products’ source code. So, one might think that ASP.NET (and .NET in general) is closed source, but that is not the case. Microsoft makes the source code for the .NET Framework available for free, and you can step into the code while debugging your own apps. You can even build your own personal version of the .NET Framework.
Microsoft also gives you access to the source code of ASP.NET releases, like WebForms and MVC, via CodePlex; giving you the ability to test new features and provide feedback to the ASP.NET team. I encourage every developer using .NET to download these free resources and study them. You’ll gain a greater understanding of how it works under the hood, and you can apply that same knowledge when writing your own code.
It’s Windows Only
Microsoft’s openness with the .NET Framework is what helped birth the Mono project, a cross-platform version of the .NET Framework. While Mono isn’t officially supported by Microsoft, the project has been publicly acknowledged by Microsoft. Mono isn’t going away; in fact, it’s growing in popularity Regardless of what your favorite platform, you can probably use the .NET Framework and C# to write apps for it (you can even write iOS apps with Mono!).
It’s Not in Demand
Lastly, it’s often espoused that ASP.NET is not in demand, and that simply is not true. Demand is somewhat subjective because different areas of the world and in the country you live have different job markets. For all intents and purposes, .NET has been the development platform for Microsoft Windows environments (both for the desktop and the web) over the past ten years.
Most software developed for Windows uses the .NET Framework, and so there is a huge opportunity for new .NET developers to find work.
The Mono project also factors into demand. Mono is huge, and the community is just getting bigger. With its wide breadth of OS support, you can write apps for any of the big OSs, including mobile devices. There is opportunity galore, regardless of OS!
Conclusion
So where does all this leave us? Well, the haters and naysayers are wrong, and ASP.NET is a technology that you should try and get to know. After all, successful developers are polyglots—able to write applications in different languages for different platforms. So give ASP.NET a try. What do you say?


Nice blog post! I have just started learning C# and ASP.net. you guys should do more tuts on C# and ASP.net!
Dear Jeremy,
while I agree 100% with your opinion (and I have to since C# development is my daily business) I have two remarks to make:
* If somebody wants to use Windows in a virtual machine, it is not possible to use an OEM license, so for this special case one has to buy a boxed version – clear, as for OEM there is no physical hardware where it can be bound (= stick the sticker somewhere) to. MS requires that OEM licenses “die” with the hardware, which will not be the case with virtual machines so far ;)
* The argument about static typed bahaviour lacks a comment that the advantage of compiled types ends at the database if you use simple access methods. All DataTable objects will have rows which deliver object data. These data fields need typecasting and will produce nice runtime exceptions if cast to the wrong type. A remedy could be the introduced entity model framework which hides the database completely, but has other issues as far as I can see (Db inconsistency leads to unpredictable behaviour, and its unclear which SQL statements will get executed by accessing an entity).
* Try to feature Linq, its an excellent technology.
regards Florian
Hi,
I’m an ASP.Net vet, I love the language and platform, I’m a huge fan of Azure and cloud development, any of my own work I do in C#, but I am about to start Rails & Node.js, because ….
Unfortunately, the problem I see that can never be addressed, is the truth in the perception that “At some point you will pay”. Azure or even AWS Windows is 30% more expensive than linux. If you want the “right” tools, you inevitably have to fork out for VS pro or better. Even if you’re a partner, the free stuff runs out in the end. It’s a corporate ecosystem.
The problem is that any young student confronted with that reality and an effectively unlimited amount of time to learn, will always favour free & OSS because they’re looking at the long tale. That’s not news. That’s what happened 5-10 years ago and the market has shifted. OSS toolkits and platforms are now as advanced as anything MS can put out as they one company against an army of free contributors.
I am a student and I get Visual Studio 2010 and other Microsoft developer support software for free.
“At some point you will pay”
Now I’m encourage to try ASP.NET
You are full of shit.
I’ve coded in C++ and C# for years doing both server side and native application development with everything from .NET to GTK+ and If given the chance to write a web application in Ruby/Python vs C#/Java I would choose Ruby/Python every fucking time.
You completely miss the point of dynamically typed languages. Dynamically Types != Weakly Typed. Most dynamically typed languages are strongly typed. Your examples or run time type checking are completely irrelevant and almost never happen in dynamically typed languages.
Once I create an integer object it stays and integer object and I can rely on this always being the case. I am rarely unsure of the type of a specific variable and if you ever find this to be the case chances are you are doing something wrong.
The benefits of static typing are a phantom. It is much more important that you unit test your code to ensure minimal bugs in your source code. Static typing does NOT reduce the chances of bugs appearing in your code.
People who program in dynamically typed languages don’t necessarily dislike compilation or think this process is slow. Especially considering the constant running of test suites that most projects have included. There is always steps between deployment(local or otherwise) and testing. IMHO the ONLY benefits of compiling code is that it’s runtime speed is increased.
Runtime speed is no longer an issue in web development. The speed gained from compiling your applications is, if not insignificant, then most certainly not needed. Dynamic languages are “fast enough”.
The number one #1 reason people use dynamic languages is because they are blazingly fast. Yes blazingly fast… in development time which is where I spend all my money on my product. Another server is cheap compared to what I pay my programmers.
You go onto argue about how .NET isn’t closed because their source code is available. That is bullshit. You neglect to mention that .NET is released under the MS-RSL or Reference Source License which essentially means read-only access. It is the very definition of closed. Simply because I can browse the source does not mean the source is open.
You really have no fucking clue what you are talking about.
There was no discussion on strong vs weak (and I avoided the topic because as you said, some dynamic languages are strongly typed), but I think you’re confused as to what defines “dynamically typed.” In dynamic languages, any variable can hold any type of value at any time. So, yes, you could create a variable that contains an integer, but that variable will contain an integer only as long as you don’t assign a different type of value to it. So while Python and Ruby are strongly typed languages, that doesn’t stop you from reassigning a different type of value to a variable.
It sounds like you do understanding what dynamic typing is however your example of using run-time type checking is still full of shit. I’ve rarely if ever encountered runtime type checking on a project programmed in a dynamic language. Also it is pretty rare to see variables reassigned to different types that are not the result of type casting in the newest generation of dynamic languages i.e. Python/Ruby. I am not an expert on Ruby but I am on Python and I can tell you there are other mechanisms to deal with type mismatches during operations. Python exceptions for example are unchecked(meaning they don’t need to be rethrown) and throw a TypeError exception if there is a problem with an object’s type. (But even these are used less often then you would think)
In the statically-typed world there is this idea that dynamic languages are a sort of programming badlands where normal rules are thrown out and everything is a gunfight, or that dynamically typed languages are prone to more bugs. This isn’t the case at all. In fact I write less bugs in Python than I ever did in C++ or C. (My other expert language)
How do you account for your other inaccurate statements that I’ve pointed out? I’m particularly pissed about the bold-faced lie that .NET is open. It is not and you would do well to update your article to reflect this fact.
how do C and C++ compare to .NET framework?! you don’t even have to use C#. So, yes, i guess you don’t have any knowledge about it, yet along any master knowledge. Why would i use a child’s toy if i have a professional tool that i KNOW how to use… not 1% of it, but a very big deal of it. .NET is not about declaring variables, what are we talking about? That’s child’s play! Yes, if you want to make something where you can remember all of your variable types, then be my guest, use ruby, python or whatever. I work on project’s that are in development for years, and will be for many more years, where a lot of developers work on the same code, where there are thousands and thousands of variables, i would be crazy to use anything but .NET! And i don’t care what’s the source code behind it, i care about what i can do with it, and that’s way more than you’ll ever be able with those opensourceshitthings. i’m talking about advanced stuff, not declaring variables. And the price? if you can’t afford to use .NET then my friend, you should reconsider your professional career choice!
@Raymond Chandler III there are so many things factually wrong with your comment that I got bored trying to respond to them all. But I seriously doubt you’ve coded in Ruby, ever. I also doubt you’ve worked on a project with more developers than one. And you’ve certainly never worked on a project that would be considered “enterprise”.
All that aside, he wrote this article this article for you. You’re exactly the type of blind-hate-for-.NET developer he was talking about. If you don’t want to use .NET don’t use it, but you completely missed the point. You should scroll up and read it again until you get it.
“You really have no fucking clue what you are talking about.” Wow, the irony is astounding.
This is really a pithy attempt at trolling Jason but okay… I’ll bite. First off, there is nothing in my statements that are wrong or inaccurate. So you say I’m wrong, but rather than coming up with a decent argument or discussion as to why, you resolve to ad-hominem attacks. If you have nothing to add to an argument or discussion then why post in the first place?
Second, you are correct I’ve never touched Ruby. I’ve attempted to learn it several times, and each time it’s been a complete pain in the ass due to versioning issues. I don’t really consider the language very “stable” for professional work, but many do and it is use quite a bit in the startup space. What I do know and code in professionally is Python, which is very similar to Ruby as far as language features are concerned.
You say that you doubt that I’ve worked on a project with more developers than one. This is partially accurate. I work better by myself and are a many times more production that way. I am a generalist hacker so I do many things very well. My specialty is rapid prototyping and product research. That said, I have worked in teams in the past and do very well within a team structure.
“enterprise” development means many things to many people. I use the term in a derogatory manner to refer to small projects that have way to many developers thrown at it who use something like Java+Spring to develop something over the course of 3 months what would take me 2 weeks to accomplish(by myself) in Python. If this is the kind of “enterprise” you are referring to then yes…. I never hope to ever work like that. It is a useless existence.
I think you missed the part where I’ve said I’ve used C# and .NET for native development. Scroll up and read it again to make sure. I can’t have blind hate for something I admire and recognize the value of.
I can’t believe I actually responded to such a childish trolling attempt.
I couldn’t help but laugh.
So you’ve barely used Ruby, only work on projects on your own and think “Enterprise” projects are 3 month Java/Spring endeavors.
I’m betting you don’t have a formal Computer Science education and I doubt anyone could ever convince you that you’re completely ignorant and could learn a lot by humbling yourself.
As to your original argument, I think the only reason you’d choose Python/Ruby over ASP.NET/C# is because you have never used C#/ASP.NET.
men i love your ttaoriuls. especially the way you are doing them and how explanatory you are about all your steps. you should really consider creating a full set of tutors like this for beginners like us. there is nothing out there really… can’t get enough of it. hope you can create more stuff men cause this is really good shi* we want moooore :) thanks a lot
C# + SQLSERVER + LINQ + ASP.NET MVC. I don’t want to lose my time with anything else. Those products are so amazing together that they made me disgusted of everything else I tried to use in the past. Now my issues are purely on the client side (didn’t find the perfect JS framework yet, even though I love jQuery and ExtJS).
I agree that asp.net doesn’t deserve to be hated for any of the reasons you list. I love IIS7, and I love C#. asp.net, on the other hand, not that great. It’s a mistake to try and make a web site a stated application. Haven’t tried MVC, but I assume it’s just another, better solution to a non-problem. That “non-problem” being the fact that HTTP is stateless.
I do not hate ASP.NET I dont like it. ASP.NET hides all web under theirs infrastructure. If you want to try developing on web in .NET. I will recommend to you ASP.NET MVC, not just ASP.NET.
I’m not sure i know what expensive ASP.NET is, i’m not interested. I’m happy with PHP
And I’m happy with ASP.NET, On Mono/Linux and Windows.
:)
Nice post!
I work in ASP.net at the moment, because I thought that was the only language to get a ‘real job’ in, but am about to start a new job in PHP.
In my current role, I think I spend at least 1/4 if not a full half of my time compiling code, as Raymond Chandler III put it, “Another server is cheap compared to what I pay my programmers”.
I think quite a lot of the things you see as being fixed by compiling are done by an IDE for PHP, I use netBeans, and it warns me about things like if($a=$b) {} and, I think, if (1==1) (I think, anyway. That one is usually as part of a test for me, don’t think it’s ever gone live).
+ I can choose whatever IDE, or notepad++ or even remote in and use vi to edit and test php. On my iPad. On the train. gl with Visual Studio.
Yesterday I discovered that static classes in .net have constructors… what’s with that?
One other note, I also use git and we have multiple developers. ASP.net has one single file listing all of the other files – and that file is always a mess. PHP doesn’t have that problem.
I would like to not have to run up the entire code base each page request, however, asp does definitely have that going for it.
To support your argument about .NET being expensive, new devs can have Visual Studio Pro, Web Server 2008 and some other programs for free. After 3 years they ask you pay for it, however I think 3 years is a good amount of time for new .NET developers to decide if they want to continue on that path. Check out the link so see what they offer.
http://www.microsoft.com/web/websitespark/support.aspx?tab=ProgramDetails
Please give us more articles on the .NET-subject (L)!
Hi, I must admit that ASP.NET is an extraordinary technology.
I have been using it for some years and seen great results while using it.
Never the less I have also been using a RAD tool called outsystems, and
frankly I would use it anytime instead of using just plain and simple ASP.NET.
People tend to think RAD tools are limited in flexibility, and they are right, there is nothing like a visual studio .NET in terms of flexibility.
But the thing is, outsystems in not a RAD tool. It’s “Visual Studio 2018″ … on steroids.
And when you find something you can’t building using outsystems, you can extend it with C# !
I’ve need to extend outsystems like 1% of the time, most of the time it just works.
I can build a full app in minutes and publish it on the Cloud! in minutes on a farm of several servers running IIS and a MS SQL server or Oracle back-end.
Basically if you put a team of *two* guys using ASP.NET working on the same specs as me, and if they finish before me… YOU CAN FIRE ME.
That’s how good it is.
My 5 cents.
Just to Point out, the 800/s figure you gave for Stack Exchange, 4% of it is page views, rest is ajax calls and static content. I know ajax calls will engage the .Net server, but static content wont go through .Net Stack. so its basically 26page views per second, and some ajax request, which are ofc resource consuming but far less consuming then normal page views. Now handing that with 12 windows servers don’t look too staggering does it? Its great to favor your platform of choice, but giving biased full length articles on an education site is not good.
I used to turn to Net Tuts to find quality content, now i just find a lot of useless stuff like this.
Either the author is very young, very ignorant, or has a very short memory. Microsoft is evil.
I still remember Microsoft’s hamfisted attempts to dominate the browser space in the late ’90s, their desire to extinguish conventional TCP/IP (embrace, extend, extinguish was a well-known MSFT meme back then), their strong-arm tactics with PC manufacturers to force their software onto machines.
Internet Explorer is *still* a total piece of shit, slow to implement features other browsers have supported for years.
Why the hell would I give this company that’s been the source of so much misery any mindshare at all? Why would I want to help them reassert dominance in the web space?
One of the best things about the explosion in popularity of Ruby On Rails, PHP, and Python is that they’re not Microsoft technologies. They’re not owned by crude monopolists with no taste (see: Sweatin’ Steve Ballmer) and no sense of where the market is going (see; Sweatin’ Steve Ballmer laughing at the iPhone before its release).
The author attempts a pathetic jab at those of us who levy this charge against Microsoft by pointing out Google and Apple’s respective behaviors. A) it would be a mistake to presume that someone who hates Microsoft for their corporate philosophy is automatically a fan of those other two companies, and B) I don’t recall either of those companies floating plans to replace TCP/IP with their own fucked up proprietary technology.
And if you really want to look at a profound difference between Microsoft and Apple, just look at WebKit. The engine for Safari and Chrome was developed by Apple, released as open source code, and is light-years beyond where Microsoft’s pathetic excuse for a browser is. Why isn’t Microsoft ending their development of web browsers? Why aren’t they using WebKit or Gecko?
Microsoft is a dysfunctional behemoth that is slowly watching its monopoly disappear. If at some point they fragment, and .NET becomes another choice of open-source technology that I can freely use after weighing its merits against others, then maybe I’ll consider it.
It’s telling that the biggest fans of .NET are corporate IT types who basically exist to justify each others’ bloated salaries. Out here in the real world, many web developers are doing just fine working with open source.
You’re cute.
In the meantime, let’s not forget about Apple with its overflowing patents trolls stopping innovation whenever they can, and Google systematic attempts to give you things for free but make you either pay with ad, or required service (gmail) for its tools.
Microsoft failed to rule the world, but don’t be fooled, nowadays, Google or Apple are as much evil if not more as Microsoft.
Open Source is not a rule them all solution either.
Thank you so much for your caricatural comment.
“It’s telling that the biggest fans of .NET are corporate IT types who basically exist to justify each others’ bloated salaries. Out here in the real world,”
You have several things that are quite incorrect but I’m going to point out this one. Out here in the real world we use what ever tool works the best(or whatever tool my boss gives to me). Like lossendae
said “Open Source is not a rule them all solution either.”
I love using .Net, I also love using Ruby in some cases. It all depends on the project I’m working on.
“This is a simple PHP function that adds two numbers together. In order to ensure predictable results, checking if the supplied values are of the appropriate type is imperative (admittedly, the type checking here isn’t complete; there are numeric types other than integer); ”
afer seeing the “eqivalent”… thats where i stopped reading…. dumb dah di dah.
I do agree .Net is a great framework… but being an average scaled developer i would say php still rocks!!! easy to install and can find several frameworks to match criteria. i have no personal intention to criticize Microsoft’s framework but i would say Microsoft must release a version of .net for average scaled developers who cant afford to waste time installing heavy applications and frameworks.
PHP
function add( int $a, int $b)
{
return $a + $b;
}
If you pass !int you will get “Catchable fatal error: Argument 1 passed to add() must be an instance of int, double given”.