Samouczek: wdrażanie aplikacji ASP.NET Core i Azure SQL Database w usłudze aplikacja systemu Azure Service

W tym samouczku dowiesz się, jak wdrożyć aplikację opartą na danych ASP.NET Core w celu aplikacja systemu Azure Service i nawiązać połączenie z usługą Azure SQL Database. Wdrożysz również usługę Azure Cache for Redis, aby włączyć kod buforowania w aplikacji. aplikacja systemu Azure Service to wysoce skalowalna, samoobsługowa usługa hostingu sieci Web, która może łatwo wdrażać aplikacje w systemie Windows lub Linux. Mimo że w tym samouczku jest używana aplikacja ASP.NET Core 7.0, proces jest taki sam w przypadku innych wersji platformy ASP.NET Core i ASP.NET Framework.

Dla tego samouczka wymagane są następujące elementy:

Aplikacja przykładowa

Aby zapoznać się z przykładową aplikacją używaną w tym samouczku, pobierz ją z repozytorium https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore lub sklonuj przy użyciu następującego polecenia Git:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

1. Tworzenie usługi App Service, bazy danych i pamięci podręcznej

W tym kroku utworzysz zasoby platformy Azure. Kroki użyte w tym samouczku umożliwiają utworzenie zestawu bezpiecznych domyślnie zasobów obejmujących usługę App Service, usługę Azure SQL Database i usługę Azure Cache. W procesie tworzenia określisz następujące elementy:

  • Nazwa aplikacji internetowej. Jest to nazwa używana jako część nazwy DNS aplikacji internetowej w postaci https://<app-name>.azurewebsites.net.
  • Region do fizycznego uruchamiania aplikacji na świecie.
  • Stos środowiska uruchomieniowego dla aplikacji. W tym miejscu wybierasz wersję platformy .NET, która ma być używana dla aplikacji.
  • Plan hostingu aplikacji. Jest to warstwa cenowa obejmująca zestaw funkcji i pojemność skalowania aplikacji.
  • Grupa zasobów dla aplikacji. Grupa zasobów umożliwia grupowanie (w kontenerze logicznym) wszystkich zasobów platformy Azure potrzebnych dla aplikacji.

Zaloguj się do witryny Azure Portal i wykonaj następujące kroki, aby utworzyć zasoby usługi aplikacja systemu Azure.

Krok 1. W witrynie Azure Portal:

  1. Wprowadź ciąg "baza danych aplikacji internetowej" na pasku wyszukiwania w górnej części witryny Azure Portal.
  2. Wybierz element z etykietą Web App + Database w obszarze nagłówka Marketplace . Możesz również przejść bezpośrednio do kreatora tworzenia.

Zrzut ekranu przedstawiający sposób użycia pola wyszukiwania na górnym pasku narzędzi w celu znalezienia kreatora tworzenia aplikacji internetowej i bazy danych.

Krok 2. Na stronie Tworzenie aplikacji internetowej i bazy danych wypełnij formularz w następujący sposób.

  1. Grupa zasobów → wybierz pozycję Utwórz nową i użyj nazwy msdocs-core-sql-tutorial.
  2. Region → dowolny region świadczenia usługi Azure w pobliżu.
  3. Nazwa → msdocs-core-sql-XYZ, gdzie XYZ jest dowolnymi trzema losowymi znakami. Ta nazwa musi być unikatowa w obrębie całej platformy Azure.
  4. Stos środowiska uruchomieniowego → .NET 7 (STS).
  5. Czy dodać usługę Azure Cache for Redis? → Tak.
  6. Plan hostinguPodstawowa. Gdy wszystko będzie gotowe, możesz później skalować w górę do warstwy cenowej produkcyjnej.
  7. Wybierz pozycję SQLAzure jako aparat bazy danych. Usługa Azure SQL Database to w pełni zarządzany aparat bazy danych platformy jako usługi (PaaS), który jest zawsze uruchomiony w najnowszej stabilnej wersji programu SQL Server.
  8. Wybierz pozycję Przejrzyj i utwórz.
  9. Po zakończeniu walidacji wybierz pozycję Utwórz.

Zrzut ekranu przedstawiający sposób konfigurowania nowej aplikacji i bazy danych w kreatorze Aplikacji internetowej i bazy danych.

