I'm just starting out on GWT, and I came across the MVP (was actually trying to get ahead of myself..get a little motivation). I already have a desktop application that I want to modify, can a desktop application use the MVP? and if the answer is no, what components and or classes can be used to simulate having a model view presenter?
You cannot compare GWT and MVP: they are totally different things.
GWT is a toolkit that allows you to write desktop-like web applications in java.
Some years ago, Ray Ryan from google gave a talk at the Google IO where he presented an effective pattern to code web applications using GWT. This pattern is MVP. It was not invented by google, it was already there. It's just fit for purpose when you come to write desktop like web applications. At least, this is what Ray Ryan proposed in his talk.
As far as I know there are 2 most famous implementations of the MVP in GWT: Acticivties and Places (Google) and GWTP (Arcbees). You can also create one yourself as exercise, it is not too complex. The main concept is having the view as dumb as possible and put all the business logic in the presenter. The View and the presenter collaborate through an interface. Ok, easier said than done, I'll give you that. But you can google for more.
So yes, you can write a desktop application using MVP.
Related
For an upcoming project, I am looking into MVP as an option over MVC. I am highly familiar with and like MVC, and am merely trying to see if I will gain anything using MVP.
What I gather about MVP is that it uses the ASP.Net view engine/MVC# (which I don't particularly like) that uses the ViewState - adding a bunch of extra content to a rendered web page, and not built in routing functionality (can be written in separately into the Global.asax).
MVC/Razor on the other hand, renders very clean HTML.
Certain articles, such as this one seem to lean towards using MVP for multiple views, however in light of MVC3 with jQuery Mobile, there are some fantastic things that can be accomplished with this MVC.
How do these compare to what is currently available with MVP? What are some pros/cons or potential pitfalls of using MVP over MVC?
I am also considering using an existing MVP application to expedite development time.
I know you will cringe at the following, but looking for options:
While this app offers all the required features, if implementing this solution, how difficult is it to tie in additional MVC applications (I know that looks ugly)? If this was something that we had to consider (combining both), would it be best to wrap the application in MVC (routing) and have the MVP app contained inside?
The reason for this is a staggered feature update process, where the requirement is to implement a new feature (which is built using the MVC framework; the rest of the system is not). Future plans are to completely change the current framework to either MVC or MVP.
Thanks.
You seem to be confusing patterns with frameworks here.
Both MVC and MVP are design patterns, ASP.net MVC and MVC# on the other hand are frameworks that implement the MVC/MVP design patterns.
There is a massive confusion and lots of conflicting information on the web about the difference between MVC and MVP patterns and infact Martin Fowler the guy who made MVP popular since "retired" the pattern in favour of 2 new ones. See here
Both patterns are there to aid separation of concerns that is for sure, but other than that there really isnt a lot of difference between them, the only thing I have found is that MVC has a controller per widget on the screen where as MVP is one per screen although even this rule is violated if you have a complex screen. I am still unsure and use the terms interchangeably myself.
The one thing I see over and over is that in MVP the view is responsible for creating the presenter, however this is not part of the original design. It appears to have arisen from the fact that older web frameworks such as asp.net webforms were page centric. You had no way of changing this and so it was the page (view) that created the presenter. Basically the framework is getting in the way of the pattern and so a hack was made to shoe horn it in. Unfortunately this seems to have become the defacto way of describing MVP.
Basically my wall of text above is trying to say that if you want to do MVC properly use a framework designed to do it, ASP.net MVC is a good choice, it is part of the MS stack, well supported (MVC# hasnt been updated since 2008) and if you are already happy with it the loss of productivity trying to learn something else isnt really worth it imo
We are planning to start a new Sale Management System which will have about 12 subsystem.
We will use MSSQL2008 as a database.
We have got custom framework for ASP.NET that was built about 3 years ago which is not MVC type... And i am planning to move to MVC2 Framework.
My Questions are
What will be the big advantages of moving
to MVC2?
How about the learning curve for MVC2 and will there be any good
guided study flow?
We are planning to use Multirow (Instead of Grid View), inputman (For function key event and validation) from grapecity and ActiveReport.. Will they be easily fit into MVC2 Framework?
Well, you have some good questions, but I think you have abused the question asking here. You will find that people will be more apt to answer if you divide your bullets into their own questions.
Advantages of MVC? Well pick up any MVC book and find those. IMHO however it lets you get to more pure views. It allows for separation of the main components of MVC (Model View and Controller) which allows you to test them. For me its more than that. I like how it allows for more control over what is in the view. I get so sick of the ASP.NET rendered controls that break javascript.
Learning curve? Well that all depends on how well you know HTML, Javascript, AJAX, and JSON. If you dont know them well at all, you will have a bigger curve. Now AJAX and JSON are not a must, but they will make it work better. JQuery is MVCs best friend, learn it and live it.
I have to do a quite big project in J2ME for school.
I didn't used 'till now J2ME, so are there J2ME MVC frameworks
for which I can find books or at least very good online tutorials?
MVC is what I'm looking for because we have to do unit testing and
I'm familiar with MVC from ASP.Net MVC, Rails and Grails.
So, any good framework to use with this project?
We are developing this project for Blackberry cells.
With Java you don't really need a framework, creating MVC-based apps is just about using the principles correctly, so having controllers dictating the response to any action and so on. I'd think about using Observers to help by having your views observe your models and controllers observe your views (to get events and so on.) Unit-testing this then becomes quite simple.
If only, the fact is that every handset is very different - its extremely difficult to build an app that spans all the major J2ME-capable handsets that looks half way decent by following the basic principles. Which is why we end up doing things like using sprite based fonts (ugh). I don't think I've ever worked a mobile project using J2ME where we've managed to stick to just the standard J2ME (and, we try very hard). Even things that should be standard, like reading a JSON feed from a server, persistent storage or even really simple things like sprite rotation is really not very standard at all (yes, I'm looking at you RIM). And, then throw a requirement for Android into the mix and you're done.
I've used Polish, and its really very good. Commercial license is not cheap (but worth it), but for a school project its free. Flash (cough) is also a good alternative too. These days, personally, I find my projects need to span iPhone (Objective-C), Android (Java), Nokia (J2ME) and Blackberry (pseudo-J2ME) and it gets real tricky to not use a commercial framework (or roll your own, if you've the time and inclination). I'm open to ideas for frameworks that span all those platforms?
I'm not sure anything like this exist, as mentioned by previous poster, you just follow the principles of the pattern. However, look at J2ME Polish, it's a very nice framework which makes your life with mobile java much easier. Particularly strong features they offer is the usage of CSS for displays - this gives you pretty good "V" part in MVC pattern.
The examples that Microsoft's Patterns and Practices provides are quite helpful:
about a half-dozen simpler QuickStarts which touch on specific issues
the StockTrader reference implementation, which is a fairly rounded application
but it lacks a more useful base application that reads and writes to a data source (XML or database), allowing users to login, edit data, logout, etc. (something like what ASP.NET MVC comes with).
Since Prism applications can get quite complex and lengthy (the StockTrader example is almost 300 files without tests), it would be helpful to have an application that takes care of the CRUD bulk that everyone needs to build for most apps anyway.
Does anyone know of any data-editing Prism example apps out there?
Here (http://petedoesstuff.net/Blog/?p=79) you'll find a bunch of links to the samples of using the Prism.
Particularly, LateNight (http://code.google.com/p/cwpfsamples/) may be what you need. It has login screen and data editing functions.
Its feedback I've seen a lot of. I'll pass this onto the Team and see if we can get some more examples put online around this space.
I'm currently writing my own demo app now, so i'll also try and put that online via my blog.
Scott Barnes - Rich Platforms Product Manager - Microsoft.
The reason data access was left out of the Prism RI is because it is largely irrelevant to Prism. I would think you're better off looking at something like DinnerNow for those kind of things.
I'm a developer who builds mainly single page client side web applications where state in maintained on the client-side. Lately some of the applications have become very complex with very rich domain models on the client-side and increasingly complicated UI interactions.
As we've gone along we've implemented some very useful design patterns such as Passive View MVC, Observers, bindings, key-value observers (cocoa). I have recently got a lot of inspiration from the work of SproutCore and Cappuccino which are both JavaScript web frameworks inspired by Cocoa.
Obviously all of the problems that developers are having now in building complex web applications have been solved by desktop developers many moons ago. As few months ago all I knew about Cocoa was that is was some Apple thing, now it has had a big impact in the way I develop my web applications.
I was wondering if anyone who has more experience in building desktop GUI's than I, could point me any other frameworks out there which may also give me inspiration in terms of design patterns and structures to use for my JavaScript web applications?
I really don't care what languages or platform these frameworks reside in, as long as they can teach me something about good application design in general.
Fowlers GUI Architectures seems to be a reasonable survey done at a high level, I don't know how complete it is, however.
Have you taken a look at Cappuccino? It's a Javascript client-side framework, very heavily inspired by Cocoa. The Cappuccino creators even wrote their own Objective-C runtime in JavaScript so that Cappuccino apps can be written in Objective-J, an Objective-C-like syntax for JavaScript.