2008-11-11 7 views
2

Je travaille actuellement sur un système de gestion de contenu asp.net-mvc. Il serait incroyablement utile de pouvoir déployer des applications imbriquées, par ex./Boutique pour avoir une application séparée à l'intérieur. Ou même une autre instance des cms.Applications imbriquées avec ASP.NET MVC

J'ai trouvé des informations sur la limitation de l'héritage de web.config mais je n'ai aucune idée de la façon dont cela correspond à une application MVC. J'espère que c'est essentiellement la même pile que ça va juste fonctionner. Rien n'est jamais si facile cependant.

Si quelqu'un a une expérience en faisant cela, je serais vraiment reconnaissant. L'idée d'une grande application pour les gouverner tous n'est pas du tout agréable.

Si.

Répondre

2

Pour être honnête, votre plus grand obstacle sera de créer les routes et de s'assurer qu'elles n'interfèrent pas avec les routes déjà dans le système. Après que vous obtenez ce travail le reste est facile comme tarte.

La première chose dont vous aurez besoin est un HttpModule qui sera inséré dans le web.config sous le. Ce module sera utilisé pour enregistrer les ViewEngines ou Routes personnalisées que vous souhaitez enregistrer. Vous le faites de la même manière que dans Global.asax mais au lieu de les placer dans Application_Start, vous les placez dans le constructeur statique de HttpModule. C'est ainsi qu'ils ne sont chargés qu'une fois comme Application_Start. En procédant comme ci-dessus, vous aurez créé un module facilement transportable et qui n'exige pas que l'implimenteur modifie son code Global.asax pour que votre produit fonctionne. La deuxième chose que vous voulez probablement faire est de créer une configuration personnalisée dans le fichier web.config pour définir des choses comme le chemin racine de votre application. Cela sera ajouté à l'itinéraire lorsque vous le configurez dans le module HttpModule. Vous pouvez également utiliser cela pour stocker des informations de personnalisation qui ne sont pas appropriées pour la base de données. Last but not least, vous pouvez créer un ViewEngine personnalisé qui connaît et comprend votre structure de dossiers. Cela n'est nécessaire que si vous souhaitez stocker les vues dans un chemin différent des vues par défaut, afin de minimiser les conflits.

0

Je suis allé sur cette route avant (avec/blog), mais je l'ai trouvé faisable mais compliqué et difficile à maintenir. Au lieu de cela je me suis retrouvé à l'aide de sous-domaines:

  • www.example.com
  • shop.example.com
  • blog.example.com

Ce sont beaucoup plus faciles à maintenir parce que vous pouvez juste faites-les travailler en tant que sites distincts dans IIS. Et, bien sûr, vous pouvez toujours rediriger www.example.com/shop vers shop.example.com.

+0

Ceci est très mauvais pour le référencement, parce que chaque domaine est considéré comme un nouveau site Web. –

+0

S'il a vraiment besoin d'imbriquer une application ASP.NET MVC dans une autre, ce qui pourrait conduire à des chemins vraiment profonds et AFAIK, les moteurs de recherche n'aiment pas vraiment ceux-là non plus. :) – hangy

+1

En fait, ce n'est pas vrai. Google a modifié son algorithme pour traiter tous les sous-domaines comme le même site Web. – Keltex