Krok 3. Ukończenie wdrożenia trwa kilka minut. Po zakończeniu wdrażania wybierz przycisk Przejdź do zasobu . Jesteś przekierowany bezpośrednio do aplikacji usługi App Service, ale tworzone są następujące zasoby:

  • Grupa zasobów → kontener dla wszystkich utworzonych zasobów.
  • Plan usługi App Service → Definiuje zasoby obliczeniowe dla usługi App Service. Zostanie utworzony plan systemu Linux w warstwie Podstawowa.
  • Usługa App Service → reprezentuje aplikację i działa w planie usługi App Service.
  • Sieć wirtualna → zintegrowana z aplikacją usługi App Service i izoluje ruch sieciowy zaplecza.
  • Prywatne punkty końcowe → punkty końcowe programu Access dla serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.
  • Interfejsy sieciowe → Reprezentuje prywatne adresy IP, po jednym dla każdego z prywatnych punktów końcowych.
  • Serwer usługi Azure SQL Database → dostępny tylko zza jego prywatnego punktu końcowego.
  • Usługa Azure SQL Database → baza danych A i użytkownik są tworzone dla Ciebie na serwerze.
  • Usługa Azure Cache for Redis → dostępna tylko zza prywatnego punktu końcowego.
  • Prywatna strefa DNS stref → włącz rozpoznawanie nazw DNS serwera bazy danych i pamięci podręcznej Redis w sieci wirtualnej.

Zrzut ekranu przedstawiający ukończony proces wdrażania.

2. Sprawdź parametry połączenia

Kreator tworzenia wygenerował parametry połączenia dla bazy danych SQL i pamięci podręcznej Redis Cache. W tym kroku znajdź wygenerowane parametry połączenia na później.

Krok 1. Na stronie Usługi App Service w menu po lewej stronie wybierz pozycję Konfiguracja.

Zrzut ekranu przedstawiający sposób otwierania strony konfiguracji w usłudze App Service.

Krok 2:

  1. Przewiń do dołu strony i znajdź AZURE_SQL_CONNECTIONSTRING w sekcji ciągów Połączenie ion. Ten ciąg został wygenerowany na podstawie nowej bazy danych SQL przez kreatora tworzenia. Aby skonfigurować aplikację, ta nazwa jest potrzebna.
  2. Ponadto znajdź AZURE_REDIS_CONNECTIONSTRING w sekcji Ustawienia aplikacji. Ten ciąg został wygenerowany na podstawie nowej pamięci podręcznej Redis cache przez kreatora tworzenia. Aby skonfigurować aplikację, ta nazwa jest potrzebna.
  3. Jeśli chcesz, możesz wybrać przycisk Edytuj po prawej stronie każdego ustawienia i wyświetlić lub skopiować jego wartość. Później zmienisz aplikację tak, aby korzystała z funkcji AZURE_SQL_CONNECTIONSTRING i AZURE_REDIS_CONNECTIONSTRING.

Zrzut ekranu przedstawiający sposób tworzenia ustawienia aplikacji.

3. Wdrażanie przykładowego kodu

W tym kroku skonfigurujesz wdrożenie usługi GitHub przy użyciu funkcji GitHub Actions. Jest to tylko jeden z wielu sposobów wdrażania w usłudze App Service, ale także doskonały sposób ciągłej integracji w procesie wdrażania. Domyślnie każde git push repozytorium GitHub uruchamia akcję kompilacji i wdrażania.

Krok 1. W nowym oknie przeglądarki:

  1. Zaloguj się na istniejącym koncie GitHub.
  2. Przejdź do https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
  3. Wybierz pozycję Rozwidlenie.
  4. Wybierz pozycję Utwórz rozwidlenie.

Zrzut ekranu przedstawiający sposób tworzenia rozwidlenia przykładowego repozytorium GitHub.

Krok 2. Na stronie usługi App Service w menu po lewej stronie wybierz pozycję Centrum wdrażania.

Zrzut ekranu przedstawiający sposób otwierania centrum wdrażania w usłudze App Service.

