Getting familiar with .NET - What's the best way? - c#

I have a friend of mine who owns his own software consulting business. Most of the stuff his employees work on is .NET related development. He's been out of actual development for many years, and has been focused on building his business. He asked me the best way to get familiar with the whole .NET platform and development under .NET. Is anyone aware of a video training series, or something similar, that's designed to get someone up to speed on all aspects of .NET?

This is the obligatory "port another project into .NET" answer.

My guess is that he doesn't have to cover all of .NET, but a great way to get up to speed with both C# and a significant part of the .NET framework is the C# 4.0 in a Nutshell book. It assumes some programming experience and covers a lot of stuff.

In my opinion the first step is to read a book which covers different parts of .Net Framework. Pro C# 2010 and the .NET 4 Platform is one possible book as it covers different technologies such as WPF, WCF, Linq, Ef, Asp.Net. They are not discussed in depth but is a good resource for getting familiar with current technology stack.
Also, I would recommend actually developing in .Net as is many knowledge comes from the actually doing it.

In addition to the other answers, maybe your friend could sit in on any code reviews, design sessions or even perform pair programming with the other developers once he gets a basic understanding of things on his own. I suppose this could be difficult in a consulting business vs. regular development shop though.

In addition to all of the books and blogs which will be mentioned, I always recommend people start learning with something practical.
When I'm teaching I make up simple exercises broken down into chunks like build a basic database, try simple things like displaying the data, filter the data using drop down, add auto postbacks and update panels, updating the data in the DB. It doesn't take long to get an overview of the basic concepts, techniques and tools when presented with examples. And then it's down to experimentation, imagination, and research!

Buy Visual Studio and an MSDN membership - in case its a startup there maybe various options to reduce this cost (Bizspark/Websitespark)
Go through common walkthroughs - areas to go through are Winforms, Asp.net, Asp.net Ajax in that order. Can go through WCF, Silverlight and other framework options later.
Search the web for 'Azure trial' - supposedly, there is a one month free pass available. Dont know if this is real, but if it is, take it and deploy simple applications on the cloud - learn what Windows Azure and Sql azure are all about. After a while can learn about Appfabric messaging platform as well.
After this, start deep-diving into any areas of the technology depending on project needs.

Channel 9
ASP.NET getting started
Dimecast
DNR TV

more than reading any book what made get started with .NET was doing projects. Start building a web site if you want to learn ASP.NET, you get to learn C# and VB as well like this. Just by reading a book each chapter would take lot of time. Initially you will do lot of mistakes and you will frequently get the dreaded yellow error page. The more mistakes you make, the merrier. My experience with .NET is limited to ASP.NET, C#,LINQ, web services, SQL Server 2008. But it took less than 20 days for me to get to know about all these stuff. Now I am trying to do WPF, WCF, Silverlight projects. IF I read any .NET book now, it wouldn't take much time for me to complete it.

I realy suggest to use a step by step teach your self book. They are good for beginners and have some practices maybe something from SAMS publishing like
Teach yourself c# in 21 days

Related

Need an advice about application's architecture

I am trying to build an application's architecture these days and I will be glad to hear some advice. Here are some details about the application itself. It has a web UI where customers could register and pay (with credit card) for some sort of services. They have to provide some info because these services are based on it. For example dates to schedule the service work. Of course they always can check the status of their order via the site.
Also I have a database (classic relational database or NO-SQL database I am not sure what is better in my case) that located on other physical machine. So I have to take customers' info and store it into the db in order to make some work based on it. Besides there is a windows service or it's Linux analogue that makes the main job. It should create processes based on the information in database to do the job. In other word the services I mentioned in the beginning provided not by business logic of the web site but of the windows service. Of course during its work this service stores an information back to my database or update it in some way.
Recently I have read the book about applications architecture from Microsoft and they introduce there many approaches to build an application. For example DDD or Client / Server or Components based architecture an so on. I am really confused what is the most suitable in my case. Could someone please advise me something. Thanks in advance.
Take 10 steps back and learn programming. Seriously.
Recently I have read the book about
applications architecture from
Microsoft and they introduce there
many approaches to build an
application. For example DDD or Client
/ Server or Components based
architecture an so on
This is part of your problem. MS did none of that. These concepts where around 20 years ago. They were around 10 years ago. The Book from MS basically just presents them to you. You tink a book makes you someone understanding them?
Things are a little more complicated.
Take your question, replace "application" with "car" etc. and you may realize how really funny the question is. "Need advice about car architecture" etc. - you seem to have a VERY shallow understanding of even what you are talking about.
Also I have a database (classic
relational database or NO-SQL database
I am not sure what is better in my
case)
You know what a relational database is about? Ever heard of ACID conditions? If not - learn them.
I suggest you get profesional help. Why? Because otherwise the moment your credit card data gets stolen (and no, you wont even know how to write secure code with the understanding of SQL you showed) you are in legal pain hell. Everyone will sue you - customers, credit card companies (you know how to treat credit card data, right - I mean, legally).
To get started, read a lot about application architecture.
There are quite some books available out there that you can buy.
My favorite book that weaves a lot of
these together: Software Paradigms
The one that will help you get a lot about programming, design is "software paradigms".
It has been one of my favorite books that covers a lot of ground on topics like patterns, components and architecture.
http://books.google.com/books?id=kfGHwo2E0FYC&printsec=frontcover#v=onepage&q&f=false
Architectural, patterns and practices
from codeplex
There is also a architectural, patterns and practices that was started as part of codeplex and available now as part of msdn. This is available directly on net and you can start reading it.
http://msdn.microsoft.com/en-us/library/dd673617.aspx
http://apparch.codeplex.com/
Other resources on net:
http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Main
Other helpful quick reads:
Architecture of transaction processing system: http://www.cs.sunysb.edu/~cse515/Fall07/slides/ch26.ppt
On SO itself:
How To Maintain Transaction in N-Tier Architecture
Absolute resource for App Architecture:
Microsoft Patterns & Practices Application Architecture Guide 2.0.
I've learnt alot from it, and still learning!
i've recently read agile princeple,patterns and practice by robert martin. I think it's a good book to start understanding desing patterns and architecture principles

