Plugin architecture in .NET like wordpress - asp.net-mvc

We're going to upgrade our old classic ASP system to .net.
This old system manages different ecommerce sites.
What we would like to do is to create a asp.net (vb) system like wordpress with plugins.
This way, the layout can be completely different between the sites.
For example a login plugin can be anywhere on the page with different settings for layout and display. Or even with a separate plugin css.
This way the setup time is minimal for the webmasters, and the developers can develop new plugins.
Now i'm stuck at .net 2. and haven't had time to follow the advantages of 4 or even 4.5.
I just start reading about MVC.
What is a good solution to follow? MVC? Any available frameworks for this setup?
If you have any links o samples, please share.
thanks for the help.

The Orchard CMS project is a good example of a modular, plug-in based MVC application: http://www.orchardproject.net/ Although not branded as a Microsoft project, they have contributed to its development, and I believe part of the intent is for it to be used as a reference architecture.
There are also any number of very similar questions here on SO, many with good answers:
How to use Plugin Architecture in ASP.NET?
Plugin-like architecture in .NET
I can't personally think of any reason you would stick with .NET 2.0 if 4.0 or 4.5 is an option. Each version of the framework has built upon those previous to it, and I don't know of any mainstream body of opinion that thinks any version has been a major mistake. Whether you choose MVC or WebForms is a matter of personal taste. My own view would be that MVC is marginally better-suited to the kind of modular development you are planning, but other's mileage may vary...

Take a look at http://umbraco.org/ it's build on ASP.NET MVC and already has the features you want, Umbraco is open source so you can learn allot from it's code base.

Related

Building Dotnetnuke like App using Asp .net MVC

Can some one guide me how to build an app like dotnetnuke using asp .net mvc? The idea goes like this.
Build a core portal management app
The core app will have basic features like settings/users/pages etc.,
Then build modules/plugins on top of this and load them dynamically
I checked the http://www.chrisvandesteeg.nl/2010/11/22/embedding-pre-compiled-razor-views-in-your-dll/ article, but I think this is not what I want.
My question is to know how to build the core? The core should have options to load the controllers & views dynamically.
I also tried MEF but this does not seem to have an option to do the above loading of controllers & views dynamically.
Can someone give pointers of how to do this?
Umbraco and Orchard are both open source ASP.NET MVC content management systems. If you can't think of any good ways to approach it - it would be worth spending a couple days combing through the source code of these applications and seeing how they do it.
Typically when working with plugins and loading things dynamically you'll want to have a good understanding of polymorphism, building interface classes, reflection, etc. You may want to pick up head first design patterns - all that is not ASP.NET MVC specific.

Umbraco with bespoke application

For the my project I am currently umbraco platform as CMS to work with other Bispoke (custom) application that is going to be developed in MVC3. The scope of the project roughtly is as follows:
1) Product Download & Deployment (Bispoke)
2) Product Documentation (CMS)
3) Suport (tickts & its workflow cycle) (Bispoke)
4) Blogs (CMS)
My question is what is the best approach to use Umbraco to integrate it with Bispoke apps? There will be some functionalities which will be shared between CMS and Bispoke apps.So I would like to get these two under one roof.
Any idea how to achive this?
Thx
This is quite a broad question so it's hard to answer definitively.
However there are some areas that you need to watch out for.
Firstly take a look at this question which talks about MVC and Umbraco integration:
MVC and Umbraco integration.
Next is the question of shared functionality. This is a broader architectural issue. In this case create a business logic layer which can be used by either Umbraco or MVC. That way you can share the functionality and keep the actual MVC and Umbraco portions of the app nicely separated.
The biggest issue will be sharing of things like templates or UI code that could be shared but implemented differently depending on if it is being consumed by MVC or WebForms.
It's rather hard to be any more specific.

How to integrate SEO and ensure the performance in Portal Architecture Design?

I need to develop a Portal for B2C from scratch, right now I faced two problem:
1.How can I integrate SEO into the architecture design ?
2.How to design the architecture to ensure the performance ?
I need to revamp a website like this :http://www.airasia.com/bd/en/home.html
And why all the enterprise level website are using *.html ? but not a jsp or asp ? what technology do they use ?
I need to get more knowledge on this field to better finish my job, can someone point me a direction ?
Thanks !
1) I have a post for developers considering SEO in their web application that can help you on your SEO.
2) For you I would suggest ASP.NET web forms since it is well equipped for beginners (as well as advanced enterprise level sites). Here is a get started guide to ASP.NET to help you out. It allows you to use routing in ASP.NET 4 to make nice URLs and URL rewriting if on an IIS server. For now though if you are not too confident, I really wouldn't worry about that.
Anyone more advanced passing by I would recommend ASP.NET MVC by the way. It is a tough concept to crack but well worth it. Unit testing is easier, speed of development is great, stateless. Lovely.
Caveat - Other than touching old school JSP for a bit, my experience is mainly Microsoft so cannot say that the ASP way is THE way. Just a good way.
That might actually be a static page, at least the version I saw had nearly nothing 'dynamic' on it that javascript could do easily. Static serves very quickly and scales beautifully.
As for jsp vs asp vs rails vs django, they can all be configured to not require cluttering URLs with file extensions.
If you focus on high-quality data in your application that is easily parsed by simple tools, search engines will find you. Use text for text (text in images is useless), no flash or silverlight or java applets. If your site is useful on your phone, it'll be great for search engines.
I found some useful resources on this topic :
http://developer.yahoo.com/performance/
And a useful plugin yslow for performance improvement.
Book: High Performance Web Sites

