2010-11-09 1 views
1

Я немного смущен. Во многих учебниках, в том числе на веб-сайтах MSDN и ASP.NET, почти всегда около Членство. Но при изучении класса AccountModel, созданного по умолчанию, речь идет об объекте с именем _provider типа MembershipProvider.ASP.NET MVC: Почему образец модели учетной записи использует членствоProvider вместо простого членства

Во-первых, мне интересно, почему они просто не используют членство вместо MembershipProvider? во-вторых (и наиболее раздражающий), поэтому, когда я пытаюсь использовать _provider.GetAllUsers(), я попросил предоставить также параметры вещи, такие, как pageindex, размер_страницы и т.д. Но, когда я использую Членство .GetAllUsers(), мне не нужно ничего снабжать.

Какой смысл иметь членство и членствоProvider с несколько разными методами?

EDIT

Таковы некоторые из документов, которые я использовал, чтобы узнать, как использовать членство. Я говорю о своих книгах.

ASP.NET tutorial,

4GuysFromRolla,

An other 4GuysFromRolla,

MSDN

Спасибо за помощь

+3

Испытание! Разве вы не читали об этом в учебниках? – bzlm

ответ

3

MembershipProvider - это абстрактный класс, то есть вы не можете создать его новый экземпляр, вместо этого вы должны создать свой собственный пользовательский класс, который наследует его, а затем реализует функции.

Наличие базового класса в качестве конструктора означает, что вы можете пройти в любом классе, который наследуется от него. Как говорили другие, это помогает при тестировании. Вы можете передать фальшивую реализацию или макет MembershipProvider, чтобы проверить все функциональные возможности вашего контроллера/класса.

+0

Спасибо за ваши ответы, которые помогут мне понять, почему он не просто использовал членство, а членство. – Richard77

+0

Но почему они представляют несколько разные методы? Например, почему мне нужно предоставить params членству. Provider? в то время как мне это не нужно, если не использовать его? – Richard77

+0

Можете прояснить свой комментарий? – Omar

2

Если вы просто использовать членство вместо поставщика, вы должны предоставить файл конфигурации с поставщиком макета для ваших тестов. Таким образом, вы просто создаете фальшивый членский провайдер и используете его при создании экземпляра MembershipService. Членство - это всего лишь оболочка по умолчанию MemberhipProvider. Так как @bzlm сказал, более тестируемым является использование поставщика, а не статического класса Membership.