2010-11-09 21 views
1

Je suis un peu confus. Dans de nombreux tutoriels, y compris certains dans le site Web MSDN et ASP.NET, il est presque toujours sur Adhésion. Mais lors de l'examen de la classe AccountModel créée par défaut, il s'agit d'un objet appelé _provider de type MembershipProvider. D'abord, je me demande pourquoi ils n'utilisent tout simplement pas Membership au lieu de MembershipProvider? d'autre part (et le plus irritant), pourquoi quand je tente d'utiliser _provider.GetAllUsers(), on me demande de fournir des paramètres aussi des choses telles que pageindex, pagesize, etc. Mais, quand j'utilise adhésion .GetAllUsers(), je n'ai rien à fournir.ASP.NET MVC: Pourquoi l'exemple de modèle de compte utilise MembershipProvider au lieu de simplement l'appartenance

À quoi sert d'avoir Membership et MembershipProvider avec des méthodes légèrement différentes?

EDIT

Ce sont quelques-uns des documents que j'ai utilisés pour apprendre à utiliser des membres. Je parle de mes livres.

ASP.NET tutorial,

4GuysFromRolla,

An other 4GuysFromRolla,

MSDN

Merci de nous aider

+3

Testabilité! N'avez-vous pas lu à ce sujet dans les tutoriels? – bzlm

Répondre

3

MembershipProvider est une classe abstraite, ce qui signifie que vous ne pouvez pas créer une nouvelle instance, vous devez plutôt créer votre propre classe personnalisée qui en hérite, puis implémenter les fonctions. Avoir une classe de base comme constructeur signifie que vous pouvez passer dans n'importe quelle classe qui en hérite. Comme d'autres l'ont dit, cela aide lorsque vous testez. Vous pouvez transmettre une fausse implémentation ou un simulacre de MembershipProvider pour tester toutes les fonctionnalités de votre contrôleur/classe.

+0

Merci pour vos réponses qui m'aident à comprendre pourquoi l'adhésion n'a pas seulement été utilisée, mais plutôt Membership.Provider. – Richard77

+0

Mais, pourquoi présentent-ils des méthodes légèrement différentes? Par exemple, pourquoi dois-je fournir des paramètres avec Membership.Provider? alors que je ne dois pas si je ne l'utilise pas? – Richard77

+0

Pouvez-vous clarifier votre commentaire? – Omar

2

Si vous utilisez simplement l'adhésion au lieu d'un fournisseur, vous devez fournir une fichier de configuration avec un fournisseur de simulation pour vos tests. De cette façon, vous créez simplement un faux fournisseur d'appartenance et l'utilisez lorsque vous créez l'instance MembershipService. L'adhésion est juste une enveloppe autour du MembershipProvider par défaut. Donc, comme l'a dit @bzlm, il est plus facile à tester d'utiliser le fournisseur plutôt que la classe statique Membership.