Wdrażanie baz danych członkostwa w środowiskach przedsiębiorstw
Autor : Jason Lee
Uwaga
Od czasu napisania tego artykułu dostawcy członkostwa ASP.NET zostali zastąpioni przez ASP.NET Identity. Zdecydowanie zalecamy aktualizowanie aplikacji w celu korzystania z platformy ASP.NET Identity , a nie dostawców członkostwa w momencie pisania tego artykułu. ASP.NET Identity ma wiele zalet w porównaniu z systemem członkostwa ASP.NET, w tym :
- Lepsza wydajność
- Ulepszona rozszerzalność i możliwość testowania
- Obsługa uwierzytelniania OAuth, OpenID Connect i uwierzytelniania dwuskładnikowego
- Obsługa tożsamości opartej na oświadczeniach
- Lepsze współdziałanie z platformą ASP.Net Core
W tym temacie opisano kluczowe zagadnienia i wyzwania, które należy przezwyciężyć podczas aprowizacji baz danych usług aplikacji ASP.NET (najczęściej nazywanych bazami danych członkostwa) w środowiskach testowych, przejściowych lub produkcyjnych. Opisano w nim również metody, których można użyć do sprostania tym wyzwaniom.
Ten temat stanowi część serii samouczków opartych na wymaganiach dotyczących wdrażania w przedsiębiorstwie fikcyjnej firmy o nazwie Fabrikam, Inc. W tej serii samouczków użyto przykładowego rozwiązania — rozwiązania Contact Manager — do reprezentowania aplikacji internetowej o realistycznym poziomie złożoności, w tym aplikacji ASP.NET MVC 3, usługi Windows Communication Foundation (WCF) i projektu bazy danych.
Metoda wdrażania w centrum tych samouczków jest oparta na metodzie podzielonego pliku projektu opisanego w opisie pliku projektu, w którym proces kompilacji jest kontrolowany przez dwa pliki projektu — jeden zawierający instrukcje kompilacji dotyczące każdego środowiska docelowego i jeden zawierający ustawienia kompilacji i wdrażania specyficzne dla środowiska. W czasie kompilacji plik projektu specyficzny dla środowiska jest scalony z plikiem projektu niezależnego od środowiska w celu utworzenia pełnego zestawu instrukcji kompilacji.
Jakie są problemy podczas wdrażania bazy danych członkostwa?
W większości przypadków, gdy tworzysz strategię wdrażania bazy danych, pierwszą rzeczą, którą należy wziąć pod uwagę, jest to, jakie dane chcesz wdrożyć. W środowisku programistycznym lub testowym warto wdrożyć dane konta użytkownika, aby ułatwić szybkie i łatwe testowanie. W środowisku przejściowym lub produkcyjnym jest bardzo mało prawdopodobne, że chcesz wdrożyć dane konta użytkownika.
Niestety, ASP.NET bazy danych członkostwa wprowadzają pewne specyficzne wyzwania, które sprawiają, że ta decyzja jest o wiele bardziej złożona:
- Wdrożenie tylko do schematu pozostawi bazę danych członkostwa w stanie nieoperacyjnym. Wynika to z tego, że baza danych członkostwa zawiera pewne dane konfiguracji (w tabeli aspnet_SchemaVersions ), których baza danych wymaga w celu działania. W związku z tym, jeśli wykonasz wdrożenie bazy danych członkostwa tylko schematu, aby wykluczyć dane konta użytkownika, musisz uruchomić skrypt po wdrożeniu, aby dodać podstawowe dane konfiguracji.
- W zależności od konfiguracji bazy danych członkostwa dostawca członkostwa może użyć klucza maszyny do szyfrowania haseł i przechowywania ich w bazie danych. W takim przypadku wszystkie dane konta użytkownika wdrożone za pomocą bazy danych staną się bezużyteczne na serwerze docelowym. Z tego powodu wdrażanie danych konta użytkownika nie jest obsługiwanym scenariuszem.
Wybieranie strategii bazy danych członkostwa
Podczas wybierania sposobu aprowizowania bazy danych członkostwa w środowisku serwera przedsiębiorstwa należy użyć następujących wytycznych:
- Wszędzie tam, gdzie to możliwe, nie wdrażaj baz danych członkostwa. Zamiast tego utwórz bazę danych członkostwa ręcznie na docelowym serwerze bazy danych. Jeśli schemat bazy danych członkostwa nie został dostosowany, możesz po prostu utworzyć nowy w miejscu docelowym przy użyciu narzędzia rejestracji ASP.NET SQL Server (aspnet_regsql.exe).
- Jeśli nie masz możliwości wdrożenia bazy danych członkostwa — na przykład jeśli wprowadziliśmy obszerne modyfikacje schematu bazy danych, należy wykonać wdrożenie bazy danych członkostwa tylko w schemacie, aby wykluczyć dane konta użytkownika, a następnie uruchomić skrypt po wdrożeniu, aby dodać wymagane dane konfiguracji. Ogólne wskazówki dotyczące tych metod można znaleźć w temacie How to: Deploy the ASP.NET Membership Database without Including User Accounts (Jak wdrożyć bazę danych członkostwa ASP.NET bez uwzględniania kont użytkowników).
Należy pamiętać, że schemat bazy danych członkostwa może być dość statyczny. Nawet jeśli baza danych członkostwa została dostosowana, jest mało prawdopodobne, aby trzeba było regularnie aktualizować schemat — nie będzie ona zmieniana z taką samą częstotliwością jak kod w aplikacji internetowej lub projekcie bazy danych. W związku z tym nie należy uwzględniać bazy danych członkostwa w żadnym zautomatyzowanym lub jednoetapowym procesie wdrażania.
Aktualizowanie schematu bazy danych członkostwa za pomocą narzędzia VSDBCMD
Jeśli po pierwszym wdrożeniu zmodyfikujesz strukturę bazy danych członkostwa, możesz nie chcieć użyć narzędzia Internet Information Services (IIS) Web Deployment Tool (Web Deploy) w celu ponownego wdrożenia bazy danych. Funkcja wdrażania bazy danych w narzędziu Web Deploy nie obejmuje możliwości wprowadzania różnicowych aktualizacji docelowej bazy danych — zamiast tego narzędzie Web Deploy musi porzucić i ponownie utworzyć bazę danych. Oznacza to, że utracisz wszystkie istniejące dane konta użytkownika, które są zwykle niepożądane w środowiskach przejściowych lub produkcyjnych.
Alternatywą jest użycie narzędzia VSDBCMD do zaktualizowania schematu docelowej bazy danych. VsDBCMD obejmuje dwie ważne funkcje. Najpierw można zaimportować schemat istniejącej bazy danych do pliku dbschema. Po drugie można wdrożyć plik dbschema w istniejącej bazie danych jako aktualizację różnicową, co oznacza, że wprowadza tylko zmiany wymagane do aktualizowania docelowej bazy danych i nie tracisz żadnych danych.
Aby zaktualizować schemat bazy danych członkostwa, możesz użyć tych kroków wysokiego poziomu:
- Użyj akcji importu VSDBCMD, aby wygenerować plik dbschema dla źródłowej bazy danych członkostwa. Ta procedura jest opisana w temacie Instrukcje: importowanie schematu z wiersza polecenia.
- Użyj akcji Wdróż w usłudze VSDBCMD, aby wdrożyć plik dbschema w docelowej bazie danych członkostwa. Ta procedura jest opisana w dokumentacji wiersza polecenia dla VSDBCMD.EXE (wdrażanie i importowanie schematu).
Podsumowanie
W tym temacie opisano niektóre problemy, z którymi można się zmierzyć, gdy trzeba aprowizować bazy danych członkostwa ASP.NET w różnych środowiskach docelowych. W szczególności wyjaśniono, dlaczego wdrożenia tylko schematu pozostawią bazę danych członkostwa w stanie nieoperacyjnym i dlaczego wdrażanie danych konta użytkownika nie jest obsługiwane. W tym temacie przedstawiono również wskazówki dotyczące aprowizacji, wdrażania i aktualizowania baz danych członkostwa w różnych scenariuszach.
Dalsze informacje
Aby uzyskać więcej wskazówek i przykładów używania vsDBCMD, zobacz Dokumentacja wiersza polecenia dla VSDBCMD.EXE (wdrażanie i importowanie schematu) i Instrukcje: importowanie schematu z wiersza polecenia. Aby uzyskać więcej informacji na temat tworzenia baz danych członkostwa przy użyciu aspnet_regsql.exe, zobacz ASP.NET SQL Server Registration Tool (aspnet_regsql.exe). Aby uzyskać bardziej ogólne wskazówki dotyczące wdrażania baz danych członkostwa, zobacz How to: Deploy the ASP.NET Membership Database Without Including User Accounts (Jak wdrożyć bazę danych członkostwa ASP.NET bez uwzględniania kont użytkowników).