How to design a plugin architecture for ASP.NET with MVC Web application

Introduction:
Now I know this question could be very broad and it would be too hard to answer without me asking something specific. So All I ask is just some direction, or a brief high level explanation of a design, or maybe there is already some framework out there that could help me get started...I'm not sure.. I have never designed a plugin architecture before, so maybe there is some resource/example you could point me to on the web that would help me learn so that I may come up with my own solution.
Details of my question:
My intention is I would like to create a plug-in architecture for a new pet-project that I am building in ASP.NET MVC.
I would like to design it so that it has some sort of plug-in ability for all, or at least most, of the application's components.
The reason I would like to do this, is so that I may be able to do deployments with nearly zero down time. The idea is that when I want to deploy the latest version I would drop in the new DLLs into a specific folder, and the application would load up the new plug ins and that is it.
For exapmle, lets say I add a new "contacts" feature to my web application where users can search, add and delete contacts. I would like to be able to deploy that by way of plugins.
Is something like this even possible for Web Applications? Or am I just dreaming?
It's definitely possible.
You will need to define a pretty comprehensive interface that represents everything your plugins will have to do. You should approach it by differentiating what is "core" to your application, and where the extensibility points are. For example, where will the plugins be accessed? Will they be tabs on a page, or links in a sidebar? What properties does each plugin need to have in order to fit into the plugin container?
Generally, plugins are enumerated via reflection by looking for assemblies that implement the plugin interface.
Just for encouragement, we've done this with an enterprise product that provides a generic framework for "management" interfaces for web sites. Developers just need to drop in a plugin dll that builds specific property pages, and they show up in the management interface menu, all the navigation is taken care of, and their dll's just have to worry about their own domain logic.
There is always the dll-way where you define some interfaces that plugins follow.
But for web application, especially ASP.NET MVC, you need a controller, views and so. Probably these can be included in a dll file using prepared controller factory to handle that, but it would be hard to develop these plugins.
Some inspiration for code (or db) embedded content: Haacked about that
ASP.NET MVC version 2 will support areas, where you can put some parts of the application into different folders within the app. This way you can just upload some files and the app will recognize these new files. Read more there Haacked blog
PS: I found another person here on S.O. asking the same question as me:
Plug-in architecture for ASP.NET MVC It might be useful for someone researching the same topic.

Is there an official ASP.NET MVC reference/example app?

I'm struggling to find a good reference application for ASP.NET MVC. By "reference", I specifically mean an application that flexes all of the framework's features in the Microsoft-sanctioned manner, such as:
Master pages
Partial views
Strongly-typed models
Authentication
Custom routes
etc...
The open source examples that are out there (CodeCampServer, SutekiShop) either add significantly to the base framework or don't use all of the baked-in features.
Have you seen Rob Connery's MVC Storefront Webcast Series?
http://www.asp.net/learn/mvc-videos/#MVCStorefrontStarterKit
Source Code:
http://www.codeplex.com/mvcsamples/
I asked more or less the same question here: What are some projects which are examples of best practices for ASP.NET MVC?
As for official, the closest would be Rob Connery's which was mentioned.
This isn't official but you could check out Kigg:
http://www.codeplex.com/Kigg
It's a sizable Asp.net MVC Digg-clone with some decent code in it. Used on dotnetshoutout.com
I would consider the Nerd Dinner MVC reference app: http://nerddinner.codeplex.com/ for people just starting
While this might be a little late to the show, I believe that the ASP.net team would like people to start using the MVC Music Store as the official mvc reference example. The Music Store application is using the Razor view engine with Entity Framework's code first approach (also demonstrates database first) along with examples of dependency injection, test driven development, jQuery integration and getting and using NuGet packages.
A second reference example seems to be more on the cutting edge of things and is provided by the Patterns and Practices people. This is called the Silk Project and takes advantage of the latest web standards like HTML5, CSS3 and ECMAScript 5 along with modern web technologies such as jQuery, Internet Explorer 9, and ASP.NET MVC3.
These together would probably show you the newest in ASP.net MVC development along with some pretty neat ideas and examples.

Resources