2009-09-18 9 views
3

Pour plus de clarté quand je mentionne les niveaux dans ma question, je me réfère aux niveaux physiques (par exemple différents serveurs pour la présentation, l'application et base de données)application ASP.NET sur 3 niveaux physiques

Mon entreprise a un site Web public face que est actuellement construit comme un système à deux niveaux typique (serveur web et serveur de base de données).

Bientôt un projet commencera dans lequel nous allons réécrire l'ensemble du site. Nous sommes tenus de diviser le projet en trois niveaux physiques. En fait, quand vous considérez le navigateur, vous pouvez le considérer comme 4 niveaux physiques. D'après mon expérience, la plupart des applications asp.net sont construites sur 2 niveaux. L'application Web elle-même peut avoir plusieurs couches mais physiquement elle est déployée sur deux serveurs (Web et DB).

J'ai cherché des exemples mais il semble que les couches et les niveaux soient confus. Je vois beaucoup d'exemples multicouches mais pas d'exemples multi-tiers. En un mot, il semblerait que l'application web appelle les services Web ou les appels WCF à la couche d'application qui rassemble les données vers et depuis la base de données en utilisant ADO (ou L2S ou EF).

Est-ce que ASP.MVC aide à atteindre cet objectif? Cela rend-il plus facile ou juste différent?

Y at-il une bonne référence ou un exemple de quelque part?

+0

Après avoir longtemps lu le livre de l'AAPC, l'auteur a mentionné comment son cadre peut fonctionner sur plusieurs niveaux. Il a conseillé de ne le faire que pour les applications Windows et non pour les applications Web, car l'évolutivité peut être obtenue en utilisant un cluster. – RichardOD

Répondre

3

Gday Rick,

Je travaille pour une entreprise qui a la même politique à plusieurs niveaux en raison de la sécurité.

J'ai une application Web ASP.NET MVC sur un niveau qui se connecte à un niveau d'application sur lequel un service Web se trouve et est essentiellement une façade pour la base de données et un ordinateur central. Assez exactement la même chose que votre configuration. ASP.NET MVC rend cette configuration très agréable et facile à utiliser car vous pouvez facilement créer un modèle d'objet validé dans votre application ASP.NET MVC. Une fois que l'objet a réussi la validation haut de gamme, vous pouvez facilement le transférer au niveau de l'application via un service Web. Je suppose que ce serait facile à faire avec une application ASP.NET classique, mais je pense que MVC rend les choses beaucoup plus faciles!

Check out my blog pour un exemple de la façon dont j'ai validé mes modèles avant de les envoyer au serveur d'applications.

Cheers, Michael

+1

Merci pour la réponse. À première vue, cela ressemble beaucoup au bloc d'application Validator, qui fait partie de la bibliothèque d'entreprise (http://msdn.microsoft.com/fr-fr/library/dd203099.aspx). – HitLikeAHammer

+0

Cela ressemble à ça! Je ne savais pas que le bloc d'application Validator existait. Merci pour l'information. Je vais utiliser cela dans le futur! – Michael

0

Il s'agit d'une exigence particulière. Est-ce que ça vient du client? Il est possible qu'une éducation client soit nécessaire. Je sais que les systèmes J2EE peuvent être divisés en trois niveaux, avec le serveur Web sur le premier serveur d'application au milieu et un DB sur l'arrière, mais je n'en ai pas entendu parler avec .NET. À mon avis ASP.NET MVC ne va pas aider, ou entraver ce scénario.

+0

Mon entreprise est dans le secteur financier et ils sont très anaux sur la sécurité. Il y a toute une division de l'informatique consacrée à la sécurité. Cette exigence vient d'eux. Ils croient que le système sera plus sécurisé. Le matériel a été acheté, donc ça va arriver. – HitLikeAHammer

+1

Ouch. Dans cette situation, je travaillerais en étroite collaboration avec cette équipe de «sécurité» pour découvrir comment l'ajout d'un niveau supplémentaire rend les choses plus sûres. Bug tout le monde dans l'intérêt de la construction d'un système sécurisé. Si vous êtes chanceux, ils peuvent reculer et vous laisser construire un système plus traditionnel, sinon vous leur ferez au moins penser à plus dans le futur. –

2

Fondamentalement, votre modèle serait exposé non pas comme Linq2Sql, Entity Framework ou tout autre ORM, mais à partir du niveau intermédiaire, probablement par WCF. Ceci présente le défi habituel autour de l'authentification et de l'autorisation - à savoir comment l'authentification circule entre les niveaux., Mais cela est unique à MVC, une solution WebForms aurait les mêmes points de suspension. Vous perdrez également les bits de validation du modèle. ORM peut fournir et devra vous fournir vous-même dans votre référentiel de services Web, mais il ne s'agit que d'implémenter les bonnes interfaces.

+0

Je suis d'accord que MVC ne fera pas de mal. Cela pourrait aider un peu. Ce qui serait vraiment aider, je pense, est ADO.NET Data Services (a.k.a. Astoria). C'est plus facile que le "simple" WCF à cet effet. –

7

Je ne pense pas que l'ajout d'un niveau supplémentaire augmente la sécurité, mais il ralentit nettement les performances et augmente considérablement les coûts de développement et de la complexité. En fin de compte, vous pouvez partitionner votre application avec un niveau supplémentaire comme vous le souhaitez. Si c'était moi, je créerais probablement la passe la plus stupide à travers le niveau que je pourrais si on me donnait cette exigence "intéressante". En fait, la gestion de la sécurité autour d'un autre niveau implique une augmentation significative des opportunités d'exposition accidentelle des failles de sécurité. ASP.NET MVC ne devrait avoir aucun impact, mais vous finirez probablement par utiliser quelque chose comme WCF. Pour le regroupement des données, vous souhaiterez probablement utiliser des objets DTO qui ne sont liés à aucune base de données ou ORM particulière.

Ce n'est pas une situation que je serais heureux de trouver moi-même. Une complexité accrue ne mène pas à une sécurité accrue.

0

Comme mentionné précédemment ... MVC n'aura pas vraiment d'importance dans cette situation. La ferme analogique que j'ai est que nous avions un client financier distinct leurs services web en niveaux ...

donc quelque chose comme 1) public face charge des services Web équilibrés 2) services web 3) Code d'application 4) Je ne me souviens pas si les couches 3 et 2 ont été physiquement séparées (cela fait un moment), mais la couche 1 était essentiellement mince et a simplement jeté les demandes sur le dmz vers le service interne.

Donc, vous pourriez probablement faire quelque chose de similaire avec le site web ... potentiel de goulots d'étranglement, mais vous obtiendrez la séparation physique dont vous avez besoin.

Bonne chance!

Questions connexes