78036

Popularity of MVP for SharePoint WebParts

Question:

Is it a popular techinque to use the Model View Presenter (MVP) design pattern when creating Web Parts for SharePoint? It seems (to me) that this pattern is applied more often in the custom application space. So, if you have any thoughts on this, please share...

[Edit]<br /> Perhaps the more important question is, if MVP is less popular in a SharePoint WebPart than in a custom application, why do you think this is (what <b>factors</b> contribute to this observation)?

Answer1:

It's probably not popular, but it's also probably a good design practice.

<blockquote>

Perhaps the more important question is, if MVP is less popular in a SharePoint WebPart than in a custom application, why do you think this is (what factors contribute to this observation)?

</blockquote>

It is the "new" approach in the SharePoint world. Everyone is used to doing it the old SharePoint way. This is also true of ASP.NET and ASP.NET MVC.

MVC and MVP patterns are becoming more popular because they allow you to "decouple" the presentation layer from the underlying logic, essentially "uncomplicating" the UI.

Personally, I think anything that makes SharePoint an easier platform to program on is a welcome relief.

Answer2:

Because SharePoint is not compatible with ASP.NET MVC? It's planned somewhere down the line.. e.g. you're doing a lot of plumbing yourself before you can get any functionality going and I imagine out of all web parts created for SharePoint most will not be very complex because they are likely to be only a small part of the complete -SharePoint- solution.

Here is someone who built something like it, sort of: <a href="http://www.spworks.co.uk/arf/default.aspx" rel="nofollow">ARF</a>

Answer3:

I have developed some webparts for SharePoint using MVP Pattern and I find it pretty good from the point of testability. However I discovered following problem: If you have a webpart with custom EditorPart (the pane with custom properties) then the decoupling through MVP is not easily achievable, because the data from Toolpart is stored back to the WebPart.

Second thing: I do not think that the MVC pattern will be introduced into SharePoint soon (my oppinion I am not an insider), the impact would too big. However there exists an <a href="http://www.codeplex.com/SharePointMVC" rel="nofollow">SharePointMVC</a>

Framework. This has a rather big disadvantage that you have to create a seperate WebApplication for it.

Recommend

  • css keyframe transform not rotating more than 180 degrees
  • Popup does not closed event Stayopen set as False
  • CKAsset in server record contains no fileURL, cannot even check for nil
  • Does ADL work for the global namespace?
  • Youtube iframe api allow=“autoplay” Chrome 65
  • How can I tear down a SparkSession and create a new one within one application?
  • Java Generics - When to use “T” and “?” [closed]
  • JAX-RS, components can access which information through the request life cycle
  • offset parameter of curand_init
  • Word to html conversion using php
  • Clueless what I'm doing wrong setting up Spring Boot REST app
  • Sphinx4 ConfidenceResult and SpeechResult
  • Errors with Codename One “Send iOS Build” and “Send Android Build”
  • org.springframework.security.oauth2.common.exceptions.InvalidGrantException: Bad credentials
  • Show and remove “No Record Found” message in jqgrid 4.6.0
  • Hyperledger fabric's ChannelCreationPolicy
  • imacros: javascript i get www._undefined_.com error
  • Search image on Google images with the new Custom Search API?
  • Google Maps V3 (PHP/MYSQL with custome infobox)
  • Background beacon detection and Notification (Both iOS and Android) for Eddystone beacon?
  • E: Malformed entry 1 in list file /etc/apt/sources.list.d/sbt.list (Suite)
  • Get the UTM tags with Facebook Marketing API
  • How to escape xpath in php
  • How can I filter an array of dictionaries in 'updateSearchResultsForSearchController' to s
  • Multiple canvases (pages) in Fabric.js
  • Adding horizontal slider to QTableWidget
  • Why do you need 2 Javascript files for cross-platform Cordova plugin?
  • content must have a ListView whose id attribute is 'android.R.id.list'
  • Arraylist of strings into one comma separated string
  • Julia 1.0 UndefVarError - Scope of Variable
  • Find angle of point on circle
  • Ember.js + JQuery-UI Tooltip - Tooltip does not reflect the model / controller changes
  • 'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs
  • How can I ssh into a server that requires 2 password authentication using python's paramiko mod
  • Capture SIGFPE from SIMD instruction
  • Using Service Component Runtime
  • How do I use TagLib-Sharp to write custom (PRIV) ID3 frames?
  • CAS 4 - Not able to retrieve the LDAP groups after successful authentication