Krok 3. Na stronie Centrum wdrażania:

  1. W obszarze Źródło wybierz pozycję GitHub. Domyślnie funkcja GitHub Actions jest wybierana jako dostawca kompilacji.
  2. Zaloguj się do konta usługi GitHub i postępuj zgodnie z monitem, aby autoryzować platformę Azure.
  3. W obszarze Organizacja wybierz swoje konto.
  4. W obszarze Repozytorium wybierz pozycję msdocs-app-service-sqldb-dotnetcore.
  5. W obszarze Gałąź wybierz pozycję main.
  6. W górnym menu wybierz pozycję Zapisz. Usługa App Service zatwierdza plik przepływu pracy w wybranym repozytorium GitHub w .github/workflows katalogu.

Zrzut ekranu przedstawiający sposób konfigurowania ciągłej integracji/ciągłego wdrażania przy użyciu funkcji GitHub Actions.

Krok 4. Wróć do strony GitHub rozwidlenia przykładu, otwórz program Visual Studio Code w przeglądarce, naciskając . klawisz .

Zrzut ekranu przedstawiający sposób otwierania środowiska przeglądarki programu Visual Studio Code w usłudze GitHub.

Krok 5. W programie Visual Studio Code w przeglądarce:

  1. Otwórz plik DotNetCoreSqlDb/appsettings.json w eksploratorze.
  2. Zmień nazwę MyDbConnection parametry połączenia na AZURE_SQL_CONNECTIONSTRING, która odpowiada parametry połączenia utworzonej wcześniej w usłudze App Service.

Zrzut ekranu przedstawiający zmianę nazwy parametry połączenia w appsettings.json.

Krok 6:

  1. Otwórz plik DotNetCoreSqlDb/Program.cs w eksploratorze.
  2. W metodzie options.UseSqlServer zmień nazwę MyDbConnection parametry połączenia na AZURE_SQL_CONNECTIONSTRING. W tym miejscu parametry połączenia jest używana przez przykładową aplikację.
  3. Usuń metodę builder.Services.AddDistributedMemoryCache(); i zastąp ją następującym kodem. Zmienia kod z używania pamięci podręcznej w pamięci do pamięci podręcznej Redis Cache na platformie Azure i robi to przy użyciu z AZURE_REDIS_CONNECTIONSTRING wcześniejszych wersji.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

Zrzut ekranu przedstawiający zmianę nazwy parametry połączenia w Program.cs.

Krok 7:

  1. Otwórz plik .github/workflows/main_msdocs-core-sql-XYZ w eksploratorze. Ten plik został utworzony przez kreatora tworzenia usługi App Service.
  2. W ramach dotnet publish kroku dodaj krok, aby zainstalować narzędzie Entity Framework Core za pomocą polecenia dotnet tool install -g dotnet-ef --version 7.0.14.
  3. W ramach nowego kroku dodaj kolejny krok, aby wygenerować pakiet migracji bazy danych w pakiecie wdrożeniowym: dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate. Pakiet migracji jest samodzielnym plikiem wykonywalnym, który można uruchomić w środowisku produkcyjnym bez konieczności używania zestawu .NET SDK. Kontener systemu Linux usługi App Service ma tylko środowisko uruchomieniowe platformy .NET, a nie zestaw .NET SDK.

Zrzut ekranu przedstawiający kroki dodane do pliku przepływu pracy usługi GitHub dla pakietu migracji bazy danych.

Krok 8:

  1. Wybierz rozszerzenie Kontroli źródła.
  2. W polu tekstowym wpisz komunikat zatwierdzenia, taki jak Configure DB & Redis & add migration bundle.
  3. Wybierz pozycję Zatwierdź i wypchnij.

Zrzut ekranu przedstawiający zatwierdzone zmiany i wypchnięty do usługi GitHub.

Krok 9. Powrót do strony Centrum wdrażania w witrynie Azure Portal:

  1. Wybierz pozycję Dzienniki. Nowe uruchomienie wdrożenia zostało już uruchomione z zatwierdzonych zmian.
  2. W elemencie dziennika dla przebiegu wdrożenia wybierz wpis Build/Deploy Logs (Wdróż dzienniki kompilacji/wdrażania) z najnowszym znacznikiem czasu.

Zrzut ekranu przedstawiający sposób otwierania dzienników wdrażania w centrum wdrażania.

