This is big. I arranged a special meeting (with the help of Karl) with Scott Guthrie today on the last day of the MVP Summit. I brought along fellow CodeBetter bloggers Darrell Norton, Scott Bellware and Jeremy Miller. Scott laid out a concept for how to make ASP.Net better support MVC much like Rails and MonoRail try to conform to this model.
If you aren’t familiar with MVC frameworks, the most important thing to know is that the Controller is king. The view only spins up and renders if the Controller decides it is the right thing to do.
With Scott’s prototype, there is a new handler factory that infers from the URL which controller to instantiate and load. The controller then decides what to do with the request. The controller can load a view (.aspx file) and let it render. The view can access properties of the Controller. The ASP.NET lifecycle and control model and still be used in the view, or you can let the Controller render a view of customized templates. Either way, the Controller is in control.
This model allows the Controller to be unit tested easily since contact with the HttpContext, Request, Response, etc can be easily mocked with this model.
The codebehind and markup is the view (what I’ve been saying all along), and it is completely subordinate to the Controller. The view isn’t even created until the Controller decides it is time.
With the model, the need for Model-View-Presenter goes away for web apps. I used M-V-P in the passed to get around the control model and get control to a testable class. With this new MVC framework, the Controller goes first and runs the show for the whole request.
A url might look like http://localhost/myApp/ShoppingCart.mvc/CheckOut where ShoppingCart is the Controller class and “CheckOut” is a method like:
[Action]
public void CheckOut(){
//do something
}
For post-backs, the control model still works and the view can delegate to the controller, but I have asked that this be looked at hard with the goal of putting the controller in charge of post-backs as well when needed. Scott is very open to feedback, and he plans to involve community experts in the planning of this new framework.
It might be hard to imagine this new framework from just this blog post, but trust me. This is very cool, and ScottGu is headed in the right direction. I’ll vouch for that. We’re going to end up with a new ASP.NET paradigm that so much easier to work with and, most importantly, easier to test!
Great concept Scott. I love what you are doing.
UPDATE: More info http://codebetter.com/blogs/jeffrey.palermo/archive/2007/10/05/altnetconf-scott-guthrie-announces-asp-net-mvc-framework-at-alt-net-conf.aspx
Good summary. Makes MVC a bit clearer for me.
More info http://codebetter.com/blogs/jeffrey.palermo/archive/2007/10/05/altnetconf-scott-guthrie-announces-asp-net-mvc-framework-at-alt-net-conf.aspx
I just read somewhere in blogs recently that Microsoft is almost ready with MVC framework and are about to announce somewhere in October.
Can any one confirm this again.
Microsoft has been quiet a lot about MVC framework and VBx ( The Dynamic Language ).
IronRuby shall work on Net framework and shall fully support Ruby on Rails…. My question is which MVC pattern are they going to use.
Mr. Scott Guthrie in one of his blogs comments said that MVC for asp.net will be independent of language.
Hoping to get some fresh news about this.
I think MS should come out with something. I am looking forward to it. I see nothing wrong with competition in the space. I don’t see it as bad for developers to have more options. I feel like MS is listening to the community by responding to a pattern that seems effective and incorporating it into their offering.
Oh please, please can we have a MonoRail vs. ASP.NET cage fight? Oh…that would be awesome!
I for one think if Scott Guthrie does it (or his team obviously), it’ll blow the socks off the current offerings.
Not to mention that it will become the defacto standard for so many developers since it comes from MS. And it’ll be supported, etc by the largest, most talented set of developers we could hope for.
Yeah, I’ll try the official version when it comes out. I’d be an idiot not to.
I hope ScottG looks closely at monorail. I really like the smart dispatch controller.
No news yet.
Unbelievable how so many software discussions end up about how company/group X has already made product Y. If your neighbor buys a new car do you tell him that Ford was actually the first one to mass produce a car? And that Volvo was the first one that introduced three point seat belts? You’d never be invited to another barbecue…
Can we as developers please move past this nonsense? You as a developer have a choice to use whatever you want, and to base your choice on anything other than cost or technical merit is not a good way to success. Let’s see what Microsoft can do first? (Scott Guthrie and his team tend to come up with pretty good stuff, have a look at LINQ for example) If it’s not good, don’t use it!
I think you will all be amazed if in the end you can switch a project to MVC by changing the web.config, adding a handler and changing some links in your pages to point to a new type of URL.
But to go on and say that the project is somehow not good/not worth it/stupid/not needed when it is clearly in a prototype phase is a bit short sighted.
/end of rant
PS. Any news on this project since this post?
J2EE has been doing this for several years with Struts, Webwork, SpringMVC etc
What will MS try next – EJB
Hi All,
Please check this out. ASP MVC framework!
http://www.troika-asp.com
Probably the first “proper” MVC framework for ASP 3.0!
It uses OO JavaScript for Model and Controller logic and XSLT transformation templates for the View.
Pav.
@Mike
> I hate doing anything that is not type. . .
This is severely limiting, and this immediately limits you to strongly-typed languages. In fact, if you are creating a web application, the simple javascript on a page is not type-safe. You don’t know if it works until you run it.
There is no substitute for testing. I’ve seen lots of code that compiled fail at runtime. Type-safety does not guarantee running without crashing. If you are covered with a suite of automated tests, then you know that your code works regardless if it is type-safe, duck-typed, or just a bunch of happy strings or Xml.
One important point missed and this applies to MS and OSS. A tool is only as good as it’s Design Time support. Take NHibernate and ActiveRecord and years later along comes ActiveWriter and knowing OSS and MS you get a good framework and tools are not the priority.
ActiveWriter Rocks and should have been priority number one, and should mature in sync with the framework. Take this approach and your OSS will be widely adopted. This also applies to MS quick to give us a framework and slow to give us tools that make us more productive with that framework.
I hate doing anything that is not type safe and crashes at runtime, passing around strings, out of sync xml files, strings in attributes and MS and OSS are both still doing this.
For all of you who keep making comments about low quality of the OSS stuff out there, and claiming that frameworks like MonoRail are a “TOY”… Why not take a look at the stuff MS has been putting out lately. ATLAS is a TOY. WebForms is a recipie for BLOAT, and where is the (REAL) integrated testing?
MonoRail is not for those who are “still trying to figure out how to do CRUD”, it’s for those who know that CRUD is CRUD, and they want to get past that to the specific logic of thier application.
While you sit there developing your site’s CRUD layer with MS’s prescribed methodologies I have already finished Prototyping and showing my app off to management. While you are just starting to write your Business Layer, I have already released version 1.0 and the whole thing is fully Unit Tested.
That said, if Microsoft’s MVC is better than MonoRail, perhaps I will use it. Perhaps I will not. When they released J++ I didn’t switch because it wasn’t as good as what I was using (Java) and the same will continue to hold true.
Oh and someone said “Also, anything Rails like gets us back to ASP.”
That is JUST RIDICULOUS. Take a look:
RAILS (Ruby OR MonoRail):
Web request is sent directly to the CONTROLLER which decides what to do, (update a record, display HTML data, etc. It has models to handle the domain logic, and views for customizing the output)
ASP:
Web request is sent directly to the PAGE (the view!) and the VIEW will contact another ASP script for logic or it contains its own logic.
ASP.NET:
Web request is sent directyl to the PAGE… STILL! and the logic still is either in another file from there or INCLUDED IN THE PAGE… STILL!
ASP.NET 2.0:
Web request is sent directyl to the PAGE… EVEN STILL!
Sounds like rails is quite a ways away from ASP, and ASP is still… ASP.
“the original MVC” — three-of-n tiers. 10+ year old technology, no aspect (AOP) programming needed here. Still, you would ALL like to see this: http://codebetter.com/blogs/jeffrey.palermo/archive/2007/03/16/Big-News-_2D00_-MVC-framework-for-ASP.NET-in-the-works-_2D00_-level-300.aspx (and the circle is now complete). hehe .. love ya all, thanks for the fun read!!!
This sounds like the FrontController pattern rather than MVC/MVP, doesn’t it?
As many others have said, if Microsoft does MVC/MVP, they really need to do it right. A few years ago, I think I heard some MS people cliam that ASP.NET already was MVC. They need credibility on this, and more importantly ASP.NET needs a proper UI architecture.
In MVC, the Controller is a strategy that the view uses to handle user input. In the original MVC, it polls for user actions, but it can also be event-driven. The purpose is to handle fairly low-level events. In PAC, the Control is a mediator. Mediator is a fine pattern, but it has a different purpose and solves a different problem
My point is that the code behind is the Controller and if your coding style makes the code-behind take care of the View, then you need to review your code. The View is the ASPX and the Model can be generated by ORM tools, if you choose to.
Also, anything Rails like gets us back to ASP.
By the way, you do understand I hope that I’m deliberately trying to flame. I do see where you are coming from. You are the “tools” guy – oh, let’s build this and that, this will make life much easier for developers… I’ve seen this suprerb framework by HeineMeine, let’s do it ASP.NET
And I’m the “get things shipped to the client” guy. So I’m like, “wtf, yet another 20 year old produces the 1042th MVC framework in the world and we rush it in .NET – what do we want to achieve?”
So you get the picture.
@Dean,
Forgive me for misunderstanding, but what is your comment? Do you have a blog where you present your views more clearly?
Yes, you can do the same in Rails, mate, by concatenating strings in the Controller into a variable then get it in the HTML in the < %= ... %> tag. ASP anyone? Then your Controller will be the View, no matter what HeineMaine says.
Yes, your ASPX page CAN consist of a single ASP:Placeholder control and yes, you can add programmatically controls to the Controls collection of this placeholder control in the codebehind, but just because you can, it does not mean this is the View.
By maybe, just maybe, you can also use declarative datasource to databind your grid defined in the ASPX? And use autoupdate/delete/insert for the datasource? And just have business logic in the code-behind? Is it possible?
Yes, you can do the same in Rails, mate, by concatenating strings in the Controller into a variable then get it in the HTML in the < %= ... %> tag. ASP anyone? Then your Controller will be the View, no matter what HeineMaine says.
Yes, your ASPX page CAN consist of a single ASP:Placeholder control and yes, you can add programmatically controls to the Controls collection of this placeholder control in the codebehind, but just because you can, it does not mean this is the View.
By maybe, just maybe, you can also use declarative datasource to databind your grid defined in the ASPX? And use autoupdate/delete/insert for the datasource? And just have business logic in the code-behind? Is it possible?
@Balasundar,
Please elaborate. Can you give some examples?
You guys are thinking mind is biased the current MVC framework pattern. Why don’t think in a different approch to acheive the same.
@Dean,
The ASPX is view also. In ASP.NET, there are two ways to render the view: declaratively and programmatically. You can do it all one way or a combination of the two. You can have no markup and add all control programmatically. Conversely, you can have all markup and add no controls programmatically. it’s up to you, but with whatever method you choose, you are still constructing the view.
So, what is the ASPX declaration then, if the code-behind is the View? And what is different from an ASPX template compared to what we have with the ugly < %= %> or < % %> Rails syntax (from classic ASP, mind you) in an. rhtml Rails template residing in the model folder (so it should be the model)
@Dean,
Please give some unit test examples for testing code in the code-behind class.
Also, have a look at http://codebetter.com/blogs/raymond.lewallen/archive/2007/02/20/Controller-_21003D00_-code_2D00_behind.aspx
The code-behind is part of the view, and ADO.NET is a mechanism for persisting the model, but it is not the model itself.
What exactly can’t you test currently? The presentation is in the ASPX declaration, the “controller” is in the code-behind, the model is ADO.NET or stored procedures. You can easily build a mockup of the ASP.NET runtime that passes all the cycle of the page (Init, Load, PreRender, Render) with Reflection, what else do you need?
Java / Rails fanboys, I’m getting tired of that. “Scaffold” is just FormView without the command prompt and the IDE.
What’s next? You do not like the Xml parser? Oh, lets build SAX parser for dotnet. The situation is worse enough already, with C# 2.0 adding more complexity with generics, anonymous function (javascript in C#? come on), etc. Please please please, stop thinking.
Oh, yeat another guy trying to convert ASP.NET to PHP. Great, great. Lets spawn 1,000 MVC frameworks, so we can enjoy LAMP like development.
Get a holiday, mate. Visit the beach… or something.
why can’t ms just buy off or provide support to monorail ?
isn’t that what ibm or sun provided to oss projects?
You guys come quick, I’ve got this great idea for a wheel I want to reinvent! And it’s even easier because we can make it out of our piles of money!
I would suggest the T inteface should look like this
Interface PageTempate
{
IFrameList m_FrameList
}
Interface IFramList: System.Collection
{
}
Inteface IFrame
{
ValidateList Validation // has the javascript code for validation
UIComponentList ComponentList // List of server side components
}
In this prototype, the controller loads the appropriate view by relative path to the .aspx. The view can be only markup – pure template, or it can take advantage of controls. This can work without postbacks, or you can use postbacks if you prefer.
The view has to inherit from PageView or if it needs properties from the controller (like the Model to display), it can inherit from PageView where T is the type of the controller it depends on. Then the view can grab specific properties off of the controller.
I would recomment making “T” an interface so that the view doesn’t bind directly to the controller type. I’ve been collaborating with Scott Guthrie to work out the kinks. There is still a lot of work to do. This is only in prototype form.
The web application mvc pattern needs to be considerd as ameba pattern. Evey cell has it own functionality. The challenge is how do they colloborate each other.I share my ideas in the due course
Sounds great,
MVC as been something that Asp as battled with for a long time, Can’t wait to us a beta version of the framework
Hey Nando,
Sorry about that. You’re not the first one that has had problems with that. I’m going to look into that, and possibly even SubText or CS as a replacement.
Anywho, I would agree that MS doesn’t recognize the great talent in the OSS .NET community as much as it should. But I also don’t necessarily think the OSS community should just abandon underlying frameworks like .NET as a basis for providing OSS tools that can make us more productive and improve the applications we build on top of the .NET platform.
I actually really like C# and the .NET framework (runtime) and would like to both use and participate in ongoing OSS projects like NHibernate and MonoRail in the future.
To JoeyDotNet (I was not able to reply in his blog… it’s buggy I guess):
You commented this in your blog:
“So bottom line, using tools that help me do my job better make me happy (dare I say enthusiastic) whether they come directly from Microsoft or from the great community of developers working on OSS projects.”
“Is that a bad thing?”
This is my thinking:
Well, it’s a bad thing if you consider “ethics”. Is it ethical to take away the innovation others do and present yourself as the “inventor” of everything? Is it ethical to punish creative developers by competing with them and taking away their ideas? You can answer that.
On the other hand, I think it’s also bad business… Many developers will realize with time that it’s a bad idea to innovate for Microsoft technologies, because M$ just steals your ideas and all your work and merits are gone. So, I expect that Open Source projects will begin to decrease for M$ technologies, because M$ just disrespects them.
My $0.02.
Dimon said: “MonoRails guys are Rock, the first of all, they did it first!!!”
Oh c’mon, they ripped Ruby on Rails, which ripped every other MVC framework before it. This isn’t a zero sum game people. Folks will continue to use MonoRail and Maverick.NET in the future. Just because Microsoft *finally* gives us an MVC framework doesn’t mean the death of OSS. Just like SharePoint didn’t kill DNN.
Besides, I can see a slim possibility of Microsoft putting the MVC handler up on CodePlex and allowing us to hack on it.
C,mon on people, would you use a hammer on a screw?
Sometimes you just need a screwdriver to get the job done. Ruby on Rails will make you despise the typical web form style of development when you just need a simple, quick and elegant solution. Rails is not meant to be everything to everyone. You won’t be calculating a scatter search or backward triangularization with rails. But you could make some use of your all powerful C# web service from rails in an AJAX call.
Don’t be afraid, go ahead and look directly at the light at the end of the tunnel…
http://www.onlamp.com/pub/a/onlamp/2006/12/14/revisiting-ruby-on-rails-revisited.html
Well, I don’t agree with people who think that MonoRail is a toy. Please, have a look at this solution more deeper! MonoRails guys are Rock, the first of all, they did it first!!!
GuyIncognito, why must I wait when Microsoft will do something like MVC (may be will do or may be won’t do)? If MonoRail’s guys did it already, people can use it!
You are right only about Monorail hasn’t such support from Book writers, magazine article authors, and etc. But community can help to people without it.
I personally have a love/hate relationship with WebForms. Well, actually it’s closer to tolerate/hate. There are things I tolerate with WebForms and then there are things that I hate about WebForms. I never was a huge fan of WebForms. I thought someone was trying too hard to make CGI programming act like a VB6 form. The best part about the Web Form architecture for me is the ability to derive from existing controls and change/extend their behavior/markup and the ability to create new server/composite/user controls. I’m not a huge fan of WebForms by any means though… and that’s why more interest by Microsoft in alternatives to the Web Form (while still allowing for Web Forms when the situation calls for it) is great news to me. I like options!
Jeffrey,
Interesting news!
In Scott’s prototype, how is the view associated with the controller? In other words, how does the Controller get the correct view instance?
http://joeydotnet.com/blog/SinceWhenIsItBadToBeEnthusiasticAboutOSSDevelopmentTools.aspx
Since when is it bad to be enthusiastic about OSS development tools?
I was using MonoRail as an example, but i will respond anyway. It seems to me all you did was look at monorail at a cursory level. SO what exactly can’t you do with MonoRail? it’s a pretty straight forward MVC framework with multiple view engines and some helpers.
I don’t get the love fest with WebForms. It’s such a leaky pain in the butt abstraction.
Sorry, but Monorail is a toy. I took a look at it again today and it’s still laughable – it’s only useful for only the most trivial of web apps. If you’re still scratching your head about how do CRUD, then by all means use Monorail. For the rest of us that need something just a bit more useful, Monorail hardly delivers.
And if Monorail is going to strongly suggest not to use WebForms, then I strongly suggest they provide alternatives that provide most, if not all of the functionality that WebForms delivers.
And if one day the Monorail guys get bored, I’d rather not be left hanging with a product that will have no further support.
I for one look forward to MSs effort with a MVC framework. For those of you that for some strange reason think that having MS provide an official framework will somehow mean that Monorail will drop off the face of the earth, think again.
And Sun has had many “official” extensions to Java – most of them have crashed and burned – a prime example is their XML functionality, which was absolute garbage. Most people ignore it and use Xerces/Xalan.
I’d like to see Microsoft going to MVC. I am tired of persuading management and clients to use anything other than average/standard/mortal WebForm design approach.
I just hope it would be a good implementation. It will be worse if Microsoft come up with a bad implementation and force upon the developer community. That will literally kill the good idea. Just make me feel chilly only think about it.
GuyIncognito,
Nonsense. The only reason some of what you say is true is exactly because of attitudes like yours. MonoRail and projects like it often end up failing because they end up competing against MS. Why doesn’t MS nurture a development community that acknowledges many of these OSS projects? Why doesn’t MS promote, MonoRail or NHibernate, as an example of the really cool alternative architecture that can be built on top of .NET technologies?
MS really doesn’t do a very good job of leading in the realm of engineering and architecture.
Why does MS compete with the community? Is there some in depth business reason why MS doesn’t do what SUn does with Struts? I assume they figure they can appear as innovators to the average joe ms dev by repeating and borrowing from established OSS projects.
Has MS ever acknowledged projects like NHibernate, MonoRail, NUnit? Why can’t MSDN produce quality material using projects like those? (N)Hibernate has many years of tried and tested production code out there. I think MS is doing so many a disservice by not emphasizing these projects. I would much rather build my business on something like (N)Hibernate than something new and feature deficient from MS. The problem is the culture of a large percentage of MS dev shops is they don’t even know that much of this stuff exists.
Christian
The only rational business reason that makes sense to me is
How about a word from our sponsor… Planet Reality Check?
Maybe I don’t want to wait around for your “open source” project to mature? Maybe I don’t want to invest my time and energy learning how to utilize your “open source” project only to have you move on to something else (a better job, get married, have children, start a new hobby, etc) and leave me stranded with a bunch of “coming soon” or “to be implemented in the version.next” code. Look at the wasteland of open source projects on gotdotnet, codeplex, sourceforge and the internet in general.
I think it’s pivotal for Microsoft to involve ORM and MVC into the .NET framework. How else will this ideas gain mass acceptance? How many of your average developers even know what ORM or MVC is? How many have heard of MonoRails or “insert the name of your favorite 3rd party ORM here”? If Microsoft introduces these topics to the .NET framework, book authors will write about them, magazine editors will include articles on them, and your average code jockey (of which 99% of us who have posted a response here are NOT!) will become familiar with them. That will open up the opportunity for 3rd parties to sell “better” (or alternative) solutions and may increase the demand (assuming the 3rd party can demonstrate a need for the alternative) by increasing the awareness of ORM and MVC technologies.
You might argue that TDD didn’t need Microsoft. Microsoft came second to the game and for the most part failed (you can argue over which group offered the better overall solution — but there is little argument over which group offered the more accessable option). I agree. I think Microsoft screwed up by making the assumption that your average code monkey didn’t need the features of Visual Team Studio System (unit test, bug tracking, code coverage, automated builds, etc). That stuff should have been available in Professional and possibly even the Express editions. Just because I’m sometimes a “team of 1″ doesn’t mean I don’t need any less of a development environment.
By the way… all this talk about “Monorail already does that!” is crap. I applaud the efforts made by the Monorail guys/gals, but it’s really such a hacked conglomeration of libraries (and in a lot of cases… libraries/projects that have lost steam or do not have a native .NET following) that it’s only for your vodoo developers who are willing to build a project on technology that might fade away on a whim or change course. Not to mention all the hoops you have to jump through in order to get started. Rarely does Microsoft ever release a mainstream product without substantial documentation and examples to get you up and running. I know a number of people who have browsed through the Monorail site and have either been discouraged by the complexity of the solution, unimpressed with the progress or been utterly confused as to where to start. We’re not all genius code monkeys who have 6 hours each night to devote to tinkering around with experimental frameworks.
Tell me more about these alternate page templating options in ASP.NET v.next, would ya?
http://mavnet.sourceforge.net/
bclubb,
In this case the difference between MVC & MVP is quite a bit.
In Model View Presenter the Presenter is a stateful object that manages the behavior and workflow of the View throughout the page lifecycle.
In Model View Controller as we’re talking about it here, the Controller responds to the request, builds the model (which might just be the Controller itself), and passes the final model to the view for rendering in one serial process.
I only can say this is great that Microsoft decided to have a look to another approach for MVC implementation. We work with ASP.NET classic paradigm few years it was fine for some time. But in time we understood this approach has many problems for example the complexity, testability. When we found Castle Monorail we were surprised because this framework provides great MVC like it described above and ever more, there is a great idea to implement different view engine to allow us to have a full control of HTML rendering. But the main problem was because many people think – “uh, this approach goes in efferent way from Microsoft that way it’s bad”. Summary, let’s do and use at first such approaches as We want but Microsoft and they will have to do the same
Quick question. What is the main difference between MVP and MVC. Jeffrey stated that with the model, the need for Model-View-Presenter goes away for web apps. Could you explain this a bit more?
I’ve been going through the Web Client Software Factory and that’s where most of my VP knowledge comes from. I’ve gone through Monorail for MVC, but I’m not sure how one could be favored over the other here.
This is great – i was wishing/hoping/praying for something like this to come along. Now if I could only get them to use SubSonic
)))
If there was some innovation and leadership involved I wouldn’t mind. But as it stands I have a great ORM solution that now gets questioned because MS decided to create LINQ , even though the tool I use has 4 years of maturity on them. And I have a very workable MVC solution that most certainly will also get questioned by potential customers. Some of the more timid Managers try to only work with code that comes from MS. Funny I know. So given a choice between a superior 3rd party tool and a MS solution they drift toward the MS solution and it takes a lot of selling to get them to see it differently. Of course, having our industry get more and more complex doesnt help that particular case.
Aaron, ask the Konfabulator and Virtue Desktop devs how they like producing software for the Mac.
Face facts, if you produce software for any of the big platforms, there’s a chance the platform owner will copy you and you’re SOL.
I agree. This is just plain silly how MS has to compete with the .NET community at every turn. Its quite discouraging and hampers innovation. Why should I invest my free time in some cool interesting open source project for .NET when MS will just come out a year or two later doing the same thing?
It would be nice if they at least acknowledged the open source community and what it has done. But they don’t even do that. They pretend as if they don’t exist and then copy their work. Nice
It really makes you think twice before spending your free time on a .NET project.
I don’t see any contradiction between Microsoft’s distribution of OSS derivative projects and their ability to fully support them.
Microsft can indeed leverage mature OSS in a fully supported manner assuming they can minimize the risk factors. That means obtaining satisfactory licensing agreements, participating as peers in the project, contributing heavily in the realm of documentation, acquiring the right to maintain the project in perpetuity (including forking), and having complete control over the patches they adopt in their supported stable distribution. Of course not all OSS projects will be suitable candidates for partnership or agree to such terms.
The alternative is for Microsoft to continue building “solutions” while the community innovates. In point of fact, they can do this and still turn a hefty profit (good business) but it’s boring (bad tech).
Contrariwise, the community is certainly not under the same production pressures as Microsoft. Continuous innovation produces high volatility which is a risk Microsoft might not be able to afford to take… At least not for early releases.
Thanks Karl. I was ignorant about that. Poor Microsoft…
I wasn’t able to attend the meeting, but I also saw a demo from Scott and it _is_ a very nice approach. It won’t be like the Web Client Factory from P&P, and it WILL help educate the drones about TDD.
As for “competing against the community”, I think you all have a valid point of view, but try to look at it from the other side too. Microsoft has customers like us telling them to embrace more OSS projects, while at the same time having customers (in much larger quantities), telling them they want tools fully supported by Microsoft. I spoke to too many people this past week who had clients who refused to use anything unless it was supported by Microsoft or another big vendor. Yes it sucks, but only blaming Microsoft for this is completely ridiculous. There are also licensing restriction with some OSS projects about MS being able to incorporate it into their commercial/closed-source projects.
It’s real easy to bitch about this one, but it also happens to be quite unfair.
I realize I came across as negative.
But, really, if ASP.NET team is going to change directions, this would be, IMO the best approach for them to take. You’d be foolish not to see the direction the development world is going and ignore it.
So, I applaud ScottG, he’s been a great thing for MS!
I can see ‘control developers’ becoming ‘component developers’
“Why? oh why reinvent the wheel again when their’s MonoRail?
Looks like the MSTest failure to replicate NUnit.
”
Amen. The ONLY value I see of MS coming into this is that drone developers will say “hey, MVC must be good, MS is using it…”
But seriously, I hope their MVC implementation isn’t too heavy – that is my concern with the Patterns and Practices MVC setup.
Maybe ScottG can talk to the guys doing Igloo?
jpalermo: you’re describing the NIH syndrome
Comment got too long, responded at my blog. Why use up all your disk space with my ranting?
Good news about this new ability though, bad news for me. I just start looking into see if this was possible with the current version of the framework. Now I’ll look like a hanger-on if I release it. heh heh
Sun doesn’t own IP on Struts and encourage its use. Sun doesn’t have anything to do with Tomcat and yet they use it as a reference to a correct JSP/Servlet container implementation.
Sun doesn’t compete with the Java Community. Why does MS have to?
@macournoyer & cv:
Reinvent the wheel? Microsoft doesn’t have the option of incorporating MonoRail into ASP.NET. They don’t own the intellectual property. Microsoft has many, many customers who want _them_ to provide and support extensions to ASP.NET. I, for one, use many, many open-source and 3rd party tools and libraries to help deliver software systems, but there are others who prefer to have Microsoft support most of their platform. Microsoft might upset some of us at times, but saying to these other customers “sorry, we’re not going to do it. MonoRail has already done it. Go use them” isn’t an option. First, that’s not business. Second, it would royally piss of other customers. Microsoft can only hope to keep most of us mostly happy most of the time.
As far as mucking it up: I personally trust Scott Guthrie, and I’ll be providing feedback along the way.
We just did a podcast on Monorail with two devs who are living in it full time:
http://www.hanselman.com/blog/HanselminutesPodcast55MonoRailAsAlternativeASPNET.aspx
I’ve been ramping up on Rails (the Ruby kind) and let me just say for the record that it rocks! Rails for .Net would be great. However, if MS has anything to do with it , they will muck it up like everything else.
I’ve been using the MVP pattern in a ASP.NET app and it has been a breath of fresh air for development and testing.
Lets hear it for real patterns that work.
Thanks,
-cv
Why? oh why reinvent the wheel again when their’s MonoRail?
Looks like the MSTest failure to replicate NUnit.
Thanks for passing this on, Jeffrey. I am really excited about this functionality as I am right smack in the middle of the Web Client Software Factory and MonoRail to get this functionality and it would be nice to have an offering from Microsoft that served as a solid combination of the pros and cons of each, etc.
Scott is working and getting some bits, but it will be a while. This has just been created in prototype form, so there is a lot of work to do to get it to where it needs to be. That’s not to say that a page handler factory wouldn’t be easy to create right now to do a similar thing.
The MVC model can be used with regular control-based pages. The url determines the handler that’s activated, so it can be mixed an matched. In fact, a Controller could dispatch a view that _uses_ some controls. i.e. Telerik controls could still be used without Telerik modifying them. From what I saw, no capabilities are taken away, just more options are added.
I’m glad to hear that Microsoft is going to support this model. Since you mentioned it is a new handler factory, I assume that I’ll be able to run both traditional .aspx and MVC pages within the same project. I’ll be moving to this model quickly (when it’s available) and won’t be able to convert existing pages.
Great. When can I download it? Now or is this a part of the ORCAS release? Will is be release in CTP soon?
By the way. What we saw was a concept that is going to be worked into the product, so the details will change, but it looks like a great concept.
Before last year I hadn’t ever been involved in any web development outside of ASP/ASP.NET (smattering of some older stuff: PHP and Cold Fusion) until taking a job where I had to do Java development.
The architecture for my Java web-based projects was MVC: model = business objects , view = the .jsp (equivalent of .aspx) for rendering and controller = business class to handle the processing needs (e.g. reading from the database, processing requests to insert/update/etc., passing request to the .jsp view).
This sounds like catch-up to me…. but I guess I see the value in different architectures. Is the aim similar to the Java methodology? I haven’t really melded the MVC concepts into my ASP.NET architectures, but it would be interesting (and probably simpler and easier to test) to have that option.
Please… Please… Please… Look at others that have already done this.
This is great news.
The real question is why they inventing their own, of course.