1 / 24

Udrulning

Udrulning. Publicering af en web-applikation. Eksempel. Lad os publicere Calculator-applikationen: hvad er en web-applikation helt præcis? hvordan eksekveres web-applikationen? hvor er .NET koden?. Publicering fra Visual Studio. Build >> Publish Web Site

Download Presentation

Udrulning

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Udrulning • Publicering af en web-applikation

  2. Eksempel • Lad os publicere Calculator-applikationen: • hvad er en web-applikation helt præcis? • hvordan eksekveres web-applikationen? • hvor er .NET koden?

  3. Publicering fra Visual Studio • Build >> Publish Web Site • Man kan publicere direkte til en web-server – eller • man kan publicere til et lokalt filsystem og kopiere filerne selv • Pga. en fejl i VS 2005, så må URL'en ikke hedde det samme som projektet — derfor publiceres applikationen under "http://localhost/WebCalculator"

  4. Hvad sker der rent faktisk? • "code-behind"-koden kompileres til en .NET assembly (.dll)

  5. Hvor findes "code-behind"-koden? • Web-siden indeholder direktiver til den underliggende .dll <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_q0hno7ne" %> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> . . . public partial class _Default : System.Web.UI.Page { protected void cmdAdd_Click(…) { // click event } }

  6. ASP.NET Applikationer • Hvad præcis er en ASP.NET applikation?

  7. ASP.NET Applikationer • En ASP.NET applikation = web-sider + .dll + web.config • Web-siderne indeholder HTML markup • .dll'en indeholder den kompilerede .NET-kode til web-siderne • web.config indeholder konfigurationen (sikkerhed, datakilder, osv.) Web-server ?

  8. Første kald … • Hele applikationen er kompileret! • Alt indhold af .aspx-filerne er om-dannet til klasseerklæringer • klasser er kompileret til en eller flere .dll'er • code-behind .dll skyggekopieres, så originalerne kan opdateres • kald rederigeres nu til kompilerede assemblies • [ kompileringen forklarer tidsforsinkelsen ved første kald til web-siden ] • Fuldstændig kompilering øger ydeevnen • Ift. server-side scripts (fx klassisk ASP, Perl, PHP, …)

  9. Eksempel • Publicér Calculator … • Gå til WebCalculator … Web-server request .dll .dll response

  10. Fra .aspx til klasser • Code-behind => base class, .aspx => derived class publicpartialclass _Default { protected TextBox tbxNumber1; protected TextBox tbxNumber2; protected Button btnAdd; . . . } publicpartialclass_Default : System.Web.UI.Page { voidbtnAdd_Click(object sender, EventArgs e) { int i = int.Parse(txtNumber1.Text); ... } . . . namespace ASP { publicclass Default_aspx : _Default { voidBuildControlTree() { this.AddParsedSubObject("<!DOCTYPE html...>\r\n"); this.AddParsedSubObject( new HtmlHead() ); this.AddParsedSubObject("<body onload=\"Setup()\">\r\n"); this.AddParsedSubObject( new HtmlForm() ); this.AddParsedSubObject("</body>\r\n</html>\r\n"); } . . .

  11. Eksekveringsmodellen • Eksekveringen af ASP.NET applikationer

  12. (1) Eksekveringen begynder … • Eksekveringen begynder ved en klients første kald … Web-server klient-browser hent "page.aspx" Web-side

  13. Side (2) Kompilering og load af Web-applikationen … • Web-applikationen kompileres – om nødvendigt • .dll'erne hentes ind i hukommelsen – om nødvendigt • Side-objekterne instantieres og en serie hændelser inditræffer: • PreInit, …, Load, …, Render, … Web-server ASP.NET .dll .dll CLR

  14. Side (3) Siden sendes tilbage som HTML … • Output fra sidens Render-hændelse sendes tilbage til klienten Web-server ASP.NET .dll response… .dll CLR

  15. Side (4) Næste trin afhænger af klienten … • Klienten forespørger måske på en ny side eller POST'er den samme side tilbage Web-server ASP.NET .dll .dll post-back CLR

  16. Side (5) Post-back … • Ligesom før instantieres side-objektet og HTML'en dannes • Forskelle: • UI-objekter udfyldes med klientens værdier (fx indtastningsfelter) • UI-hændelser eksekveres efter Load men før Render (fx knaptryk) Web-server ASP.NET btnAdd_Click(…) { int i = tbxNumber1.Text; . . . lblResult.Text = ...; } .dll .dll CLR

  17. Observationer • ASP.NET applikationer er kompilerede • ASP.NET applikationer omdannes til HTML • ASP.NET er en "server-side"-teknologi • som standard sker al kodeeksekvering på serveren • Det er ofte nødvendigt at benytte sig af post-back • Sider eksekveres forskelligt, alt efter om det er første kald eller post-back • det er vigtigt at holde sig for øje, når man programmerer … protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack) // Drop initialiseringen return; else this.lblDirectory.Text = GetSourceDir(); }

  18. IIS • IIS – Microsofts Web-server

  19. Internet Information Services (IIS) • IIS er Microsofts kommercielle web-server • leveres sammen med XP Pro, Windows 2000/2003 og Vista • installeres via kontrolpanelet: Tilføj/Fjern Programmer • ASP.NET er et IIS plug-in • installeres, når Visual Studio eller .NET installeres • kører uden for IIS af sikkerhedshensyn ASP.NET worker process (ASPNET_WP.EXE) .NET CLR http://server/page.aspx IIS (inetinfo.exe) ASP.NET ISAPI Extension Manager ASPNET_ISAPI.DLL ASP.NET ISAPI extension HTTP Request

  20. Side Calculator-applikationen i IIS'en • Alting hentes ind i "worker"-processen … • .NET danner en AppDomain (sikkerhedsgrænse) til at indeholde applikationen • ved første kald henter ASP.NET dll'erne ASPNET_WP.EXE .NET CLR AppDomain ASP.NET App.dll

  21. T3 T2 T1 Page Page Page IIS'en er trådet • .NET CLR er trådet for at kunne håndtere flere klienter • En side-forespørgsel tilordnes en tråd fra CLR'ens thread pool • Konsekvenser? ASP.NET applikationer er trådede ASPNET_WP.EXE .NET CLR http://server/Calculator/Default.aspx AppDomain http://server/Calculator/Default.aspx ASP.NET . . . http://server/Calculator/Default.aspx

  22. Konfiguration af IIS'en • IIS er konfigureret automatisk via Visual Studio 2005 • Hvis man selv vil konfigurere IIS'en: • Kontrolpanel, Administration, Internet Information Services

  23. Hvad så? • Øvelse #2

  24. <blank> • …

More Related