Hi, I'm a web developer currently using mainly JavaScript and HTML and I use various bits of backend PHP or servlets when I need to. I get the impression a lot of people are using ASP.NET and it seems to have a big community and lots of re-usable components and widgets. Should I make the switch to ASP.NET? What else should I take into consideration, for example, software costs, training, learning curve...? Will I be able to use my existing JavaScript assets in ASP.NET - what exactly is ASP.NET AJAX?
ASP.NET is quite ugly, in my opinion. There is better solutions - using MVC pattern like Castle Monorail or ASP.NET MVC.
You also might consider using Python Django and Ruby on Rails. RoR has probably most smooth learning curve out of three (Django is somewhere very close to RoR too).
The answer here is very dependent on your environment and needs. If you are unfamiliar with Microsoft programming, I think the learning curve is very high. For simple MVC applications, Ruby on Rails and Django are great, but ASP.NET MVC is pretty awesome as well, as this site demonstrates.
If you already know some PHP and just need a framework for some heavier server-side work, take a look at CodeIgniter
Lots of big companies have ASP.NET due to their long heritage of Microsoft programming. I don't see many school teaching it. A lot of startups are going the Rails way. I've picked up both Rails and Django with little effort, and have been very frustrated by ASP.NET, but have not tried ASP.NET MVC. I've also done a lot of java server work in Tomcat.
Unless you have specific needs, go with whatever will be simple to deploy and maintain in your hosting environment, because those headaches are harder to deal with than just learning a new language or framework.
These are my opinions. There are alternatives to buying Visual Studio and deploying on Windows...but I wouldn't recommend them.
1. Operating Systems. Do you run windows? If you don't, you won't be able to develop in ASP.NET.
2. Pricing. If you do run windows, then you'd have to pay for at least ASP.NET Visual Studio, which costs $549 on amazon.com. Then, if you want to deploy it to your own server, you're going to have to pay licensing costs for Windows Server 2003, and if you want to use Microsoft SQL Database, you can pay thousands of dollars. Edit: commentors have noted a few pricing options in the comments. Visual Studio & MSSQL have express versions. You can use an open source database such as MySQL or PostgreSQL. You can use Mono to deploy to a linux server for free. You don't even have to use Visual Studio to write applications - but I don't recommend that. If you are going to use a bunch of open source solutions to most of the Microsoft Stack because of pricing, I recommend just moving away from ASP.NET all together to an entirely open-source alternative.
Will I be able to use my existing JavaScript assets in ASP.NET - what exactly is ASP.NET AJAX?
Javascript works the same in ASP.NET as any other framework, pretty much. ASP.NET WebForms (the other option besides ASP.NET MVC) muggles the Id's of any HTML entities that are dynamic at all (labels, grids, and whatnot), so you would have to use class selectors instead of ID selectors (which happens in a lot of other frameworks).
ASP.NET AJAX is a bunch of Javascript code that makes it easy for you to use AJAX in your ASP.NET app - you don't have to use it, but it makes it easier to call c# functions in your javascript and whatnot. It mostly just enhances existing functionality in ASP.NET.
Reasons to use ASP.NET
- You already run windows.
- You are worried about scaling.
- Ease of use. (I've spent a lot of time on open source java projects being confused because you are using a bunch of different open source projects to get the same functionality that's contained in the Microsoft Stack - totally do-able, but you might spend more time integrating and learning about all the different open source projects.)
- The availablity of microsoft support to help with any part of the stack.
- Commmunity support - everyone runs the same stack, mostly, so it's easier to figure out solutions to common problems.
Career reasons to learn ASP.NET
Lots of large corporations use ASP.NET - I think mostly just because they prefer Microsoft Solutions in general, so there are plenty of jobs. If you want to work for yourself, or work for smaller companies, it makes sense to go with a free framework.
It doesn't seen like you have any of these needs, really, and I would suggest keeping with PHP and get a little bit more serious by starting a side project that uses something like CakePHP, a open source PHP framework.
Yourr backend is php
Why don't you try CodeIgniter, or CakePHP? So you shouldn't switch to ASP.net
Python Django and Ruby on Rails are better
For reusability you should take a look at Seaside. DRY done right.
The answer(s) to these questions are very subjective. It depends on several factors especially you current skillsets and experience etc. If you have zero OO background, it could be a little tough in the beginning.
Q: Should I make the switch to ASP.NET?
A: Google around for an overview, look at some examples and read some reviews. You should be able to judge for yourself.
Q: What else should I take into consideration, for example, software costs, training, learning curve...?
A: The cost can be Zero (almost) if you are using the free express editions of the IDE. You can even try MONO/SharpDevelop etc. You do not need to go for courses to be competent, thought they might proabably help. Deployment to production servers is another matter.
Q: Will I be able to use my existing JavaScript assets in ASP.NET - what exactly is ASP.NET AJAX?
A: Yes, you should be able to use most if not all of your current javascript assets. Some tweaking might be required. As for ASP.NET AJAX, refer to my first answer.
Much depends on your experience, and I can only talk from mine - I'm an experienced PHP programmer but have been working on an ASP.NET project for the last month or so. I've had previous experience coding in VBA and the like but still found ASP.NET a huge learning curve, and I don't think the documentation or community support is anywhere near as good as what you get with PHP. I also don't think there's anything you can do with ASP.NET that PHP can't do for you, so my advice would be to stick with PHP.
Career-wise there seem to be more ASP.NET jobs available, but in terms of purely which is better from a developer's perspective, I'd go for PHP.
This seems more like a religious debate than a technical question, but I need something to pretend I'm busy until the coffee kicks in.
I've spent a few years writing windows apps, then a few more developing web apps using all sorts of Linux-based back-ends (including PHP, which was probably my least favorite), then a few more using asp.net. I spend pretty much all day every day hooked up to a group chat client watching friends who happen to be consultants bounce ideas around and help each other solve problems with Microsoft-based web development tools.
I won't pretend to be an "expert," but I do have enough experience to have an opinion (and this is absolutely nothing except opinion). Even though it's fairly incoherent. Like I said...coffee.
Lots of bigger companies use asp.net, and several of them are moving to sharepoint (which is nice for what it does, but MS is pushing it as the answer to all questions, which it isn't). It seems like more are using Java [for now]. If you're looking to get a job working on a big team, for some big corporation, learn one or the other (or, better yet, both).
Personally, I'd never use PHP for any sizeable project, because it doesn't fit well with the way I think. There are plenty of other people who think in a different way than I, and they manage to handle large projects just fine [in PHP].
The MVC version of asp.net is pretty much definitely (well, as definite as you can get...you never really know) the future of web development on a windows platform. There are all sorts of other options (like Java), but not really.
On a Linux (or BSD) host, of course, all the other options do become perfectly realistic. For any given project, I'd probably choose almost every other one that's been mentioned over PHP, but that's just my prejudice (well, that, and I already know most of the other languages involved, except smalltalk, which I'd like to). The other people writing answers seem to have covered most of the obvious ones, so I won't bother repeating what they've already written.
It's my impression (probably wrong) that classic ASP was sort of an answer to PHP. Or maybe vice versa. Or maybe they just evolved side by side. The two languages are very similar. They're great for small, simple sites.
Then there's java, which pretty much seems to rule the roost (for now) when it comes to huge, corporate sites.
It seems to me that MS realized they were losing the race against Java and PHP, so they brought out asp.net as the answer to both. It's much bigger than classic ASP, more involved, and takes a lot more effort to get right for small sites. But it's [arguably] easier to maintain for big sites (for some definition of "big" of course). And (from my perspective) it doesn't seem quite as terrifyingly overwhelming as java [I have pretty much zero experience there, BTW...I read a book once].
It's also added several layers to hide all the nasty http details and let developers pretend they're doing windows development. This can make life easier for experienced windows developers, but some things that are dead simple in PHP can be incredibly frustrating [in asp.net].
Asp.net ajax was pretty much dead on arrival. It isn't too horribly broken, but it leaves a lot to be desired. MS seems to have switched horses to jquery. There are other javascript frameworks worth looking at (yet another religious debate), but, personally, I don't think asp.net ajax is one of them. (And, usually, I'm all about "check out all the options, compare the costs/benefits, and make an informed decision for each particular situation").
You might or might not be able to use your existing javascript with asp.net. I'm going to guess "some, with tweaking," but there's really only 1 way to find out.
Just my 2 cents worth. And, really, not anything that someone else hasn't already answered better.
If your career aim is to get into a large corporate environment, then learning ASP.NET will not be a bad choice. I do not want to get into what is better and will focus only on benefits of ASP.NET.
The benefits of ASP.NET AJAX is Ajax—without requiring mastery of Ajax technologies. ASP.NET AJAX can manage Ajax functionality for you in much the same way that ASP.NET manages HTTP functionality, such as postbacks, state management, and the client script required to make ASP.NET all "just work.
On the server side, ASP.NET AJAX works as part of ASP.NET, taking advantage of all its inherent features. ASP.NET AJAX controls can interact with other ASP.NET controls and components and participate in the page life cycle. It can also be linked to sessions, authentication, and profiles, allowing you to take advantage of these types of capabilities on the client. Finally, with ASP.NET AJAX and ASP.NET, you can interface directly with web services.
Other advantages of .NET framework itself are
The .NET Framework allows developers to build the types of applications that users demand. With a common set of system tools, they will be able to write code once and have it delivered to a wide range of devices.
The .NET Framework wraps up interfaces into an easy-to-use object-oriented structure. This accelerates the learning curve for new developers while allowing advanced developers to create Web applications in a fraction of the time they could before.
Installations are much simpler, so time-to-market will diminish for newly developed applications.
Also, take a look at the new ASP.NET MVC. That is a whole another discussion.