Krok 10. Wykonano cię do repozytorium GitHub i zobaczysz, że akcja usługi GitHub jest uruchomiona. Plik przepływu pracy definiuje dwa oddzielne etapy, kompilowanie i wdrażanie. Poczekaj na uruchomienie usługi GitHub, aby wyświetlić stan Ukończono. Potrwa to kilka minut.

Zrzut ekranu przedstawiający przebieg usługi GitHub w toku.

4. Generowanie schematu bazy danych

W przypadku usługi SQL Database chronionej przez sieć wirtualną najprostszym sposobem uruchamiania migracji bazy danych dotnet jest sesja SSH z kontenerem usługi App Service.

Krok 1. Po powrocie do strony usługi App Service w menu po lewej stronie wybierz pozycję SSH.

Zrzut ekranu przedstawiający sposób otwierania powłoki SSH dla aplikacji w witrynie Azure Portal.

Krok 2. W terminalu SSH:

  1. Uruchom program cd /home/site/wwwroot. Oto wszystkie wdrożone pliki.
  2. Uruchom pakiet migracji wygenerowany przez przepływ pracy usługi GitHub za pomocą polecenia ./migrate. Jeśli to się powiedzie, usługa App Service pomyślnie nawiązuje połączenie z usługą SQL Database. Tylko zmiany w plikach w /home programie mogą być utrwalane poza ponownymi uruchomieniami aplikacji. Zmiany poza programem /home nie są utrwalane.

Zrzut ekranu przedstawiający polecenia do uruchomienia w powłoce SSH i ich danych wyjściowych.

5. Przejdź do aplikacji

Krok 1. Na stronie usługi App Service:

  1. W menu po lewej stronie wybierz pozycję Przegląd.
  2. Wybierz adres URL aplikacji. Możesz również przejść bezpośrednio do https://<app-name>.azurewebsites.netadresu .

Zrzut ekranu przedstawiający sposób uruchamiania usługi App Service w witrynie Azure Portal.

Krok 2. Dodaj kilka zadań do listy. Gratulacje, korzystasz z bezpiecznej aplikacji opartej na danych ASP.NET Core w usłudze aplikacja systemu Azure Service.

Zrzut ekranu przedstawiający aplikację .NET Core uruchomioną w usłudze App Service.

Napiwek

Przykładowa aplikacja implementuje wzorzec odkładania do pamięci podręcznej. Gdy odwiedzisz widok danych po raz drugi lub ponownie załadujesz tę samą stronę po wprowadzeniu zmian danych, czas przetwarzania na stronie internetowej pokazuje znacznie szybszy czas, ponieważ ładuje dane z pamięci podręcznej zamiast bazy danych.

6. Przesyłanie strumieniowe dzienników diagnostycznych

usługa aplikacja systemu Azure przechwytuje wszystkie komunikaty zarejestrowane w konsoli, aby ułatwić diagnozowanie problemów z aplikacją. Przykładowa aplikacja generuje komunikaty dziennika konsoli w każdym z jego punktów końcowych, aby zademonstrować tę funkcję.

Krok 1. Na stronie usługi App Service:

  1. W menu po lewej stronie wybierz pozycję Dzienniki usługi App Service.
  2. W obszarze Rejestrowanie aplikacji wybierz pozycję System plików.

Zrzut ekranu przedstawiający sposób włączania dzienników natywnych w usłudze App Service w witrynie Azure Portal.

Krok 2. W menu po lewej stronie wybierz pozycję Strumień dziennika. Zobaczysz dzienniki aplikacji, w tym dzienniki platformy i dzienniki z wewnątrz kontenera.

Zrzut ekranu przedstawiający sposób wyświetlania strumienia dziennika w witrynie Azure Portal.

7. Czyszczenie zasobów

Po zakończeniu możesz usunąć wszystkie zasoby z subskrypcji platformy Azure, usuwając grupę zasobów.

Krok 1. Na pasku wyszukiwania w górnej części witryny Azure Portal:

  1. Wpisz nazwę grupy zasobów.
  2. Wybierz odpowiednią grupę zasobów.

Zrzut ekranu przedstawiający wyszukiwanie i przechodzenie do grupy zasobów w witrynie Azure Portal.

Krok 2. Na stronie grupy zasobów wybierz pozycję Usuń grupę zasobów.

