With only mild programming experience in the past, I was wondering about C# and ASP.NET MVC..
Do you guys think it's a better idea to learn C# before learning ASP.NET MVC? I've already delved a little into both of these already, but I still need some help deciding.
I think I would be a much stronger MVC user if I had more knowledge of the C# language itself.
What do you guys think?
Thanks!
If you're going to use C# to code your ASP.NET MVC Models/Controllers/etc. then yes, learn C# before you dive into ASP.NET MVC.
That way, you'll be able to better handle the language issues you're going to run in to when composing your .NET MVC application. Otherwise you're going to be trying to learn two things at the same time and not get a good grasp on either one.
Master C# first, then go to ASP.NET, then learn MVC and other patterns. Don't bite off more than you can chew, newbie mistake.
I agree with your third paragraph with C# at your back you'll be a stronger ASP.NET MVC developer; but I also think that they (C# and ASP.NET MVC) make great co-learning tools. And if you're going to try to pick up both tools, doing it together makes a lot of sense.
ASP.NET MVC is a pretty tough framework to start out on. It assumes you are already versed in ASP.NET, and ideally you even have a little bit of Ruby on Rails or similar experience too (ASP.NET MVC was really influenced by rails). On top of all of that good knowledge of C# is also very helpful.
I guess it depends on what your needs are. Are you going to create a mission critical webapp that your business depends on? In that case, yeah really learn ASP.NET and C# well. If this is just for a hobby and/or learning, then I say just go for it and learn C# as you go.
I jumped into Rails and Django without learning Ruby or Python first.
You learn what you need to know pretty quickly and everything you do learn is always guaranteed to be practical and immediately useful.
If you already understand MVC you already know which piece of code does what.
Knowing C# before jumping into anything .NET related is very recommended if not required. MVC is only a way of making webpages with the tools of ASP.NET which uses C# and VB as its backend languages. MVC is actually called ASP.NET MVC. Think of C# as the equivalent to PHP or Ruby in "Ruby on Rails".
Learn C# first. C# will be around for years to come; MVC may or may not be (Microsoft has a long history of handling web site code with flavor-of-the-month paradigms that don't age particularly well).
I have to disagree with Matt Greer about any assumption for MVC that you are already versed in ASP.NET. Nearly all of the tutorials and/or books that I've come across definitely do not start from an assumed ASP.NET knowledge base. In fact, for a junior developer, I'd think that knowledge of ASP.NET would be detrimental and confusing, as ASP.NET adds a whole bunch of stuff (designers, viewstate, abstractions, etc) that really is sort of the antithesis of ASP.NET MVC development.
ASP.NET MVC, however, is a framework that definitely requires knowledge of C# or VB to implement properly. In the end, any of the code that drives the site will be written in C#. The ability to properly write .net code is a definite requirement.
I'm personally very partial to Apress books, so I'd recommend the following:
Apress Beginning C# 2010:
http://www.apress.com/book/view/9781430231714
I'd also recommend from experience
Apress Pro ASP.NET MVC 2:
http://www.apress.com/book/view/1430228865
Another really great series for learning ASP.NET MVC 2 is the screencast series available from tekpub at:
http://www.tekpub.com.
Asp.net MVC is a framework for web development on top of .net developed in C#.
So if you want to know the priorities(not necessarily in a waterfall model, you can learn them in parallel):
First you must learn C#(some oo priciples and the way you must structure your code).
Second you must learn the rules and techniques
in web development (Html, Css, javascript, Web Architecture and the way it works(concepts like session management, cookies, etc) ...)
and Last learn
the Asp.net MVC
Related
I'm new to development and want to learn JavaScript and C#, which one do you think would be best to start with. I want to mainly build web apps.
They're not mutually exclusive.
JavaScript is client-side programming (DOM manipulation, effects, AJAX).
C# is server-side programming (database communication, OO, external services, etc).
You should learn both. (and ASP.NET MVC while your at it).
That's a tough question as they are for different purposes. Do you know basic HTML and CSS already? If so, you may want to get comfortable with javascript and working with the DOM and take a look at Javascript libraries like JQuery or Prototype.
For Web development you are going to be working with either ASP.NET or ASP.NET MVC in C# and this will serve as the "behind the scenes" layer. You may want to spend some time and learn the C# language first before moving into the C# Web frameworks. Once you do that, you can work on integrating your Javascript skills.
If you have basic HTML/CSS knowledge already, than I would probably start with getting comfortable with C# and than move onto ASP(.NET or MVC). There are plenty of tutorials at asp.net. With C# and ASP there are a lot of components built in that can make building fancy ajaxy web pages easier than coding them with just javascript and html.
I would say if you want to build dynamic web applications, its more important to learn the server side first. One can do a lot of things without client side scripting, although it is important for certain types of UI.
I expect that C# will be easier, if your goal is to learn a language well, as javascript is easy to modify but to do it well requires a great deal more effort.
You can pick up on the basics of object-oriented programming easily, whereas there is a great deal of flexibility in javascript that allows you to do a great deal with little code, but with a steeper learning curve.
What is your goal? Do you want to focus on writing some innovative webpages, where you are using HTML5 features? Then javascript would be the best option, as ASP.NET MVC is not going to push the boundaries of writing games in WebGL, or using the other new features available in HTML5.
But, if you want something that will allow you more options, then C# can be used to help support web applications, as well as write desktop applications and enterprise apps, leveraging the power of .NET4.0.
But, to really use .NET4 you will either need to use mono or use some version of Visual Studio, and if you use the express version then you will have some limitations.
So, it may come down to cost, desires and goals, as to which one is better to start with, as they are very different.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
Background
A year ago I had to learn PHP in school, I already knew ActionScript3 so it wasn't that difficult, and together with a friend of mine we were the first 2 of our school to learn ourselves OOP in PHP.
It wasn't required but we thought it was important.
Last year I started learning C# and ASP.NET, but I'm far from pro in C# and ASP.NET, I did do some projects for myself, just for educational purposes.
Now a few days ago I started an internship (which should take 6 months) But the company still works with ASP Classic and thus VBScript.
Question
Is it worth having learned ASP.NET and C# last year, start ASP Classic and VBScript now for 6 months and probably after that continue in ASP.NET and C#?
I would like some opinions about this, because I don't know whether I should stay and do ASP Classic, or go and look for another internship where I can do ASP.NET.
Avoid ASP classic. It will reinforce bad programming practices. ASP.NET is only as "pre-made" as you allow it to be. If you want to learn, do not use the drag-and-drop designer; write all your HTML by hand in the VS editor. This will make you a far more versatile web developer, and will also prevent VS from generating "bloat" in your pages. I would also encourage you to explore ASP.NET MVC, because the WebForms model has many complications that MVC avoids.
If you can, look for another internship. I politely, but firmly disagree with your boss.
I don't see a point in learning ASP classic unless you are getting paid to do it. In the case of an internship, the experience gained outweighs the time spent using an older technology.
I wouldn't try using ASP classic in any of my future projects, but you should be fine learning it for your internship.
Also, if you can get a job working in something newer that will help you even more in the future, I'd go with that. Sometimes that's not an option though and you're stuck working with something old.
I think your boss is wrong with what he said, and I don't know why they haven't tried to upgrade over the last decade. While this won't necessarily hurt your career, it definitely won't help it on any significant level (except for the experience).
VBScript will actually be moderately beneficial to know in the future since a lot of systems automation scripts are written in it. This will also help with automating tasks for Microsoft Office, etc.
Get the job, get the paycheck, and move on when you can.
Most ASP work is maintenance these days. If a company is doing active new development in ASP, they should have a pretty compelling reason.
Also, your boss's remark is nonsense.
I'd say you should should avoid it if you can, and continue with ASP.NET (or something else with a pulse). And I say this as someone who started his career in FoxPro for DOS.
I say it can't be a nuisance. ASP will teach you some older technologies, not to say philosophy of doing things that could perhaps bring you on some other interesting paws with your new development. As a matter of fact, having worked with ASP for 6 months will grant you some knowledge which others can only speculate about.
Besides learning or improving your skills in ASP, working in this project you're mentionning might bring you some other aspects that could be worth learning. Any new experience is a step forward to new possibilities.
Learning ASP could at least simply teach you why in ASP.NET and MVC, things are done the way they are, and you'll perhaps better understand the foundations of the most commonly used aspects of these architectures or approach.
Furthermore, when a company will require a candidate that has a minimum of knowledge in ASP to migrate a system in ASP.NET, then should you be the guy? =P
Always look at what a new experience positively can bring you. Almost any new project can teach you new aspects of your work.
I hope this helps! =)
ASP Classic is a very old language. ASP.Net WebForms is much newer and in modern use at many companies. There is an even newer model (newer to the MS world) called ASP.NET MVC. This model shares some aspects in common with ASP Classic, but improves on that old paradigm in almost every way.
You never lose by learning something new, but I think you could get more bang for your buck sticking with newer technologies. Intern with someone using MVC (like StackOverflow) if you want to learn that model.
If you have an option on an internship that better fits what you want to learn, take that instead.
That said, learning more is usually a good thing. Do it, especially if it's only six months. Don't permanently set down roots in ASP Classic, though, because that's going to go away at some point; don't latch on to a train that's already going downhill.
If you know PHP, you already know ASP classic. Yeah, the languages are different, but the important thing (the page model, the lifecycle, what runs when) are the same. The rest is just details of how to call various things in the OS. Well, except that vbscript is kind of crippled.
Also, if they're doing work in ASP, that probably means they've got COM objects (most likely written in VB6) to either call or you'll have to write and deploy. That way lies PAIN.
If you're looking for a realistic work at most IT development jobs, this would actually sound reasonable - there's lots of shops stuck on old technologies. However, it's not going to be that useful on your resume.
He is right in a way - the ASP.NET WebForms model DOES create a huge abstraction over what's actually going on. But if you looked at ASP.NET MVC or another MVC framework like Monorail, you can get the raw HTTP story. But, again, you've done PHP so you've already seen it.
Don't be duped here's a fact: VBScript does not run on the CLR, ASP classic and old IIS are not running in the CLR with ASP.Net's code paths and handlers and huge stack of stuff that I was thoroughly confused by when I went from ASP3 to ASP.Net years ago.
Don't waste your time, what's under the covers in ASP.Net and it's entire design model is so thoroughly different from what's going on in classic ASP, you'll just confuse the whole issue.
In fact, screw all of this, learn wpf/silverlight/xaml and C#, if you can put two and two together with the xaml style of code behind you will have no trouble with asp.net when you need it (or classi asp for that matter), and you will be far more capable of keeping up with what's going on next, rather than starting the journey 10 years ago, it will take a long time for you to catch up to modern times that way.
To some really small extent, your boss is right. Learning classic ASP will help you understand how ASP.NET manages web concepts such as your page's viewstate property for example ; also it will force you to create your own gridview from scratch.
However, the .NET framework is really huge and it can take a fair amount of time to get to know it. A lot of ASP.NET controls helps you save precious time to concentrate on more important aspects of your application. I would prefer to look for an ASP.NET internship and learn ASP on your own if you want to know how some things were down the "old way", i.e. more than 10 years ago (classic ASP was launched by Microsoft in 1996 if I remember correctly).
There's two things I'd add to what's been said here already, though I won't repeat the well-made points in the other answers.
It's completely wrong to say that knowing ASP will give you information about what is under the hood when it comes to ASP.NET. At the level of the two frameworks, its much more likely for knowledge of ASP to misinform you about ASP.NET - some things that seem similar are actually different. At the level below that, you're better off forgetting about frameworks and languages and learning the details of HTTP (see RFC 2616) and then working out how it works in whatever framework you are using.
Also, the real meat in class ASP wasn't ASP itself (which really, is much simpler than ASP.NET) but in COM objects used with it (which can often get much more complicated than the .NET equivalent, esp. when factoring in having to deal with the much more complicated threading abstraction, lack of garbage collection and other things where .NET provides us with new or improved tools).
I guess the title gives most of my question away, I have a university project in which I must design and create a website in php or asp.net I have chosen the asp.net path since I am pretty familiar in php and I prefer C# to php.. Could someone please reference some good online places to visit to do some further learning, and recommend some books would appreciate it thanks.
Here are several questions from StackOverflow that may help:
Best way to learn C#
How can I learn ASP.NET?
What’s the best way to learn C# quickly?
Quickest approach to learn C# programming
-MSDN Library
-Book: CLR via C#, Apress Pro ASP.NET MVC (for ASP.NET MVC), and Pro ASP.NET 3.5 (Webform)
I think the Wrox Problem-Design-Solution books are always good if you like tutorial style books.
ASP.NET 3.5 Website Programming: Problem - Design - Solution
If you're looking at MVC, Microsoft has the excellent Nerddinner tutorial
Nerddinner
MVC is overkill for a basic university project site. Get a basic site similar to what you need (Website or Web Application project), perhaps from the free community projects on the ASP.NET home site, and then follow the video tutorials there using the freely downloaded site as a starting point :-)
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.
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.