Starting a new Site - Should I "Use a Template" or "Write from Scratch"

I have been thinking of starting a site of my own for long time. I am good at all concepts of C#/ASP.NET and all DB stuff. I have created and can create a site from scratch for myself. But the effort/time involved in creating a site from scratch is little discouraging, where next thing (and more important thing) I need to worry about is the content on the site.
I have seen many sites and blogs (few links below).
I need to know, what is the general approach while creating a similar site?
Are there any general tips i need to be aware of before starting one?
http://naspinski.net
http://codeclimber.net.nz
Do you mean stating you own Blog?
you can open blog on some free service as Blogger and see how it goes.
Later you can buy you own domain name and hosting, install existing Blog engine there(even open source if you want to tweak it) and continue from there.
after comment clarification:
Buy a domain name, buy disk space and traffic from hosting company. Install ant cms(content managment system)/blog/forum/anything else you wan ton the host. Develop only the parts you can't find in existing cms/blog systems. No need to develop everything from scratch. With saved time you can take any open-source blog/cms engine and help them with patches.
Consider some open source C#/asp.net blogging platforms:
Oxite
BlogEngine.NET
Subtext
If you're talking about a blog site, there's no need to reinvent the wheel unless you just want to. There are plenty of capable blog engines in any language of your choice. Go with one and extend it if necessary.
Building your own blog engine is fast and easy. Building a good one is slow and hard. I've written many iterations of my blog - currently version 6 using ASP.NET and C#, and working on the design for version 7.
As to whether it's worth it, that's really your call. Do you code in your free time? Enjoy it? Are you willing to go through the whole lifecycle?
You will be responsible for:
Analysis & Design
Development
Testing
Deployment
Prod support
It's worth it to me. Is it worth it to you?
It really depends how much time you're willing to spend on it and what kind of site.If you want a blog site,there are a lot of free blog engine out there that you can use and takes a little time to make it live.My number one recommendation is blogengine.net...very flexible,a lot of choices for theme,and easy to set up.However, if you're like me that is willing to spend a lot of time building it then go for it.I started building my site....a social networking site(http://www.joecaps.com) December 2008 and until now I'm still building it.

Been a LAMP developer for years, now transitioning to the Microsoft Web Stack. Where do I begin?

I've always worked with the standard Linux web stack (linux, apache, php, python, mysql) but have been given a great job opportunity working with a group that works with the Microsoft Web Stack (IIS, ASP.NET, MSSQL, C#).
There seems to be a pretty good Microsoft following here on SO. Where should I begin? Specific books, tutorials, online resources are appreciated.
ASP.NET MVC will probably seem more familiar to you than ASP.NET WebForms. And honestly, I think that most pro-shops are going to move towards it over the next 5 years.
There are some really good tutorials (the kind that WebForms still doesn't have) at this site.
http://www.asp.net/Learn/mvc/
MSSQL (other than some tweaks to syntax) and IIS will probably be less of a hurdle, unless you'll specifically be administering them. I'd focus on learning C# and ASP.NET.
A good resource for C# is the MSDN C# tutorials.
A good resource for ASP.NET is the ASP.NET Quickstart Site.
RampUp is Microsoft's intro learning site. There are learning paths based on the background of the developer (like you for a LAMP stack)
http://msdn.microsoft.com/en-us/rampup/default.aspx
Additionally, the Asp.Net site has a bunch of tutorials and videos
http://www.asp.net/learn/
The data access tutorials available here from the ASP.NET website are as good a place as any for the experienced IT professional to learn about SQL Server data access in ASP.NET.
Would recommend www.learnvisualstudio.net great for staters.
If books are your best learning source then some I found helpful:
Pro C#
Pro ASP.NET
CLR via C#
The third book is about the common language runtime (what executes compiled C# code).
ASP.Net has a few different approaches. There's inline coding (much like PHP and ASP Classic), code behind and MVC.
To start out I would just stick with inline coding. Working with ASP.Net controls and view states is pretty hairy at first so I'd get familiar with the syntax to start and then move on.
Lot of good web sites in this SO thread. I very much lke MSDN Virtual Labs. They have them on just about every technology in the stack and they let you get your hands on the technology and play around.
You should definitely read a good quality book, about C#, I would recommend a C# 3.0 in a Nutshell, Third Edition book, from O'Reilly.
Then you should look into some MS stack specific pages, as is the CodeProject (www.codeproject.com/) site.
At the end you should start read some interesting blogs, on technologies you will work with.
You definitely should not miss the following ones:
weblogs.asp.net/scottgu/
www.hanselman.com/blog/
haacked.com
That would be for a start. :)
(sorry for missing links, but SO say I am a new user, and I can post only one link. :( )
I would suggest you read C# in Depth by Jon Skeet, who is a user here at SO. It will definitely help you master C#. The rest is gravy.

MVC or Webform Architecture for new site

I'm developing a website , job portal. I have 2-3 years of ASP.NET webform development experience,
I want to create a professional job portal site (to improve and learn more) but trying to decide on best architecture. Any suggestions or advice will help...
Thanks
Well, there are a number of ways to answer this question, and I'm sure many others will chime in. I'll just say that since your goal is to improve and learn more, and you already have 2-3 years of webform experience, this might be a good opportunity for you to learn MVC. Then you will have experience in both, and can make more informed decisions regarding the best architecture for future projects.
Happy learning!
Whilst nobody can tell you exactly what to do, the team I manage is about to release a new CMS / Job portal using ASP MVC. MVC gives us excellent testability and scalability out of the box and it can be quickly combined with tools such as nHibernate / windsor (IOC) / nCache / jQuery - this ensures that you have a wealth of resources on the internet to help accelerate your development and skill. You can also embrace standards such as XHTML 1.1 strict, which is almost impossible with ASP.Net webforms due to the auto generated HTML
1 other advantage is that you also get away from the dreaded ASP.Net viewstate.
Use ASP.NET MVC if you want to:
learn the ASP.NET MVC framework
use jQuery or similar libraries
really learn web-languages (HTML, CSS, JavaScript)
use Test Driven Development
have a clean separation of concerns
If you don't have the time or will to learn to use the ASP.NET MVC framework correctly, stick with ASP.NET WebForms.
My answer is almost always "ASP.NET MVC." The amount of flexibility and features and testability and maintainabilty and ... heavily outweigh WebForms.
WebForms has the advantages of a rich ecosystem of existing controls and documentation, and is really powerful for some kinds of tasks (complex, multi-form interactions), but I find its limitations get in the way far too often. You have to mold yourself to it.
It really depends on what the end goal of the application is. As Scott Ewers said, if your goal is to learn, then using ASP.NET MVC will expand your breadth of knowledge in the ASP.NET space (since you already know web forms).
Additionally, if this is going to be a public product, you can leverage the testability benefits of MVC and run automated unit tests. Key ideas like Separation of Concerns can also increase long-term scalability and maintainability.
The primary reason why you might choose web forms is if you are rapidly prototyping the job board application. As you know, web forms allows you to drag-and-drop components onto the canvas to quickly create some basic data entry functionality.
There is a herding code podcast from May 13 on the subject.
Herding Code 47: Joe Brinkman on Webforms vs ASP.NET MVC.
I also agree that choosing MVC would have the advantage of allowing you to expand your knowledge. That not being the only reason, given the choice as well I just finished a small MVC project (my first) and let me tell you MVC rocks! Its a great framework which I feel gives you more flexibility and at the same time out-of-the-box tools to create a web app quickly and painlessly. It was my first experience with VS2008 & .NET FW 3.5 & LINQ, and all the guides at www.asp.net helped me go forward quickly (especially the free tutorial chapter from an MVC 1.0 book mentioned here).
I also got to learn JQuery along the way, as it is very much integrated into these new technologies.
One think to take note though is that this being a new tech, version 2 is already being cooked up, so if your project is for the long run, have that in mind and plan accordingly (in my case, being a small project, I'll probably try upgrading my project to version 2 when its officially released). Yet at the same time, having a fully MS (and thus MSDN) supported version 1 was a godsend for me...
Good luck!
I have good experience in Jquery, CSS, HTML, Javascript but not in TDD.
I have time..and willing to learn MVC but wasn't sure MVC is good choice for Job portal or similar site..
This can be considered a shameless self-advertisement but here is my quiz on how to choose between the two:
http://sietch.net/ViewNewsItem.aspx?NewsItemID=101
I was recently tasked by one of my clients to write a paper, or simply a checklist, that would help other lead developers make this same decision.
I posted the first 2 rough drafts on my blog. I am admittedly pro-mvc but the paper/checklist has been we received so it might be helpful.
http://eric.polerecky.com/archives/a-somewhat-less-biases-comparison-of-mvp-and-mvc/[http://eric.polerecky.com/archives/a-somewhat-less-biases-comparison-of-mvp-and-mvc/][1]
I think the most often overlooked benefit of MVC is convention; I really see any convention in webforms projects and while not strictly enforced in MVC projects at least its there.
i started developing our current app in webforms, mvc wasn't available when development started.. i've chosen the MVP pattern, with URL rewrite HTTP module. currently i'm investigating plugging in some MVC into this, basically to use the front-controller instead of using page-controllers. the other things in already established MVP architecture with web forms in my app give me more flexibility than pure MVC approach without WebForms, which i like, although require a bit more code than MS MVC examples (never tried it for real project to see if it stays that way, like in those examples in screencasts).
what i don't like with MVC is mixing control code inside templates - i believe loops, ifs and stuff like that just shouldn't belong inside the template. but a couple days ago i've ran into Spark view engine that looks kind of promising in that segment, although not still close to the Tapestry 5 (a component-based webGUI framework) in the java world.
But the above mention suggestion to mix both might work for you to explore MVC world and have the safe ground to fallback to if something won't work for you might be ok for you.

Learning to build real-world .NET apps by example

I've been doing mainly SQL and front-end HTML/CSS stuff for the past 4 years. I've done a quite a bit of (procedural) coding in a BASIC-like language, too. I do not have formal CS training (I have an econ degree).
Now I'm switching gears to OOP in C# .NET full-time. In order to ramp up, I've been reading about fundamental CS topics (e.g., data structures, algorithms, big-O notation) mainly on StackOverflow and Wikipedia. I've also read through sections of Code Complete 2, Refactoring, and Head First Design Patterns.
I get the feeling, however, that my approach to becoming a developer is somewhat backwards. I feel like I need to familiarize myself with the available tools in C# and .NET before I can truly benefit from learning about how best to apply them.
The part I think I'm missing is sitting down and getting familiar with the .NET framework by actually doing some programming. I need to get exposure to the day-to-day tasks that go into building a real application.
Since I don't have a mentor, I was wondering if anyone can suggest a book or website that guides beginner programmers through building a (somewhat) real .NET application as a way to teach them the fundamentals.
Thanks!
http://www.asp.net/learn/mvc-videos/
storefront covers everything from design to testing. Should get you started quickly.
http://codebetter.com/blogs/karlseguin/archive/2008/06/24/foundations-of-programming-ebook.aspx
Shows some basic concepts but they are very useful. Includes a sample app to learn from.
Finally,
http://weblogs.asp.net/Scottgu/
ScottGu's blog is full of useful real-world examples and has a ton of links.
And one more note, the book BlueJ offers some great insight into OO if you are new to it.
http://www.bluej.org/
I am in a similar position as you and was looking for how a professional would go about designing and implementing a small program from start to finish. I found these two useful resources:
Rob Conery has a series of blog posts where he takes you through how he designed an eCommerce site using ASP.NET MVC.
In a similar fashion, Stephen Walther builds a forum using ASP.NET MVC
It is hard to get real world experience through reading as most companies guard their software artifacts (designs, tests, etc.) like gold. However, sometimes companies will publish their experience with technologies as case studies. Some of these case studies are no more than marketing crap. But sometimes, you hit a gold mine of information that gives you insight on a real-world project. This Barnes & Nobles case study on the development of a new Data Warehouse does that in part. Here is a list of some more:
ASP .Net Case Studies
.Net Case Studies
Ultimately, software development is driven by business needs and that's where your Econ background could come in handy. Check out the book Return on Software: Maximizing the Return on Your Software Investment by Steven Tockey when you get the chance. He goes into things like ROI, IRR, etc. Things only an Econ major could love :)

Categories

Resources