srachit wrote:Just another question I'd like to add, do you have to have a windows server for it to work?
edit:
another question is it posssible to do C# programming on linux. I hear very good things about it, but because I'm mainly a linux based user these days I'm not sure if I can still make apps using C# or is it like objective c confined to the apple ecosystem
Yes, as Xaos said, there is Mono an Wine. Mono has a...sketchy...track record. It is always several versions behind official .NET (I think LINQ really threw Mono a curve-ball in .NET 3.0), and some .NET devs (such as Alain and myself) hate it. I would never load a production site onto Mono.
Xaos wrote:How would you set up design and whatnot? Are there specific things to use using .Net or would you just use the normal HTML/CSS/JS/etc.?
Ahhh, this is where ASP.NET splits. Time to take a history lesson to understand two of the three forms of ASP.NET:
Back in the year 2000 when .NET was being designed, not many devs actually knew web development that well. Web devs were in a tiny minority of all devs, since "web apps" were a pretty new thing, and they were seen as a bit of a novelty since really only PHP had done decently in that space at that time (ASP Classic did not fair as well) and Javascript was mostly being used to add a snow flake effects to pages and was considered a toy language.
Part of the .NET Initiative was to bring web apps to the world of Windows Forms developers. Thus marked the creation of ASP.NET. It was centered around the idea of "Web Forms", which were very similar to Windows Forms, where you placed intelligent controls on a form and wrote a Code Behind in C# to react to events.
Fast forward eight years. Some devs who cut their teeth on web forms had since learned web development in depth through such MVC frameworks as Ruby on Rails. Javascript was also claiming the throne from its humble beginnings to the premier programming language of the world. But ASP.NET Web Forms write most of the JS for you, and many devs were frustrated by the "hands off the client" methodology of Web Forms. They wanted to write their own clients to create rich Internet applications with HTML, Javascript and CSS. Thus marked the creation of ASP.NET MVC.
ASP.NET MVC is built on top of the existing core of ASP.NET, but builds it up in MVC structure, following the lead of popular frameworks such as Rails, Symfony, Zend, etc. You build the client-side yourself in HTML, JS and CSS with the help of server-side helper classes as part of the framework.
There is another, newer form of ASP.NET called ASP.NET Web Pages which won't be treated here since it is designed to offer a .NET solution for small, one-off webpage apps that one would typically use vanilla PHP for.
Neither ASP.NET Web Forms or ASP.NET MVC is better than the other. Nor is MVC a replacement for Web Forms. Devs of different backgrounds will find they cotton to one form or the other. Web Forms has also done a
ton to enable rich client-side scripting alongside the intelligent Server Controls (particularly from .NET 4.0 and on). Devs with a .NET background will likely have a better experience with ASP.NET Web Forms while devs from a PHP, Ruby on Rails, etc. background will likely fair better with ASP.NET MVC.
This is the way I personally look at it: If you are designing intranet sites that will be connecting to company databases to do data manipulation, go Web Forms. The Server Controls will do a lot of this for you out of the box. If you are making an app that has heavy client-side scripting, or you are making a SPA (Single Page Application), go MVC. But that is just my opinion, as I come from a background of PHP for the most part (I actually started before PHP in .NET, but never did any web development with it back then).