Udostępnij za pośrednictwem


Określanie, jakie pliki należy wdrożyć (C#)

Autor : Scott Mitchell

Pobierz plik PDF

Pliki, które należy wdrożyć ze środowiska deweloperskiego do środowiska produkcyjnego, zależą częściowo od tego, czy aplikacja ASP.NET została utworzona przy użyciu modelu witryny sieci Web lub modelu aplikacji internetowej. Dowiedz się więcej o tych dwóch modelach projektów i sposobie, w jaki model projektu wpływa na wdrożenie.

Introduction

Wdrożenie aplikacji internetowej ASP.NET polega na kopiowaniu plików związanych z ASP.NET ze środowiska deweloperskiego do produkcyjnego. Pliki związane z ASP.NET obejmują ASP.NET kod znaczników stron oraz kod i pliki wspierające po stronie klienta i serwera. Pliki obsługi po stronie klienta to pliki, do których odwołuje się strona internetowa, i wysyłane bezpośrednio do przeglądarki — obrazy, pliki CSS i pliki JavaScript, na przykład. Pliki obsługi po stronie serwera obejmują pliki, które są używane do przetwarzania żądania po stronie serwera. Obejmuje to między innymi pliki konfiguracji, usługi internetowe, pliki klas, typy zestawów danych i pliki LINQ to SQL.

Ogólnie rzecz biorąc, wszystkie pliki obsługi po stronie klienta powinny być kopiowane ze środowiska deweloperskiego do środowiska produkcyjnego, ale to, które pliki obsługi po stronie serwera są kopiowane, zależy od tego, czy jawnie kompilujesz kod po stronie serwera do zgromadzenia (.dll pliku), czy też jeśli te zgromadzenia są generowane automatycznie. W tym samouczku wyróżniono pliki, które należy wdrożyć podczas jawnego kompilowania kodu w zestawie w porównaniu z automatycznym wykonaniem tego kroku kompilacji.

Jawna kompilacja a automatyczna kompilacja

ASP.NET strony internetowe są podzielone na znaczniki deklaratywne i kod źródłowy. Część deklaratywnego języka znaczników zawiera kontrolki HTML, kontrolki webowe i składnię powiązania danych; część kodu zawiera procedury obsługi zdarzeń napisane w języku Visual Basic lub C#. Fragmenty znaczników i kodu są zwykle oddzielone do różnych plików: WebPage.aspx zawiera znacznik deklaratywny, a WebPage.aspx.cs zawiera kod.

Rozważ stronę ASP.NET o nazwie Clock.aspx zawierającą kontrolkę Etykieta, której właściwość Text jest ustawiona na bieżącą datę i godzinę ładowania strony. Część deklaratywną znaczników (w Clock.aspx pliku) będzie zawierać znaczniki dla kontrolki sieciowej Label - <asp:Label runat="server" id="TimeLabel" /> - podczas gdy część kodu (w Clock.aspx.cs) będzie zawierać obsługiwacz zdarzeń z następującym kodem:

protected void Page_Load(object sender, EventArgs e)
{
    TimeLabel.Text =  "The time at the beep is: " + DateTime.Now.ToString();
}

Aby aparat ASP.NET obsługiwał żądanie dla tej strony, najpierw należy skompilować część kodu strony ( WebPage.aspx.cs plik). Ta kompilacja może odbywać się jawnie lub automatycznie.

Jeśli kompilacja odbywa się jawnie, kod źródłowy całej aplikacji jest kompilowany do jednego lub więcej zestawów (.dll plików) znajdujących się w katalogu aplikacji Bin. Jeśli kompilacja odbywa się automatycznie, wynikowy zestaw generowany automatycznie jest domyślnie umieszczony w Temporary ASP.NET folderze Pliki, który można znaleźć w %WINDOWS%\Microsoft.NET\Framework\<wersji>, chociaż ta lokalizacja jest konfigurowalna za pośrednictwem <compilation> elementu w Web.configprogramie . W przypadku jawnej kompilacji należy wykonać pewną akcję, aby skompilować kod ASP.NET aplikacji do zestawu, a ten krok występuje przed wdrożeniem. W przypadku automatycznej kompilacji proces kompilacji występuje na serwerze internetowym, gdy zasób jest po raz pierwszy dostępny.

Niezależnie od używanego modelu kompilacji należy skopiować część znaczników wszystkich stron ASP.NET ( WebPage.aspx plików) do środowiska produkcyjnego. W przypadku jawnej kompilacji należy skopiować zestawy w Bin folderze, ale nie trzeba kopiować fragmentów kodu stron ASP.NET ( WebPage.aspx.cs plików). W przypadku automatycznej kompilacji należy skopiować pliki części kodu, aby kod był dostępny i mógł być automatycznie skompilowany po odwiedzeniu strony. Część znaczników każdej strony internetowej ASP.NET zawiera dyrektywę @Page z atrybutami wskazującymi, czy skojarzony kod strony został już jawnie skompilowany, czy też musi zostać automatycznie skompilowany. W związku z tym środowisko produkcyjne może bezproblemowo pracować z modelem kompilacji i nie trzeba stosować żadnych specjalnych ustawień konfiguracji, aby wskazać, że jest używana jawna lub automatyczna kompilacja.

Tabela 1 zawiera podsumowanie różnych plików do wdrożenia podczas korzystania z jawnej kompilacji i automatycznej kompilacji. Należy pamiętać, że niezależnie od używanego modelu kompilacji należy zawsze wdrażać zestawy w folderze Bin , jeśli ten folder istnieje. Folder Bin zawiera zestawy specyficzne dla aplikacji internetowej, które obejmują skompilowany kod źródłowy podczas korzystania z jawnego modelu kompilacji. Katalog Bin zawiera również zestawy z innych projektów oraz wszystkie zestawy typu open source lub innych firm, których możesz używać, i muszą znajdować się na serwerze produkcyjnym. Zgodnie z ogólną zasadą, skopiuj folder Bin na produkcję podczas wdrażania. (Jeśli używasz modelu automatycznej kompilacji i nie używasz żadnych zestawów zewnętrznych, nie będziesz mieć Bin katalogu — to jest OK!)

Model kompilacji Czy wdrożyć plik fragmentu znaczników? Wdrożyć plik kodu źródłowego? Czy wdrożyć zestawy w Bin katalogu?
Jawna kompilacja Yes Nie. Yes
Automatyczna kompilacja Yes Yes Tak (jeśli istnieje)

Tabela 1: Pliki, które wdrażasz, zależą od używanego modelu kompilacji.

Podróż w przeszłość

To, jakie podejście kompilacji jest używane, zależy częściowo od sposobu zarządzania aplikacją ASP.NET w programie Visual Studio. Od powstania platformy .NET w roku 2000 pojawiły się cztery różne wersje programu Visual Studio — Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005 i Visual Studio 2008. Aplikacje ASP.NET zarządzane przy użyciu programu Visual Studio .NET 2002 i 2003 oraz modelu projektu aplikacji sieciowej. Najważniejsze funkcje modelu projektu aplikacji internetowej to:

  • Pliki tworzące projekt są definiowane w jednym pliku projektu. Żadne pliki niezdefiniowane w pliku projektu nie są uznawane za część aplikacji internetowej przez program Visual Studio.
  • Używa jawnej kompilacji. Zbudowanie projektu kompiluje pliki kodu w projekcie w jedną bibliotekę umieszczoną w folderze Bin.

Gdy firma Microsoft wydała program Visual Studio 2005, zrezygnowała z obsługi modelu projektu aplikacji internetowej i zastąpiła go modelem projektu witryny sieci Web. Model projektu witryny sieci Web różni się od modelu projektu aplikacji internetowej w następujący sposób:

  • Zamiast mieć pojedynczy plik projektu, który określa pliki projektu, system plików jest używany. Krótko mówiąc, wszystkie pliki w folderze aplikacji internetowej (lub podfolderach) są uznawane za część projektu.
  • Kompilowanie projektu w programie Visual Studio nie powoduje utworzenia zestawu w Bin katalogu. Zamiast tego kompilowanie projektu witryny sieci Web zgłasza wszelkie błędy czasu kompilacji.
  • Obsługa automatycznej kompilacji. Projekty witryn sieci Web są zwykle wdrażane przez skopiowanie znaczników i kodu źródłowego do środowiska produkcyjnego, chociaż kod może być wstępnie skompilowany (jawna kompilacja).

Firma Microsoft ożywiła model projektu aplikacji internetowej po wydaniu programu Visual Studio 2005 z dodatkiem Service Pack 1. Jednak program Visual Web Developer nadal obsługiwał tylko model projektu witryny sieci Web. Dobrą wiadomością jest to, że to ograniczenie zostało usunięte z programu Visual Web Developer 2008 z dodatkiem Service Pack 1. Obecnie można tworzyć aplikacje ASP.NET w programie Visual Studio (i programie Visual Web Developer) przy użyciu modelu projektu aplikacji internetowej lub modelu projektu witryny sieci Web. Oba modele mają swoje zalety i wady. Zapoznaj się z tematem Introduction to Web Application Projects (Wprowadzenie do projektów aplikacji internetowych: porównanie projektów witryn sieci Web i projektów aplikacji internetowych ), aby porównać dwa modele i pomóc w wyborze najlepszego modelu projektu w danej sytuacji.

Eksplorowanie przykładowej aplikacji internetowej

Pliki do pobrania dla tego samouczka obejmują aplikację ASP.NET o nazwie Recenzje książek. Strona internetowa naśladuje stronę hobbystyczną, którą ktoś mógłby stworzyć, aby podzielić się swoimi recenzjami książek ze społecznością online. Ta ASP.NET aplikacja internetowa jest bardzo prosta i składa się z następujących zasobów:

  • Web.config, plik konfiguracji aplikacji.

  • Strona wzorcowa (Site.master).

  • Siedem różnych stron ASP.NET:

    • ~ /Default.aspx- strona główna witryny.

    • ~ /About.aspx — strona "Informacje o witrynie".

    • ~ /Fiction/Default.aspx - strona z listą książek fikcji, które zostały przejrzyszone.

      • ~ /Fiction/Blaze.aspx - przegląd powieści Richard Bachman Blaze.
    • ~/ Tech/Default.aspx - strona z listą książek technologicznych, które zostały przejrzyszone.

      • ~/ Tech/CYOW.aspx— przegląd tworzenia własnej witryny internetowej.
      • ~/ Tech/TYASP35.aspx - przegląd Teach Yourself ASP.NET 3.5 w 24 godziny.
  • Trzy różne pliki CSS w folderze Styles.

  • Cztery pliki obrazów - logo obsługiwane przez ASP.NET i obrazy okładek trzech recenzowanych książek - wszystkie znajdujące się w folderze Images .

  • Web.sitemap Plik, który definiuje mapę witryny i służy do wyświetlania menu na Default.aspx stronach w katalogu głównym i FictionTech folderach.

  • Plik klasy o nazwie BasePage.cs definiujący klasę bazową Page . Ta klasa rozszerza funkcjonalność Page klasy, automatycznie ustawiając Title właściwość na podstawie pozycji strony na mapie witryny. W skrócie, każda klasa ASP.NET z kodem-behind rozszerzająca BasePage (zamiast System.Web.UI.Page) będzie miała ustawiony tytuł na wartość zależną od pozycji na mapie witryny. Na przykład podczas wyświetlania strony ~/Tech/CYOW.aspx tytuł jest ustawiony na "Strona główna : Technologia : Tworzenie własnej witryny internetowej".

Rysunek 1 przedstawia zrzut ekranu witryny internetowej Recenzje książek po wyświetleniu w przeglądarce. Tutaj zobaczysz stronę ~/Tech/TYASP35.aspx, która przegląda książkę Teach Yourself ASP.NET 3,5 w ciągu 24 godzin. Nagłówki obejmujące górną część strony i menu w lewej kolumnie są oparte na strukturze mapy witryny zdefiniowanej w pliku Web.sitemap. Obraz w prawym górnym rogu jest jednym z obrazów okładki książki znajdujących się w folderze Images . Wygląd i działanie witryny internetowej są definiowane za pomocą kaskadowych reguł arkusza stylów opisanych przez pliki CSS w folderze Style, podczas gdy układ strony nadrzędnej jest zdefiniowany na stronie Site.masterwzorcowej .

Strona internetowa Recenzje książek oferuje recenzje na temat asortymentu tytułów

Rysunek 1: Witryna internetowa Recenzje książek oferuje recenzje dotyczące asortymentu tytułów (kliknij, aby wyświetlić obraz pełnowymiarowy)

Ta aplikacja nie używa bazy danych; każda recenzja jest implementowana jako oddzielna strona internetowa w aplikacji. W tym samouczku (i w kolejnych kilku samouczkach) przedstawiono wdrażanie aplikacji internetowej, która nie ma bazy danych. Jednak w przyszłym samouczku ulepszymy tę aplikację w celu przechowywania recenzji, komentarzy czytelników i innych informacji w bazie danych oraz dowiesz się, jakie kroki należy wykonać, aby prawidłowo wdrożyć aplikację internetową opartą na danych.

Uwaga / Notatka

Te samouczki koncentrują się na hostowaniu aplikacji ASP.NET z dostawcą hostingu i nie eksplorują tematów pomocniczych, takich jak system map witryn ASP.NET ani użycie klasy bazowej Page. Aby uzyskać więcej informacji na temat tych technologii i uzyskać więcej informacji na temat innych tematów omówionych w tym samouczku, zapoznaj się z sekcją Dalsze informacje na końcu każdego samouczka.

Pobieranie tego samouczka zawiera dwie kopie aplikacji internetowej, z których każda jest implementowana jako inny typ projektu programu Visual Studio: BookReviewsWAP, projekt aplikacji internetowej i BookReviewsWSP, projekt witryny sieci Web. Oba projekty zostały utworzone za pomocą programu Visual Web Developer 2008 SP1 i używają ASP.NET 3.5 SP1. Aby pracować z tymi projektami, zacznij od rozpakowania zawartości na pulpit. Aby otworzyć projekt aplikacji internetowej (BookReviewsWAP), przejdź do folderu BookReviewsWAP i kliknij dwukrotnie plik Rozwiązania. BookReviewsWAP.sln Aby otworzyć projekt witryny sieci Web (BookReviewsWSP), uruchom program Visual Studio, a następnie w menu Plik wybierz opcję Otwórz witrynę sieci Web, przejdź do BookReviewsWSP folderu na pulpicie i kliknij przycisk OK.

Pozostałe dwie sekcje w tym samouczku umożliwiają zapoznanie się z plikami, które należy skopiować do środowiska produkcyjnego podczas wdrażania aplikacji. W kolejnych dwóch samouczkach — wdrażanie witryny przy użyciu protokołu FTP i wdrażanie witryny przy użyciu programu Visual Studio — przedstawiono różne sposoby kopiowania tych plików do dostawcy hosta sieci Web.

Określanie plików do wdrożenia dla projektu aplikacji internetowej

Model projektu aplikacji internetowej używa jawnej kompilacji — kod źródłowy projektu jest kompilowany w jeden zestaw za każdym razem, gdy kompilujesz aplikację. Ta kompilacja obejmuje pliki z logiką stron ASP.NET (~/Default.aspx.cs, ~/About.aspx.cs itd.), a także klasę BasePage.cs. Wynikowy zestaw ma nazwę BookReviewsWAP.dll i znajduje się w katalogu aplikacji Bin .

Rysunek 2 przedstawia pliki tworzące projekt aplikacji internetowej Book Reviews Web Application.

Eksplorator rozwiązań zawiera listę plików składających się na projekt aplikacji internetowej

Rysunek 2. Eksplorator rozwiązań wyświetla listę plików składających się na projekt aplikacji internetowej

Aby wdrożyć aplikację ASP.NET opracowaną przy użyciu modelu projektu aplikacji internetowej, zacznij od budowy aplikacji, aby skompilować najnowszy kod źródłowy do pliku wykonywalnego. Następnie skopiuj następujące pliki do środowiska produkcyjnego:

  • Pliki zawierające znaczniki deklaratywne dla każdej strony ASP.NET, takie jak ~/Default.aspx, ~/About.aspx, itd. Ponadto skopiuj deklaratywne znaczniki dla wszystkich stron wzorcowych i kontrolek użytkownika.
  • Kompilacje (.dll pliki) znajdują się w folderze Bin. Nie trzeba kopiować plików bazy danych programu (.pdb) ani żadnych plików XML, które można znaleźć w Bin katalogu.

Nie trzeba kopiować plików kodu źródłowego stron ASP.NET do środowiska produkcyjnego BasePage.cs ani kopiować pliku klasy.

Uwaga / Notatka

Jak pokazano na rysunku 2, klasa BasePage jest implementowana jako plik klasy w projekcie, umieszczony w folderze o nazwie HelperClasses. Gdy projekt jest kompilowany, kod w pliku BasePage.cs jest kompilowany wraz z klasami kodu zaplecza stron ASP.NET w jednym zestawie. ASP.NET ma specjalny folder o nazwie App_Code, zaprojektowany do przechowywania plików klas dla projektów witryn internetowych. Kod w folderze App_Code jest automatycznie kompilowany i dlatego nie powinien być używany z projektami aplikacji internetowych. Zamiast tego należy umieścić pliki klas aplikacji w normalnym folderze o nazwie HelperClasses, lub Classeslub podobnej. Alternatywnie można umieścić pliki klas w osobnym projekcie Biblioteka klas.

Oprócz kopiowania plików znaczników związanych z platformą ASP.NET i zestawu w folderze Bin, należy również skopiować pliki obsługujące stronę klienta — czyli obrazy i pliki CSS — a także inne pliki Web.config oraz Web.sitemap obsługujące stronę serwera. Te pliki obsługi po stronie klienta i serwera należy skopiować do środowiska produkcyjnego niezależnie od tego, czy używasz jawnej, czy automatycznej kompilacji.

Określanie plików do wdrożenia dla plików projektu witryny sieci Web

Model projektu witryny sieci Web obsługuje automatyczną kompilację, funkcję niedostępną podczas korzystania z modelu projektu aplikacji internetowej. W przypadku jawnej kompilacji należy skompilować kod źródłowy projektu do zestawu i skopiować ten zestaw do środowiska produkcyjnego. Z drugiej strony z automatyczną kompilacją wystarczy skopiować kod źródłowy do środowiska produkcyjnego i jest kompilowany przez środowisko uruchomieniowe na żądanie zgodnie z potrzebami.

Opcja menu Kompilacja w programie Visual Studio jest dostępna zarówno w projektach aplikacji internetowej, jak i w projektach witryn sieci Web. Kompilowanie projektów aplikacji sieci Web kompiluje kod źródłowy wg projektu do pojedynczego zestawu umieszczonego w katalogu Bin. Kompilowanie projektu witryny sieci Web sprawdza błędy czasu kompilacji, ale nie tworzy żadnych zestawów. Aby wdrożyć aplikację ASP.NET opracowaną przy użyciu modelu projektu witryny sieci Web, wystarczy skopiować odpowiednie pliki do środowiska produkcyjnego, ale zachęcam do utworzenia projektu w celu zapewnienia, że nie ma żadnych błędów czasu kompilacji.

Rysunek 3 przedstawia pliki tworzące projekt witryny sieci Web Book Reviews.

Eksplorator rozwiązań zawiera listę plików składających się na projekt witryny sieci Web

Rysunek 3. Eksplorator rozwiązań wyświetla listę plików składających się na projekt witryny sieci Web

Wdrożenie projektu witryny sieci Web obejmuje skopiowanie wszystkich plików związanych z ASP.NET do środowiska produkcyjnego, w tym strony ASP.NET, stron wzorcowych i kontrolek użytkownika, a także ich plików kodu. Należy również skopiować wszystkie pliki klas, takie jak BasePage.cs. Należy pamiętać, że BasePage.cs plik znajduje się w App_Code folderze, który jest specjalnym folderem ASP.NET używanym w projektach witryn sieci Web dla plików klas. Folder specjalny należy utworzyć w środowisku produkcyjnym, a także pliki klas w folderze w App_Code środowisku deweloperskim muszą zostać skopiowane do App_Code folderu w środowisku produkcyjnym.

Oprócz kopiowania plików znaczników ASP.NET i kodu źródłowego należy również skopiować pliki obsługi po stronie klienta — obrazy i pliki CSS — a także inne pliki Web.config obsługi po stronie serwera i Web.sitemap.

Uwaga / Notatka

Projekty witryn sieci Web mogą również używać jawnej kompilacji. W przyszłym samouczku dowiesz się, jak jawnie skompilować projekt witryny sieci Web.

Podsumowanie

Wdrożenie aplikacji ASP.NET wiąże się z kopiowaniem niezbędnych plików ze środowiska deweloperskiego do środowiska produkcyjnego. Dokładny zestaw plików, które należy zsynchronizować, zależy od tego, czy kod aplikacji ASP.NET jest jawnie czy automatycznie skompilowany. Zastosowana strategia kompilacji ma wpływ na to, czy program Visual Studio jest skonfigurowany do zarządzania aplikacją ASP.NET przy użyciu modelu projektu aplikacji internetowej lub modelu projektu witryny sieci Web.

Model projektu aplikacji internetowej używa jawnej kompilacji i kompiluje kod projektu w jeden zestaw w folderze Bin . Podczas wdrażania aplikacji część znaczników stron ASP.NET oraz zawartość folderu Bin muszą być wysyłane do środowiska produkcyjnego; kod źródłowy w aplikacji — na przykład plików kodu i klasy code-behind — nie musi być kopiowany do środowiska produkcyjnego.

Model projektu witryny sieci Web domyślnie używa automatycznej kompilacji, chociaż można jawnie skompilować projekt witryny sieci Web, jak zobaczymy w przyszłych samouczkach. Wdrożenie aplikacji ASP.NET korzystającej z automatycznej kompilacji wymaga skopiowania części znaczników i kodu źródłowego do środowiska produkcyjnego. Kod jest automatycznie kompilowany w środowisku produkcyjnym, gdy jest on żądany po raz pierwszy.

Teraz, gdy sprawdziliśmy, jakie pliki należy zsynchronizować między środowiskami deweloperskimi i produkcyjnymi, jesteśmy gotowi do wdrożenia aplikacji Recenzje książek u dostawcy hosta sieci Web.

Szczęśliwe programowanie!

Dalsza lektura

Aby uzyskać więcej informacji na temat tematów omówionych w tym samouczku, zapoznaj się z następującymi zasobami: