What ASP.NET programming model to choose? [closed] - asp.net-mvc

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
Summary
I'm a seasoned programmer with years of experience in Windows Forms development using different programming languages as already stated in this question:
Will learning WPF improve my skills in ASP.NET?
ASP.NET or any Web based programming language doesn't feel natural for me to explore or to use. Although I am unfamiliar with Web based technologies, my curiosity about these grows and grows. In addition to it, I am aware of the market place Web based programming takes. I would like to expand my knowledge and experience to the Web, though would it be just to know what I'm talking about instead of speculating whatever.
My experience as an information and process systems developer allows me to understand the concepts and some of the basics. I am aware that Web based applications are stateless, for instance, and that I need to use session or viewstate variables to keep the information the user is working with alive, otherwise I would loose them.
I also understand the basics of Ajax based controls such as the UpdatePanel, which is to update or to refresh only a part of a UI page rather than reloading everything through the connection again.
I can get that CSS defines styles for your page's sections and that you may change radically your Website's aspect just by changing the CSS reference.
I am also aware of masterpages, which I don't really understand, in fact.
Programming Model
I just watched this video about choosing the right model for me/my application:
Choosing the Right Programming Model
If looks like ASP.NET MVC, which I thought was the best approach, is more for the veteran Web developers, people who are comfortable with Web applications.
I have used a lot of DataBinding in Windows Forms, and WebForms seems to be more what I'm looking for into ASP.NET, until they say that MVC allows for Unit Testing, TDD and Agile methodologies, which I adhere to, as a certified Professional Scrum Master.
I'm a bit mixed up on what will be more natural for me speaking of programming model.
Questions
Taking into account my base of knowledge and my experience, what programming model do you think I'm going to be more comfortable with?
Will choosing one over the other allow me to get acquainted enough with ASP.NET to one day try the other model?
In the video about choosing the Programming Model both sat on ASP.NET, I heard about DataBinding while using Web Forms, but no mention of DataBinding in the MVC model. Is there any possible DataBinding in MVC?
Finally
I'm very confused about all of this ASP.NET stuff.

This is so subjective that it's likely to get closed and no matter what answer we give, it's likely to get downvotes as well as ups, BUT....
Given your familiarity with WinForms development I would say to go to WebForms if you want to get up and running as quickly as possible. Even if you eventually switch to MVC, you'll be more comfortable with WebForms at first while you learn the ins and outs of web development, so it will be less of a shock to your system.
And just so I don't get pegged as being biased by the others who will view this, I realize that there are many advantages to MVC, but in my own humble opinion, I think it's silly to get into a "Which is better" discussion. I'm giving this answer because he asked (paraphrasing) "which will be easier for me to grasp and get started with".
Edit
I guess I only addressed the first two questions above...
For the third, databinding in MVC is a bit different, but not all that much. The data access under the hood is the same, but you control the output a lot more strictly.
See this other post for a quick glimpse at a good answer explaining how to do a simple "binding". The asker in this question was less familiar with MVC, and was asking how to do databinding on a drop-down list in MVC. The answer given was good, and pointed to a good article.
ASP.Net MVC framework and databinding

just go with asp.net mvc.
it will actually improve the way you write windows apps.
its a mistake to try and find the closest similar paradigm to what you are used to. Its almost better to have a completely different one as it will save getting confused by things that are similar but not quite the same.
basically webforms was microsofts attempt to make it easier to do web stuff coming from the windows world. But its akin to coming from a sailing background and developing a "car" that you control as if it was sail boat. You are simply better off learning how to drive a car, drive when you have to drive, sail when you have to sail.
so you will have to put in the effort to understand web stuff. Its not too hard, it can just take a bit of time. But there is a massive resource of knowledge to draw on.
basically come to web development with your cup empty ready to learn :)

I use WebForms and I came from VB6. It was weird at the start when I had to learn about the page cycle.

Related

Is MVC easy for a Classic ASP guy to learn [closed]

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 7 years ago.
Improve this question
I've pretty much worked with Classic ASP for ever since it was released almost.. But i am having trouble adapting to the ASP.NET platform.
I have been suggested by many to move to PHP, since it's spaghetti code (I LIKE SPAGHETTI CODE), and it's just like classic asp.. But learning Apache servers and securing them i heard was another big project to learn by yourself.. And since i know more about MS servers, i prefer to stay with MS.
But, I really want to learn another platform, and i was looking at MVC framework and that MVC 1, 2 or 3 is like spaghetti code? Maybe i'm wrong. I assume MVC3 is the best now?
Anyway, From Classic ASP, which would be the easiest and most difficult to grasp you think? ASP.NET with all the compiling and using visual studio, reminds me of when i used to make apps in Visual Basic, but i really like spaghetti code more than compiling stuff..
If there is anyone who has done this switch over from classic asp before, what did you do and why, how easy was it to grasp the new platform? (Preferrably MVC)
Well, MVC is more like classic asp than webforms is. However, it uses structure and frameworks to reduce spaghetti code and make it more maintainable. You have to apply a lot of new concepts to not fight the framework.
For example, a strong seperation of view, model, and controller. This is not something you would do in classic asp, or even generic php (you can do mvc in php, but it requires more discipline and using frameworks as well).
Bottom line is, spaghetti will always bite you in the long run.
Asp.net supports a mode where you don't have to compile anything, you just edit the files on the server and it compiles them at runtime automatically. This is the so called "Web site" model. However, MVC does not work that way and requires the "Web application" model that does compiling (although you only have to compile code, not markup).
I'm currently smack in the middle of my first large ASP.NET MVC project after (and while still) programming in classic ASP for years. I have also programmed in ColdFusion and I have tried Python as an alternative to ASP.NET MVC.
If you want to stick to Microsoft technology MVC is the closest you will come to classic ASP. Webforms is really Microsofts way to make web-applications similar to application development. Microsoft has tried to abstract away the fact that the web is a stateless medium. However, this results in pretty ugly things such as the viewstate (a hidden form field that tries to keep the state of all form fields) and controls that generate HTML over which you have absolutely no control.
MVC gives you more control, and leaves you to handle the statelessness like classic ASP does.
I have still found there is a steep learning curve though; you will have to learn a lot of new things, if all you ever did was program vbscript/ASP:
C# or VB.Net Syntax
Object oriented programming in general (inheritance, dynamic versus static, etc.)
Concepts such as lambda expressions, delegates etc.
The MVC pattern
Most likely also a data-access technology like LINQ or Entity Framework
I'm still struggling with some of these, but I'm getting there. It does take a lot of work though, and perseverance. Not everything is better or easier than in classic ASP. Especially for me, as I have been using WSC's in classic ASP for years, which enables n-tier applications in classic ASP, and eliminates spaghetti code completely.
As I mentioned, I also looked into Python as an alternative; Although at the company I work for we now switched to ASP.NET MVC, I actually found the transition to Python a lot easier. The only reason we went with MVC is the fact that it seemed easier to get new developers when using C#/MVC. (In retrospect this wasn't actually true, we are having an incredible hard time finding a suitable C# programmer around where we are located)
Mind you, in Python you will still have to learn basic Object Oriented programming, but the implementation is much simpler to use than .NETs and the Python language is (IMHO) more like vbscript than VB.NET is.
Also I liked the fact that I don't have to define the type of every variable/function/parameter. This sometimes drives me crazy in C#; if the type of a function changes, it could affect a lot of other functions and variables, which all have to be changed. Also, the syntax is easier to pick up because the language is simple and there aren't a hundred ways to do the same thing.
You can choose between different frameworks, MVC or non-MVC and you can use Python in a lot of other fields as well (application programming, scripting-for example XBMC).
There are also ORM solutions available like Entity Framework for .NET and I found the one I looked into (SQLalchemy) a lot more powerful, and easier to pick up than EF.
So at work I'm currently learning ASP.NET MVC, at home I'm slowly picking up Python. I suggest you try a very simple project in different technologies, and pick the one you find easiest to get started with.
Hope this helps.
If you like your spaghetti served by Microsoft, try any Windows version that supports IIS7. PHP works perfectly and it's really easy to setup with Web Platform Installer.
With that in mind, there is no real reason you should choose any one web technology over the other. You can mix and match as needed, even within a single app.
If you want to get into MVC, forget about 1 and 2 and go straight to 3. MVC is much closer to the metal than ASP.NET WebForms. With your background in classic ASP, you'll probably like it once you get the hang of it.
Update:
If you're serious about learning either MVC, PHP, Ruby or whatever web platform you like. Get a good book. Sit down, read it and follow along with the sample code. I usually decide what book to buy based on the reviews at amazon.
Then, if you need more info on specific topics, go read authorative blogs on the subject. For ASP.NET MVC you'll probably want to look at blogs from Brad Wilsons and Phil Haack.
I started using Classic ASP back in the days but then moved to WebForms now using/learning MVC 4.
Here are my thoughts.
For me Classic ASP was fun and easy to learn as it was simple and did not have a large learning curve, data CRUDS were not difficult either and it did the job in a fairly efficient but messy manner.
WebForms required a higher learning curve but helped with a lot of 'plumbing' code with drag and drop controls, however these were sometimes difficult to modify and customise.
With MVC I have found it requires a larger learning curve than the other two, this is mainly due to it being driven by HTML5 and client frameworks like Knockout etc. To gain a good understanding also requires one to learn OO patterns, Entity Framework, LINQ, WebApi and initially these I did not find simple to digest.
What is easy for you? What part do you find difficult? Read up about a stateless nature of HTTP and find comparisons between web forms and MVC - this should make few things clear.
Do some reading about MVC pattern in general. MVC is a general term which appeared first time over 30 years ago. MVC in .NET 4 is a variation of this pattern, but we are all used to calling it MVC. Make sure you OO knowledge is up to scratch, as well as knowledge of basic design patterns, mainly SoC (Seperation of Concerns) and SRP (Single Responsibility Principle).
if you want to learn / start with the mvc framework I could recommend you do the Contoso University tutorial or the NerdDinner one ( http://www.asp.net/mvc/tutorials#NerdDinner )

What framework would allow for the largest coverage of freelance developers in the media/digital marketing sector [closed]

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 1 year ago.
Improve this question
This question is not about which is the best, it is about which makes the most business sense to use as a company's platform of choice for ongoing freelance development.
I'm currently trying to decide what framework to move my company in regarding frameworks for web application work.
Options are
ASP.NET MVC
Django
CakePHP/Symfony etc..
Struts
Pearl on Rails
Please feel free to add more to the discussion.
I currently work in ASP.NET MVC in my Spare time, and find it incredibly enjoyable to work with. It is my first experince with an MVC framework for the web, so I can't talk on the others.
The reason for not pushing this at the company is that I feel that there are not many developers in the Media/Marketing world who would work with this, so it may be hard to extend the team, or at least cost more.
I would like to move into learning and pushing Django, partly to learn python, partly to feel a bit cooler (all my geeky friends use Java/Python/c++). Microsoft is the dark side to most company's I work with (Marketing/Media focused). But again I'm worried about developers in this sector.
PHP seems like the natural choice, but I'm scared by the sheer amount of possible frameworks, and also that the quality of developer may be lower. I know there are great php developers out there, but how many of them know multiple frameworks? Are they similar enough that anyone decent at php can pick them up?
Just put struts in the list as an option, but personally I live with a Java developer, and considering my experience with c#, I'm just not that interested in learning Java (selfish personal geeky reasons)
Final option was a joke
http://www.bbc.co.uk/blogs/radiolabs/2007/11/perl_on_rails.shtml
As you said for the media/digital marketing sector php is the way to go.
I love .Net (it would be my first choice if the target market wasn't a factor).
I would really look for good well rounded developers regardless of their tech or market as opposed to ones with "media/digital marketing sector" experience.
It is possible to find good/experienced/reliable developers with knowledge of multiple frameworks. If this is a requirement, it is of course possible to vet candidates accordingly.
Given that you're referring to freelance development, it would probably make sense to add the dimension of "where the developer is based" into your thinking, as dealing with someone who's a stone throw's away compared to dealing with someone abroad or another city may affect how you work together. This means that where you are based also affects your choice: if you're based in a small town, there will be less quality canditates close to you with suitable skill sets.
I'm currently learning Symfony for myself, and work as a freelance advisor/product developer for a site that's built with CakePHP. Although an experienced PHP developer should be able to make the leap from one of the above to the other quite quickly, there's a fair amount of framework-specific intricacies that can only really be learnt by coming across the problem and then searching for the solution, or by being guided by someone who already knows. Symfony is considered to have good documentation, but I feel that there's a quite a lot in it that's also not in the documentation and that can really only be learnt by doing it.
I also worked for a company quite recently who used Symfony, hired high-quality PHP developers only, and if I recall correctly, it was about a month or two for new guys to get familiar with the code and the workings of Symfony, and start becoming properly productive.
Hope that helps.
In my (heavily biased) opinion, Django is gaining some traction in this sector. Off the top of my head I can think of a number of high-profile news organizations that are making significant use of Django and I've seen reports of organizations utilizing Django for putting up special one-off sites quickly for unique coverage of special events or circumstances. I know firsthand that PBS and National Geographic also use Django extensively for their web properties and I understand Discovey Channel does as well. There is a nice testimonial about how Michael Moore's site was rebuilt quickly using Django: http://blog.concentricsky.com/2009/10/michaelmoore/. I'm not sure if MSNBC has begun utilizing Django internally, but they did acquire Everyblock.
A few others I'm aware of that use Django heavily:
Mahalo
NASA
University of Texas
I've also seen that Django is being used by startups outside the media sector so I wouldn't say it is specialized toward a particular business sector. There are a lot of organizations out there that have been sort of silently using Python internally over the years and so Django is quickly becoming a natural option for web-based services. Python actually has decent roots in the scientific communities, financial sector, and I've spoken with a number of people in the entertainment industry who use Python in their digital effects / post production pipelines.
Maybe not the most riveting content overall, but there is some good info in here: http://djangocon.blip.tv/file/3041158
Look at your clients. Frameworks are just tools, you will have to go with the tool that suits the particular job. This also means your choice to dive into a framework will choose your future clients.
Many SMB shops need PHP because that it is the easiest to host and is interoperable on many layers of "platform" (not just OS, but also supports all DBs etc.)
ASP.NET MVC: I heard a lot of awesomeness about it, I like C# as well. But I can't afford to go only with the options Microsoft provides (database for example) and Microsoft products only really support they own stuff.
Django: Expected to gain huge momentum, but I'll wait until the language itself (syntax) becomes stable.
CakePHP/Symfony: CakePHP is very easy to pick up and is a good choice if it fits all the requirements.
Struts: Quite heavy, I would learn Spring (MVC) instead.
Pearl on Rails: Haven't really used/seen it, so no idea.
You could also consider to learn a framework that is radically different from you current knowledge.
So I love Symfony. It does all I need for a Framework to work fast and clean.
The structure and the architecture is pre-defined so everybody knows where to put stuff, so you can easily work together with a whole bunch of developers.
I would never chose CakePHP over Symfony, because if you have to make changes to a model, you can never again generate code after the development has started.
CakePHP just overwrites everything.
I sure lost all my code a few times. Really annoying.
Symfony just extends the generated code and that is where you develop.
Here you find a good discussion about CodeIgniter (with which I develop at the moment, and it is no MVC and PHP4-based) and Symfony: codeigniter-vs-symfony
The learning curve is a bit steeper for Symfony, but it has enough complexity for all situations I ever encountered.
My next project will again base on Symfony 1.4. And if you can wait, there will soon be Symfony 2.0
ASP.NET MVC, but only if you can use both a frontend and a backend developer for each project. It'll probably be harder to find developers with both competences and you might have to push .net-developers a bit to get them to use MVC.

How can I do rapid application development with ASP.NET MVC? [closed]

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 8 years ago.
Improve this question
I've been given a short amount of time (~80 hours to start with) to replace an existing Access database with a full-blown SQL + Web system, and I'm enumerating my options. I would like to use ASP.NET MVC, but I'm unsure of how to use it effectively with my short timetable.
For the database backend I'll be using Linq to SQL as it's a product I already know and can get something working with it quickly.
Does anyone have any experience with using ASP.NET MVC in this way and can share some insight?
Edit: The reason I've been interested in ASP.NET MVC is because I know (100% confirmed) that there will be more work to do after this first round, and I'd like my maintenance work to be as easy as possible. In my experience Webforms applications tend to break down over repeated maintenance, despite discipline.
Maybe there's a middle ground? How difficult would it to be for me to, say, build the app with Webforms, then migrate it to MVC later when I have more time budgeted to the project?
Edit 2: Further background: the Access application I'm replacing is used in some capacity by everyone in the building, and since it was upgraded from Access 98 to 2003 it's been crashing daily, causing hours of lost productivity as people have to re-enter data since the last backup. This is the reason for the short amount of time - this is a critical business function, and they can't afford to keep re-entering data on a daily basis.
There really are no good answers.
I'd be very surprised if you could recreate a non-trivial business application in a new format (web) in any 'short' amount of time (unless you measure 'short' to be 6 months).
ASP.NET MVC provides (hands down) the most convention available with any beginning web project.
ASP.NET lets you drag-and-drop to get things working, but it breaks maintenance horribly for non-trivial applications.
If it were me, I'd do three things:
Ask my boss if he wants me to recreate an entire business application across a completely different platform.
Tell him he can either have it more quickly now (ASP.NET), or more quickly later (ASP.NET MVC).
Let him make the call.
Personal Addendum: I've used both ASP.NET and ASP.NET MVC for web applications. MVC is just better. Not faster, but better. It made web development 'fun' again for me.
MVC isn't really a RAD development framework.
You'll be writing much more infrastructure code than the RAD Webforms alternative of dragging a datagrid and a datasource onto a .aspx page. I love MVC but if you're under the gun go with Webforms. MVC can be faster, but only if you have infrastructure pre-built.
MVC 2 alleviates some of this by including Model based HTML helpers like Model.EditorFor() but it's not good enough yet. No quick grid code. Paging? You're rolling your own pager. Ajax? Write your own JQuery.
Sure, there are 3rd party and open source libraries available for all this stuff but in my experience smushing them all together and making sure they play nice is also time consuming.
Simple web application + tight schedule = ASP.NET webforms.
Complex web application + tight schedule = ASP.NET MVC.
I've found that as the complexity of a web app increases linearly the complexity of a webforms app increases exponentially. Once you start writing your own server controls (NOT user controls, as those are still relatively simple), which can be necessary for more complex UI, you need to have an intimate knowledge of the whole page lifecycle, how the viewstate works, and other obscure parts of webforms that the framework abstracts from you.
MVC, while it requires you know HTML well, does great on the tail end of complexity. No matter how complex the application is, you're still dealing with POCOs and methods in your controller. Once you get over the initial hurdles, its smooth sailing. Development difficulty increases at the same pace as website difficulty.
Personal experience: I converted a relatively complex website using custom server controls to ASP.NET MVC and cut the codebase in half. I also drastically reduced the complexity of the code as well.
The only caveat I have is that ajax is easier to do using ASP.NET AJAX. So if you're going to develop a web app that relies heavily on ajax then webforms may just beat MVC.
Migrating from ASP.NET to MVC isn't always the easiest. You have to move from a codebehind-based application to one where your controllers are unaware of your UI. Also, MVC relies heavily on the URL to determine the intent of the user, whereas ASP.NET relies on event handlers.
Personally, if I felt an application was destined to be MVC, I wouldn't waste time developing it in ASP.NET. But then, I've had the benefit of getting past the initial learning curve. Which wasn't all that bad IMHO. I had more trouble learning all the HTML and HTML forms that ASP.NET kept me from learning.
With this deadline i think it's more convenient to use the ASP.Net Webform. After this first phase with more time/budget you can start to develop new parts of your application using the MVC since they can coexist.
Also be aware of the Ajax and grid code. In MVC they usually take longer to develop but also at least for me they appear to be more robust because you really have to know what you're doing.
This question is from 2009, would be nice if the author give some feedback of his decision.
EDIT: Take a look into http://mvcscaffolding.codeplex.com/ if you still need a RAD using asp.net MVC.
Once you get running with MVC, it's pretty quick, but it takes a while a) to learn and b) to build up a suite of useful bits of code.
If your UI is not going to be complicated, it can be very easy to set up a quick data entry interface.
If your UI is to be really, really simple, you might like to look at ASP.net dynamic data.
You can also look the Entity Framework to bind to your database, this will create your models to be used with MVC. But Like jfar said, under short deathline pressure, go for what you know best!
ASP.Net MVC is good, but ....
If you haven't developed a system using ASP.Net MVC before, then using it on a project with a short deadline is a risk.
If your application is a "simple" CRUD application then I would go with Dynamic Data: http://www.asp.net/dynamicdata/
(Paddy just beat me to that one)
If your system is really big you could consider SharePoint Access Services http://blogs.msdn.com/access/archive/2009/10/21/net-developer-blogs-about-access-2010.aspx
Evolutionary Software Development
From experience I vouch for it - it's how I program, it works regardless of technology.
In short: do what your gut-feel tells you (code something), modify as you find errors/omissions, and when it works, you're done (but for the documentation).
Another option is to use Alpha Five v10 --
It recently received a thumbs up from Infoworld
check out http://blog.alphasoftware.com/search/label/Press%20coverage
Both frameworks contribute enough in delivering a solution, but WebForms automate some of tasks involved in UI functionality, like data paging, sorting, state persistence or custom data persistence and more, BUT... if you really sit down and say, ok what do i need to do? ... design, navigate, modelize, present and then figure out how to show layout, how to connect to data, how to bring data, how to bind them with UI, how to paginate, sort and finally edit, really put your mind down and compare techinques in each framework that accomplishes all that, you will know that MVC is more natural and team oriented. You need tools like EF Code First, a CSS framework like Bootstrap and jQuery, apply techniques like IoC, SoC, Layering etc and use for example Automapper for doing the boring stuf, but no matter how many things you will have to consider, it will always be match more easy, natural and direct than having to know all the various configuration of the numerous controls and managers that WebForms require. Except if your project is an ERP with CMS capabilities where ... you know :-)
Anyway, modern skils require to adapt in today's trends and MVC is just a good host to help you use them without suprises.
I ve written tons of WebForms code but i am not touching it again.
So, final point is that in 2014 with all those tools and frameworks out there, MVC is not slower but rather the opposite, but requires an initial, small to me, efford to gather some resources and lock a few methodologies.

What technologies to use for starting up a new project? (Technology Prespective) [closed]

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 6 years ago.
Improve this question
Today I had a nice opportunity from my manager to propose new technologies to start up a new project. Here we used to use ASP.NET and SQL mainly. I really wanna propose using ASP.NET MVC and LINQ To SQL and do some nice TDD. The question is, i don't know how to convince my manager, actually i'm not sure of these choices myself. Could you please be me and propose the set of new technologies that you think is the best, and also propose some resources in case the developers don't know about these technologies, and any thing else that we might wanna consider during that transition.
PS: The project is a web site, and uses Amazon Web Services a lot, the good thing is, it's an internal project and time is not that much of a constraint.
Waiting for you sweet SO fellows.
The obvious, if not immediately helpful answer is to go learn about any technologies before you recommend them to anyone. If you are not convinced then go pick up one of the bits of kit and try to make it do something.
.Net MVC, Ruby on Rails and a raft of other platforms exist, pick 3 and try the same project in each. That way you'll soon have an idea of which you think is the strongest and convincing you manager will become a simple case of "Technology X is better because it will take us less time to build a more stable product which will save you money".
I had the same situation recently too.
Combo i use:
ASP.NET MVC
Cause i`m tired of webForms. And mvc is supposed to be faster in general.
StructureMap IoC
Cause i want app to be loosely coupled, tried it first and it does the job good enough.
NHibernate
Cause it fits DDD best despite of lack of sproc support.
RhinoMocks
For now - it just sits in my tool belt waiting for it's turn.
AutoMapper
Not needed anymore cause of NHibernate mapping capabilities.
MsTest framework
Still haven't seen any good argument for switching to another.
JQuery
Cause i dislike MsAjax framework. It's too clumsy.
MVCContrib
Cause it makes ASP.NET MVC apps easier to write.
Fluent NHibernate
Cause it gives better approach to configure NHibernate.
Trying to follow TDD and DDD. Gradually rewriting old legacy application too.
So far - so good. :)
I think if you are going the MVC route, you should probably also consider learning JQuery too.
You could say that ASP.NET MVC and LINQ to SQL really boost productivity and are really easy to maintain. Also the logic get's separated so well that testing is a breeze.
Give SO as an example of how successful and scalable solutions in ASP.NET MVC with LINQ2SQL can be in those new technologies.
Do not dive into the pool before knowing the depth or you will hit your head on the pool floor. I understand its a internal project but before you pick any technology stack. I would do the following -
Understand the team strengths, I dont want my freshwater fish trying to swim the ocean.
Understand the domain bits as much as you can. Not all technology stacks solve a problem in the same way.
You say time is not an issue but time often is the driving force. Set a feasible timeline.
Prototype some bits of software.
I think you can narrow down to the technology stack you would want. My options would be -
ASP.net MVC + Entity Framework + jQuery + Silverlight (if RIA is a goal)
MonoRail + NHibernate/ActiveRecord + jQuery + Silverlight (if RIA is a goal)
Mix and match 1 and 2
If webforms is something you like or suits your team's skill set, why not ? There is lots coming our way in the new .net version.

Is MVC the best way to code asp.net applications? [closed]

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 4 years ago.
Improve this question
update: I know there is no one best way to do everything. Sorry for not saying that right off. In the context of the data-access tutorials, if you had to do the project he did in that tutorial, would you do what he did or would use use MVC, if you had to choose one of them?
Update: Is MVC the more appropriate way to program asp.net applications, instead of the tutorials found here:
http://www.asp.net/Learn/data-access/
Original:
I ask, because I initially learned about MVC with Java applications, then things like RoR, and Django. These other projects and companies spoke as if MVC had been around for a very long time, and from what I found out it had. Then Microsoft started putting MVC into the .net framework.
I ask because I don't know how to design things very well and thought I was doing well to emulate what's on the asp.net site with Scott Mitchell's tutorial. I thought that creating abstract layers in a BLL was the way to go until I found out about MVC and now asp.net's MVC.
I honestly don't know what the "right" way is to do things. I just create what I need, but I can't help feel like I am missing something.
Is MVC the correct way to start doing things in large projects, specifically I mean MVC and ASP.NET, but could just as well mean PHP and one of their MVC frameworks.
I'd like to settle on a standard way of doing things...for now anyway.
And, out of curiosity, why did Microsoft only now start doing MVC?
UPDATE: Is MVC better than the current tutorial set on asp.net?
I'm referring to the Scott Mitchell tutorials where he creates the BLL for abstraction. Or is that a linq question as well. I should have said that I understand the need for keeping logic and presentation separate but unsure the best way to do it. I was using the asp.net tutorials. It worked fine. Then I found out the rest of the world, as I saw it anyway, was using MVC. Then Microsoft started developing MVC, so to me the other method seems obsolete and the wrong way to do things.
No, it's not the only best way to do things.
MVC is just a design pattern. The goal of all design patterns is simplicity. So as long as it makes your design simpler, go with it. If it makes things more complex for your specific application, try a different approach.
Unfortunately, some people think if they see a pattern, they should use it. It's just not true. Design patterns don't inherently make your application better. They are not an end. They are a means to an end (which is simplicity). So you should use them only if they are worth it.
In my opinion, over-architecting things without a good reason is worse than writing code without any specific design.
EDIT: Regarding ASP.NET MVC: I have a negative personal bias toward ASP.NET Web forms. Before MVC, I did most of the dynamic aspects of advanced projects by writing custom handlers to have fine grained control over the HTML. Web Forms make Web development very easy but they have particularly a couple things that are good but sometimes are problematic. The first of which is ViewState and the second is complex WebControl architecture. Don't get me wrong. Those are signs of brilliance of ASP.NET. I haven't seen a single platform for Web development as easy as ASP.NET Web Forms and this is only because of great WebControl support which requires ViewState. However, in some projects, you want to have precise control on rendered HTML (specially when you have some client-side logic). You also want to make server side code maintainable in large projects. In those areas, ASP.NET MVC really shines. But I think ASP.NET Web Forms will remain a great technology where it's more applicable. After all, as I said regarding design patterns in general, you should carefully evaluate your design to see which one better fits your needs.
Specifically, about data access, MVC usually requires more code than Web Forms counterparts. For presenting tabular data (i.e where GridView is applicable), I think ASP.NET Web Forms is the easier way to accomplish things. However, most data driven Web apps are not just manipulating a table directly in a database. They have complex layout. StackOverflow is a great example of this. It is certainly data driven, but ASP.NET MVC better suits it.
There is no "right" way to do things without knowing what "things" are. MVC is a design pattern that solves a specific common problem - separation of presentational and domain logic. Every design pattern is a commonly accepted "good" solution to a specific problem.
Those solutions, combined with knowledge and experience are building blocks for a good design. The "right" way to do things is to study your problem domain, research on possible solutions and apply the set of solutions that work best to solve it. Making mistakes is a part of the process as well, so don't be afraid to experiment and then refactor with rigor until you reach the solution that serves you best.
MVC is the worst way to develop applications, except for all other ways that have been tried. :-)
Joking aside, MVC is one application design that encourages us not to write spaghetti code. It's a guideline that reminds us to keep business code separate from presentation code. This is very helpful as the application gets more complex.
There are other variations that achieve that same benefit, but are not strictly the same as MVC. Presentation-abstraction-control (PAC) is one example.
As for why Microsoft is so late in adopting MVC, I'm not surprised that they are. They are pretty well-known (at least in recent years) for being conservative instead of innovative. They prefer to let other smaller companies take the risks in an unproven market, then they learn from the mistakes, churn out an overengineered competitor solution, and dominate through marketing.
Example: Microsoft Internet Explorer was considered to be a latecomer to the browser market. Netscape had become very popular, leading the way in providing a platform for people to view HTML. Once the amount of HTML content on the Internet was at a useful level, Microsoft belched up their onomatopoeic "IE" product and quickly captured an overwhelming market share.
MVC is just one way of doing things. I like it because it helps to promote extensibility and is structured to allow testing and code reuse. There is no silver bullet, one true way to do everything but I use it quite often.
In regard to Microsoft, I would say that they adopted the pattern as an alternative to WebForms development for the reasons I mentioned above. I would recommend looking at Rob Conery's MVC Storefront and kind of play around with the examples to see how it works for you.
There is no "best" way to code things. It depends on the application in question; sometimes MVC is the right choice, and sometimes it's not. A good developer is able to weigh his/her options and choose the one that's best suited for a task at hand, instead of just going with the method du jour
If MVC solves the Primary Technical Imperative of managing complexity in your application then it may be a good solution, but it is by no means the only solution.
MVC is one of any number of design patterns. Whether it's the best technologically, or the simplest, or for what types of projects it's appropriate, are are all arguable (see other SO threads). In any case, few would argue against the prevailing consensus that for most cases, it's "Good Enough".
But it has the undeniable benefit that a lot of people use it, on a lot of different platforms.
So if you want to use a methodology that is likely to be around a while; or you don't want to depend on one vendor for support and extension and refinement; or you work in a group that would like to grow by hiring people from various backgrounds who will grok a shared methodology quickly; or you would like to maximize your opportunities to move on if you need to, then MVC is one of the very best ways to support those goals.
MVC being "Better" or "Worse" pattern is relative to the project.

Resources