Zrzut ekranu przedstawiający lokalizację przycisku Usuń grupę zasobów w witrynie Azure Portal.

Krok 3:

  1. Wprowadź nazwę grupy zasobów, aby potwierdzić usunięcie.
  2. Wybierz Usuń.

Zrzut ekranu przedstawiający okno dialogowe potwierdzenia dotyczące usuwania grupy zasobów w witrynie Azure Portal. :

Często zadawane pytania

Ile kosztuje ta konfiguracja?

Cennik zasobów tworzenia jest następujący:

  • Plan usługi App Service jest tworzony w warstwie Podstawowa i można go skalować w górę lub w dół. Zobacz Cennik usługi App Service.
  • Usługa Azure SQL Database jest tworzona w warstwie ogólnego przeznaczenia bezserwerowej na sprzęcie z serii Standardowa z minimalnymi rdzeniami. Istnieje niewielki koszt i można je dystrybuować do innych regionów. Możesz jeszcze bardziej zminimalizować koszt, zmniejszając jego maksymalny rozmiar lub skalować go w górę, dostosowując warstwę obsługi, warstwę obliczeniową, konfigurację sprzętu, liczbę rdzeni, rozmiar bazy danych i nadmiarowość strefy. Zobacz Cennik usługi Azure SQL Database.
  • Usługa Azure Cache for Redis jest tworzona w warstwie Podstawowa z minimalnym rozmiarem pamięci podręcznej. Z tą warstwą wiąże się niewielki koszt. Można ją skalować w górę do wyższych warstw wydajności w celu uzyskania wyższej dostępności, klastrowania i innych funkcji. Zobacz Cennik usługi Azure Cache for Redis.
  • Sieć wirtualna nie powoduje naliczania opłat, chyba że skonfigurujesz dodatkowe funkcje, takie jak komunikacja równorzędna. Zobacz Cennik usługi Azure Virtual Network.
  • Prywatna strefa DNS wiąże się z niewielką opłatą. Zobacz Cennik usługi Azure DNS.

Jak mogę nawiązać połączenie z serwerem usługi Azure SQL Database zabezpieczonym za siecią wirtualną przy użyciu innych narzędzi?

  • Aby uzyskać podstawowy dostęp z poziomu narzędzia wiersza polecenia, można uruchomić sqlcmd z poziomu terminalu SSH aplikacji. Kontener aplikacji nie jest dołączony do sqlcmdelementu , dlatego należy zainstalować go ręcznie. Należy pamiętać, że zainstalowany klient nie jest utrwalany podczas ponownego uruchamiania aplikacji.
  • Aby nawiązać połączenie z klienta programu SQL Server Management Studio lub programu Visual Studio, maszyna musi znajdować się w sieci wirtualnej. Na przykład może to być maszyna wirtualna platformy Azure połączona z jedną z podsieci lub maszyna w sieci lokalnej, która ma połączenie sieci VPN typu lokacja-lokacja z siecią wirtualną platformy Azure.

W jaki sposób programowanie aplikacji lokalnych działa z funkcją GitHub Actions?

Pobierz automatycznie wygenerowany plik przepływu pracy z usługi App Service, aby na przykład git push uruchomić nową kompilację i uruchomienie wdrożenia. Z lokalnego klonu repozytorium GitHub należy wprowadzić żądane aktualizacje wypychane do usługi GitHub. Na przykład:

git add .
git commit -m "<some-message>"
git push origin main

Jak mogę błędy debugowania podczas wdrażania funkcji GitHub Actions?

Jeśli krok zakończy się niepowodzeniem w automatycznie wygenerowanym pliku przepływu pracy usługi GitHub, spróbuj zmodyfikować polecenie, które zakończyło się niepowodzeniem, aby wygenerować więcej pełnych danych wyjściowych. Na przykład możesz uzyskać więcej danych wyjściowych dotnet z dowolnego polecenia, dodając -v opcję . Zatwierdź i wypchnij zmiany, aby wyzwolić kolejne wdrożenie w usłudze App Service.

Następne kroki

Przejdź do następnego samouczka, aby dowiedzieć się, jak zabezpieczyć aplikację przy użyciu domeny niestandardowej i certyfikatu.

Możesz też zapoznać się z innymi zasobami: