Resources for WinForms/WPF dev trying to learn ASP.NET - asp.net

What are your best resources for a WinForms/WPF developer to come up to speed on ASP.NET? Will it take a complete paradigm shift for me to learn how to use ASP.NET or will it be a slight adjustment?
I will award the answer flag to the post with a resource that gets me up to speed in the shortest amount of time. Downloadable code and code examples would be most helpful.

The Official ASP.NET Site has tutorials and videos
4 Guys From Rolla is a great resource, as is Scott Guthrie's blog.
W3Schools has tutorials.
[There is quite a bit of a shift towards ASP.NET MVC, so I would suggest you look at that]

The are lots of resources on the web but I would definately recommend the Learn section of the ASP.NET Community Site: http://www.asp.net/learn/
I would also recommend Professional ASP.NET 3.5 SP1 Edition: In C# and VB from Wrox.

Related

Need a reference site for asp.net in c#

i need a any site in which i can get a basic information of asp.net and how it is work with c#.
Microsoft is a good place to start:
http://www.asp.net/
http://msdn.microsoft.com/en-us/vcsharp/aa336766.aspx
http://www.asp.net/aspnet-4/videos
W3 schools
http://www.w3schools.com/aspnet/default.asp
http://www.fincher.org/tips/Languages/csharp.shtml
Google User Groups for .Net
4GuysFromRolla is a really good ASP.NET site. It has better tutorials and examples than Microsoft. No matter what you are trying to do they've probably got an example of how to do it.
Microsoft's MSDN site is the best one to go to for reference and definitions of either ASP.NET or C#.
w3schools while not very in depth or advanced is easy to understand and will give you the basics. They only delve into ASP.NET 2.0 though so if you are looking for 4.0 resources I would look at the other sites.

ASP.NET Web-Application Architectures / Patterns

Does anybody knows good, short and slim tutorials, which describe actual/modern web-application architectures / patterns (especially for ASP.NET based (classic and MVC) applications (maybe also with embedded Silverlight components) ?
How would you you design today an ASP.NET application which uses different datasources (databases, services,...) ?
Background: I has been away a couple of years writing web applications, and I want to start now again. So at the moment I am a little bit unsure, how to take off and find the right starting point.
If you're interested in MVC I'd suggest starting out with the offical MS tutorials:
http://www.asp.net/mvc/tutorials
There happens to be an upcoming free online conference on ASP .NET MVC that may interest you: http://mvcconf.com/
Check out Sharp Architecture:
http://wiki.sharparchitecture.net
there are some articles that describe how & why it's architected the way it is that might help you with your project.
You can take reference of following -
http://mvcmusicstore.codeplex.com/
http://nerddinner.codeplex.com/
You have many questions embedded in one :)
short and slim tutorials = For getting architectures/patterns explanation is always bit more extensive since original developer/reviewer explains the design decisions or thought process of selection of components used.
I would like to recommend P&P's Application Architecture Guide (http://msdn.microsoft.com/en-us/library/ff650706.aspx) for reference architectures.
Real World Coding Examples: There are lot many on GitHub. It really depends on the type of app you are taken for development and business domain.
Some pointers: http://www.asp.net/web-forms/samples, NopCommerce,http://www.magelia.org/,www.teamlab.com etc. There is lot of good codebase which is working and available on GitHub etc.
PS: Start with www.asp.net Best resource!
Hope this helps.

How to start a new ASP.NET MVC site?

I'm a experienced .NET developer, but I havent done much webdevelopment and particularly not a new site from scratch.
Now am I thinking of building a site for one of my hobbies. I realize that much of the functionality I need has already been bulit and hopefully released as opensource. My wish is to find a skelletton for my site with the basic functionality to bulid upon. That will leave the specific and fun parts to me....
I wishlist:
- One logon for the site.
- User profiles.
- Possibility for users to contribute with articles, pictures, links etc.
- Leave comments for articles.
- Generate feeds.
- Build the site using ASP.NET MVC
Can anyone point me in the right direction? Where do I start?
I hesitated writing this answer because it might come across as flippent or deliberately unhelpful.
However, I cannot recommend highly enough the tutorials and examples on the MVC site; especially the NerdDinner example app and walkthrough (not sure if it's been updated for MVC2 though).
As developer for developers ;) check this http://kigg.codeplex.com/ I think it's exactly what you need. Live sample here dotnetshoutout.com
Enjoy :)
Hi Malcolm what you need has been implemented many times. If you need to start from scratch for the learning experience I would recommend the ASP.Net MVC Membership Starter Kit (http://mvcmembership.codeplex.com/) it would handle user accounts and profiles for you (read up on ASP.Net membership if you are unfamiliar with it).
If you don't need to start from scratch I would recommend looking at a CMS or blogging system depending on your specific requirements as there is no point in reinventing the wheel unless you really have to or want to learn.
Edit
Have a look here:
http://www.microsoft.com/web/gallery/Categories.aspx?category=Blogs
and
http://www.microsoft.com/web/gallery/Categories.aspx?category=ContentMgmt&appid=BlogEngineNET
I am not up to date with MVC blog engines but I know there isn't too many CMS's around that would compete with more mature ASP.Net alternatives.
I hope this is helpful.
Thanks,
B
check out http://www.orchardproject.net/. But you may find some liter alternatives for your specific needs. Or you can possibly combine a couple of codeplex projects to get to where you want to be.
As stated above I would recommend going through the nerd dinner tutorial again. Also the nerd dinner code hosted at codeplex has been updated to Asp.net MVC 2.0, and is a great reference to many of the new features. Burt mentioned the MVC Membership Starter kit (http://mvcmembership.codeplex.com/), I have personally tinkered with this, and it saves hours upon hours of time by automagically implementing authentication and role management built on a standardized db schema easily generated by a tool found in the framework 2.0 files somewhere.

Prerequisite knowledge for ASP.NET MVC

After being frustrated in my attempts to learn the arcana that is ASP.NET, I decided to try ASP.NET MVC.
I have extensive experience with C# 2.0 doing just about everything (WinForms, Windows Services, remoting, ...) except ASP.NET . I've been writing PHP for even longer than I've been coding .NET. With all of this experience, I thought I was ready for ASP.NET MVC. I now see I'm learning the following simultaneously and having a bit of a hard time with it:
the MVC pattern in general
ASP.NET
ASP.NET MVC
.NET 3.5.
I'm currently about 1/2 way through the NerdDinner free book chapter. I don't feel completely lost but I do get the feeling that I'm not catching on to as much as I'd like to (due to the fact that I'm learning 4 things at once -- sometimes it's not clear which skills are from which abstraction layer).
What prerequisite knowledge would you recommend for ASP.NET MVC? Any/all of those I listed above? Others? Or maybe I'm just slow and most people would be fine doing what I did.
I have been an ASP.Net developer for just 3 years now. I got a project from a friend and decided to develop it using ASP.Net MVC to learn this new stuff.
I must admit I felt lost in the beginning as well, but then I saw some very interesting articles on the ASP.Net/MVC site. At the bottom are 7 iterations which will give you a very detailed of what you are doing while you are doing it.
I used the Products example they have there and applied sortof the same to my own project.
After all the iterations, I now feel like I have a very good base to start learning the more advanced MVC implementations. (JQuery plugins/Ajax/...)
http://www.asp.net/learn/mvc/
I think some basic understanding of ASP.Net is a base requirement. If you have that, you should be able to get through this with just a little bit of motivation.
"MVC pattern in general" - no need but useful.
ASP.NET - also not necessary.
.NET 3.5 - yes. It will be your working tool, you should master it.
Very useful would be the understanding of multi-tier architecture since this time you will have to think first about how you organize your application, opposite to direct hacking with controls in WebForms.
Also you will not avoid knowledge of HTML/CSS, maybe JavaScript.
Just don't be scared. Do it one step at a time and you will get it. Just don't read too much. Practice it.
Lots of highly useful tutorials are to be found here: ASP.NET MVC Tutorials
Also read blogs from ASP.NET MVC "parents":
http://haacked.com
http://weblogs.asp.net/scottgu/default.aspx
http://www.hanselman.com/
http://stephenwalther.com/blog/Default.aspx
I have a similar background. I have used .Net/C# since its inception, but all system related, no web experience. About 8 months ago, I decided that I wanted to learn about the web and decided that for me ASP.NET MVC seemed like the right way to go. I don't feel that my lack of ASP.NET experience was too much of a hindrance. I used the http://www.asp.net/mvc/ site as the center for my learning. All the videos are good, plus the tutorials and all the sample projects. I have downloaded most of them and have enough familiarity that when I can't figure something out I go to one of the downloaded projects with a similar requirement and look to see how it was coded. Knowing no web technology, I also ordered books on HTML, CSS, JAVA script, AJAX and Jquery. For me the best way to learn is to develop a project, so that it what I did. Most of the authors of the new MVC books also have blogs with lots of good information. When I started to learn about MVC, the MVC books hadn't been published yet, but I am sure there are some good ones out there by now or that will be available soon.
I have enjoyed the new experience and have learned a lot, I think the new technology is great. Good Luck!
I recommend getting a book on ASP.NET MVC and working through the examples in the book. Don't worry too much about the history of the MVC design pattern or it's 1979 roots at Xerox PARC. I wouldn't bother reading much more about the actual MVC pattern than this simple article from MSDN: Cutting Edge: ASP.NET Presentation Patterns
I recently finished Steve Sanderson's Pro ASP.NET MVC Framework and I can recommend it. It has a multiple chapter sample application that gets you started quickly with ASP.NET MVC and then 10 or so follow-up chapters that cover the relevant topics in depth (Controllers, Views, Security, etc). The book has a strong focus on unit testing and dependency injection and also covers basic object relational mapping with LINQ to SQL. There is also chapters that cover integrating jQuery with ASP.NET MVC and how you might utilize framework components (authorization, membership, roles, personalization, caching, etc) from traditional WebForms applications.
There are a number of positive reviews on Steve's Blog which is also a good source of additional ASP.NET information. Amazon.com has a couple of positive reviews on the book (I need to add mine when I get some free time). You can also preview some of the book over at Google Books.
Some of the other books that are available now or available shortly are:
Wrox: Beginning ASP.NET MVC 1.0 --- Both authors
Keyvan Nayyeri and Simone Chiaretta are active ASP.NET MVC bloggers. There is a sample chapter on testing for download here. I've read that it should be available at the end of June 2009?
Manning: ASP.NET MVC in Action --- This book is by Ben Scheirman, Jeffrey Palermo and Jimmy Bogard. They all have interesting blogs that cover ASP.NET MVC related topics. If I heard correctly, this book should be out in August 2009. You can pre-order the book (MEAP = Manning Early Access Program) here and get access to the first 11 chapters (unedited or loosely edited I think). The CodeCampServer reference application that complements the book is pretty intense and covers using nHibernate (ORM), Castle Windsor (DI / IoC), DDD, unit, integration and regression testing.
Wrox: Professional ASP.NET MVC 1.0 --- This is the book that accompanies the NerdDinner sample application and reader that was made available a while back. It's authored by some pretty smart Microsoft guys: Rob Conery, Scott Guthrie, Scott Hanselmann and Phil Haaaaaaaaaaaaack who have the inside information on why certain decisions were made with the framework. Available now.
Packt: ASP.NET MVC 1.0 Quickly --- The author Maarten Balliauw has a pretty good blog that talks about various ASP.NET MVC issues including testing. Available now.
Sams: ASP.NET MVC Framework Unleashed --- Author Stephen Walther is responsible for a number of popular ASP.NET Unleashed books from the early 1.0 days of ASP.NET and now he is writing a book on ASP.NET MVC. You can check out his blog for sample content from the upcoming book and other ASP.NET MVC related posts. Amazon says this book will be available in July 2009.
Wrox: ASP.NET MVC Website Programming Problem Design Solution --- This appears to be a follow-up to the book Wrox: ASP.NET 2.0 Website Programming: Problem Design Solution and welcomes back author Marco Bellinaso and introduces two new authors to the project Nick Berardi and Al Katawazi. The sample application for the book is the Beerhouse CMS and is available for download on CodePlex. The book's website says that it will be released in June 2009.
I think once one wraps one's head around the idea that MVC uses routing to direct requests straight to classes (which use a model for connections and a view for display) rather than showing "actual" pages, the concept of MVC in a web application really presents itself more clearly. With the 'difficulty of concept' out of the way, it's a lot easier to consider those attributes and make a decision whether MVC is suited to a particular application.
edit -- having said that, if I were new to ASP.NET, I would probably tackle the forms version first and get a good understanding of events, postback, and the methodology of that system before going into MVC because ASP.NET MVC is really handled on top of that system.
edit 2 - I think I got voted down before finishing my edits :-(
This is a good introduction from Martin Fowler. He talks in detail about GUI Architectures.
Start reading some material on the following topics and they will really help you gear yourself towards any MVC in general. Here are some topics that you can look up online:
Routing.
The MVC Pattern.
Controllers and Actions.
Mapping parameters.
ActionResults.
Error handling.
Action filtering.
Passing data to a view.
HTML Helpers.
View rendering extensibility.
Using jQuery with ASP.NET MVC.
Best practice tips for views, controllers, and models.
MVC Anti-patterns.
If you don't already know Webforms, then stick to learning just MVC right now so that you don't confuse yourself. Webforms is a useful thing to know, and since you know Winforms already, it shouldn't be too hard to learn afterward.
MVC and Webforms both work under ASP.NET, so a lot of things you'll learn while playing with MVC will carry over to Webforms.
It might help to approach Asp.Net MVC from a different angle: Read the Agile Web Development With Rails book, follow along (implement using Rails), and try to implement a project of similar scope to what's in that book in ASP.Net MVC.
You'll pick up Rails quickly (a week or two of hacking around a couple of hours a night), and the explication of the conventions of Rails will guide you into a mindset that aligns fairly closely with the Asp.Net MVC way. It'll probably help you understand the motivations for MVC along the way, and you'll certainly have opinions about how things "should" work in Asp.net MVC.
I would spend some time on ASP.NET first before learning ASP.NET MVC. Remember, ASP.NET MVC is based on ASP.NET. Some things from traditional ASP.NET won't be used with the MVC model (user controls, (ASCX and ASPX files)) but it is a good thing to still understand these. If you want to focus on MVC, first learn ASP.NET but do not spend time studying the common controls or databinding.
The rest of ASP.NET is still useful (HttpModules, HttpHandlers, the web.config file, the membership provider, etc) when you're doing ASP.NET MVC, and I'd say likely a prerequisite to really using ASP.NET MVC well.
That said, there is a lot more work for ASP.NET out there than ASP.NET MVC. Some employers are looking for people who know MVC, but they are mainly doing that as they are looking for people who are passionate about learning new things. My concern with ASP.NET MVC is that I don't see how to integrate it with traditional ASP.NET applications. The reality is most jobs out there involve working with an existing codebase, not starting from scratch.
I'd been following ASP.Net MVC pretty much from the beginning, and I have to say, I love it. Combined with Unity (or another DI framework) it just flows nicely. I've always liked a certain separation of concerns principle anyhow, and favored ASP.Net over PHP (and classic ASP). I didn't always like the control pattern of ASP.Net though. MVC fits much better. And with Json() and PartialView() for return types interacting with jQuery.getJSON() and $("#mydiv").load() is very simplified on the server-side. It also works well when following SOLID Design principles...
It does help to have a solid understanding of HTML and JavaScript (AJAX, DHTML) for more interactive points. It also helps to think in terms of the MVC pattern, or not thinking about cluttering your controller and your data.
One thing I don't care as much for, is the lack of a built in skinning system, for multiple skins on a web-app. I've come around this, and having the source really helps. I would say as other have suggested, follow the blogs (and read back) of
Phil Haack,
Scott Guthrie, and
Scott Hanselman. They all have vital information. Beyond this, as also mentioned, the demos on the ASP.Net MVC Website are very good.
Apart from what others have recomended I would suggest the following two books:
Spring in Action : It's not ASP.NET MVC, it's about Spring, but the foundations are similar and it's really well written.
Pro ASP.NET MVC 2 Framework : It explains the concepts in an easy to follow way, and it helps introduce DI into ASP.NET MVC.
All previous post are so cool :) but i want to add my own view. Without some base of asp.net runtime mechanism you can't write a good app. This info you could get from dino esposito book(he has two books about asp.net 2.0 - basic and advanced level) in basic level - there is one chapter about processing incoming request - you could read only this chapter.
If you know what is httpapplication, httpruntime, request, response etc. just skip my answer.
I know from my brief time with a Ruby on Rails job, coming back to ASP.NET and working with MVC it was easy to apply what I learned from RoR to ASP.NET MVC. Truthfully, ASP.NET MVC is actually just about the VC part and not much about the Model since ASP.NET doesn't have to be very REST based whereas RoR practically enforces it.
The problem I find is trying to get people to learn correct conventions of MVC when they are first learning it by coming from ASP.NET itself. Like others have mentioned, it might be a good idea to learn a true MVC platform (in this case RoR) because trying to apply what you know about ASP.NET to a MVC architecture. A good place to start with RoR is http://railsforzombies.org/ It's also kind of fun and will give you the basics for what really goes where in the ideal REST MVC scenario. After that apply what you know to the MVC for ASP.NET.
The very first and basic thing with ASP.Net MVC is the Routing concepts. LEarn this well first. You can also go throught System.Web.Routing Namespace on getting some more idea on this. Routing is just telling the IIS that is there is a request for a particular extension then redirect to this handler.
The next thing would "Convention over configuration". For MVC you need to have a particular folder structure like Controller,Model and Views .Nothing more mystery here.

What are other ASP.NET web applications that are as well done as StackOverflow?

It's my understanding that StackOverflow (SO) was built using ASP.NET. What surprised me is it's so well designed and well implemented. Without knowing much about the internals of SO, here are my observations and educated guesses:
SO appears to be highly scalable.
URLs in SO are friendly.
It appears that SO does not contain a bunch of controls as most ASP.NET apps I've seen.
Judiciously and effectively use of Ajax requests, opacity animation, etc. Viewing source tells me SO is using jQuery.
SO runs on all major browsers (that I've used and this list includes IE, FF, Chrome, Opera).
Edit: 6. Comet-like feature: As you type your answer, if there is any other answer posted, you get the notification. If you choose to load it, of course only a partial page refresh is done and your answer remain intact. Have yet to see this in any other ASP.NET app.
So my questions:
What are other ASP.NET web
applications that are as well done
as StackOverflow and what are their
features that you like?
Can you share
about some more details about SO,
for example is SO built using
ASP.NET MVC or something else?
SO is built using ASP.NET MVC as explained by Jeff Atwood and his team in this podcast organised by Scott Hanselman
Listening to the podcast would be worthwhile.
One surprising element about SO which was revealed in the podcast is that SO runs on a single server (IIS & SQL Server). I was surprised by this.
ASP.NET Forms allows developers to build UIs in much the same way as .NET Windows Forms.
The whole idea was that a developer that knew how to build a 'Fat Client' Windows form could transfer those skills to ASP.NET forms. ASP.NET forms even allowed developers to pretty much put code on the same set of control events. The developer was sheilded from having to have any knowledge of HTML, HTTP, Javascript etc.
Unfortunately this resulted in large POSTs containing monster viewstate being generated frequently and hence a poor user experience. This is what has given ASP.NET a bad rep. In reality its the original ASP.NET Forms that should have the bad rep.
ASP.NET MVC, amoungst other things, embraces the nature of HTTP rather than trying to hide it. AJAX and JQuery are also features of MVC which add to the overall result being better.
That said having a great tool is useless without great vision, design and skill, the SO team clearly have those in abundance.
Orkut.com - A social networking site by google uses ASP.NET
SO was build with ASP.NET MVC. Jeff hired good developers, had a good vision, and ran his screens through a real designer.
Myspace.com uses ASP.net, which proves the scalability of the platform in general. You can also learn a lot about stackoverflow itself from reading the stackoverflow blog and listening to the stackoverflow podcasts.
Many of the things you point out about are actually due to the use of ASP.NET MVC. Pretty URLs come out of the box, non-standard controls, well nothing comes out of the box with MVC so you have to reinvent everything :), and finally the AJAX is pretty much a requirement for ASP.NET MVC if you want to do anything intelligent with it.
ASP.NET MVC alone does not account for the things which makes StackOverflow truly successful that's all down to the idea, execution, and the fact that Jeff and Joel combined garners a huge following on the net.
You can also learn quite a lot about the development, planning(!), etc in the two HanselMinutes podcasts on SO:
StackOverflow uses ASP.NET MVC - Jeff Atwood and his technical team
Behind the Scenes - StackOverflow and Jeff Atwood - Part 2
Available in numerous audio formats, as well as transcribed.
ASP.NET creates websites limited only by the talent of the developers.
The same can be said for virtually any framework.
That said, Windows Server/IIS/.NET is a hugely scalable concept, as we serve far far more traffic than SO on a ASP.NET site (Then again, we have 32 servers).
As mentioned in one of the answers here, myspace.com uses ASP.NET (as far as I know it was written in ColdFusion and used BlueDragon for .NET).
One other site is plentyoffish.com (60M hits per day).
If you want to read more about scalability see http://highscalability.com

Resources