Välkomna Per Ahlberg Johan Lindfors
Hur kan vi bli bättre... Era utvärderingar är viktiga! Betygsätt innehåll, talare, relevans Kommentera gärna Kommentarer förra året Bra nivå på materialet... Mer demonstrationer, mer kod, mindre sälj... För långa sessioner, fler korta pauser, heldag... ”Jag vill gå på både TAB och TCM!” Mer Visual Basic och C++
Vad har vi pratat om tidigare? Förra året... Windows Server 2003 Säkerhet i.NET Framework XML Web Services J2EE och.NET Java vs C# Smarta klienter .NET Compact Framework Office 2003
Vad kommer vi prata om... Idag... ASP till ASP.NET Nästa gång – slutet av November VB 6.0 till VB.NET Och gången därpå – mitten på Mars .NET för C++ utvecklare Och gången därpå – innan sommaren Det vet jag inte än...
Utbildning Kurser och litteratur PDC (Oktober,LA) Lokala utvecklarkonferenser Utvecklargrupper Programmering Arkitektur och design ”Regional Directors” Resurser för utvecklare
MSDN Prenumerationer Prioriterad tillgång till mjukvara Automatisk månadsvis uppdatering Library Operating Systems Professional Enterprise Universal
Empowerment – speciellt för ISV Vad får jag? Upp till fem licenser av Windows XP/2000 Professional Office XP/2000 Premium eller Developer En serverlicens och fem CAL Windows 2000/2003 Standard eller Enterprise Exchange 2002 Standard eller Enterprise SQL Server Standard eller Enterprise SharePoint Portal Server Fem stycken MSDN Universal-prenumerationer
Jag åtar mig att utveckla en produkt för Windows Server 2003, XP eller 2000 SQL Server 2000 Pocket PC eller Smartphone Vad kostar det? 750 USD Kontakta: Empowerment – speciellt för ISV
PAG Prescriptive Architecture Guidance Relevanta tips Konkreta förslag Omfattande lösningar Tekniskt bevisade GRATIS att ladda hem!
Vilka är vi som är här idag?
Agenda Introduktion ASP vs ASP.NET IIS 6.0 Migrera ASP till ASP.NET Konvertering Datahantering Nya ASP.NET applikationer Säkerhet ASP.NET Starter Kits
Fördelar med ASP Enkel programmeringsmodell Tillgång till COM objekt ADO Filsystem Ingen kompilering, bara spara Stöd för flera scriptspråk Mixa HTML och kod VBscript – kunskaper i Visual Basic
Arkitekturen i ASP Internet Information Server ISAPI tillägg ASP.DLL ASP’s skriptmotor Exekvering av skript SkriptkodSkriptcache.ASP fil Begäran Svar ISAPI filter
Utmaningar med ASP Läsbarhet av kod, mycket kod! Komplex “PostBack”-hantering Återanvändning Prestanda Låsning av DLL’er Utrullning Sessioner Cachning
Nyheter i ASP.NET Ny arkitektur .NET Framework Web Forms, serverkontroller, Web Services Tillförlitlighet Konfigurering Tillståndshantering Säkerhet Cachning
ASP.NET HTTP Runtime ASPX motor Instans ”Page” ASP.NET sida Begäran 1 3 Svar 6 7 Moduler Klass ”Page” Sidhanterare ”Page Handlers” 8 2 Arkitekturen i ASP.NET
Windows Server 2003 Windows.NET Framework 1.1 IIS 6.0 COM+ 1.5 MSMQ 3.0 NLBS Authorization Manager AD / ADAM
Basklasser Common Language Specification “Common Language Runtime” ADO.NET: Data och XML Visual Basic®C++C# Visual Studio.NET ASP.NET: “Web Services” och “Web Forms” JScript®… Windows Formulär.NET Framework
Basklasser Common Language Specification “Common Language Runtime” ADO.NET: Data och XML Visual Basic®C++C# Visual Studio.NET ASP.NET: “Web Services” och “Web Forms” JScript®… Windows Formulär.NET Framework
“Class Loader” JIT kompilator Kod- hantering Minnes- hantering SäkerhetsmotorDebuggningTypsäkerhetFelhanteringTrådhantering“COM Marshaler” Basklasser Common Language Runtime
Administration XML Metabase och WMI Skalbarhet HTTP.SYS och “Response cache” Tillgänglighet och tillförlitlighet Isolering av “Listener” Request Queuing Bakåtkompatibilitet Fokusområden för IIS 6.0
Administration XML Metabase Textbaserad XML-fil Editera trots exekvering Automatisk versionshantering och “rollback” Konfigurations-kloning WMI och ADSI Administration via CMD
Demonstration
Skalbarhet och tillgänglighet Skalbarhet HTTP.SYS exekverar i “Kernel-mode” “Response Cache” Flera isolerade processer “WP” Tillgänglighet Isolerad “Listener” funktion “Request Queue”
ASPNET_WP.EXE ASP.NET ASPNET_WP.EXE ASP.NET Metabase TCP/IP Filter INETINFO ASP.NET ASPNET_WP.EXE ASP.NET Processmodellen i IIS då…
Worker Process ASP.NET Filter Worker Process ASP.NET Filter Worker Process ASP.NET Filter HTTP.SYS WAS Worker Process ASP.NET Filter INETINFO Metabase Processmodellen i IIS nu…
Tillförlitlighet i IIS 6.0 Separera applikationer från INETINFO Automatisk periodisk återvinning Tidbaserad “Hits”-baserad Minnesbaserad Schemalagd Övervakning, återstartning Bättre debuggning
Demonstration
WebForms Filändelsen är.ASPX Nytt ”Page” direktiv WebForm är en objektmodell Händelsestyrt precis som.NET Exekveras både på klient och server
”Server Controls” HTML kontroller Mappar väl mot vanliga HTML-element Webb kontroller Rikare funktionalitet Objektmodell Valideringskontroller Mobila kontroller ”User Controls”
XML Web Services XML + HTTP = SOAP WSDL / UDDI Öppna standards Drivs av W3C, WS-I, hela marknaden WSE WS-Security WS-Policy
Demonstration
ASP.NET är inte ASP Ingen återanvändning av kod – koden måste skrivas om >10x fler funktioner än ASP Kompatibelt med ASP Tänkt att vara 100% kompatibelt I verkligheten är detta inte alltid möjligt Kom ihåg…
Agenda Introduktion ASP vs ASP.NET IIS 6.0 Migrera ASP till ASP.NET Konvertering Datahantering Nya ASP.NET applikationer Säkerhet ASP.NET Starter Kits
De dåliga nyheterna Migrering kommer alltid att kräva arbete Det finns inga magiska verktyg Enkla sidor är möjligen enkla I verkligheten: Det går inte att bara ändra filändelser Flera inkompabilitetsproblem
ASP.NET körs sida-vid-sida vid ASP Separata filändelser (.aspx vs.asp) Separata konfigurationer Inga förändringar i ASP.DLL ISAPI Utmaningar med integration Körs i samma kataloger, men… Helt egna applikationer Ingen delning av tillstånd De goda nyheterna
Alternativ för migrering Sida vid sida Använd både ASP och ASP.NET Separata applikationer Integration Använd både ASP och ASP.NET Med hjälp av gemensamma komponenter Gemensam applikation Omskrivning Flytta allt till ASP.NET
Migrering kommer att leda till ny arkitektur Nya logiska skikt Nya transportsätt (DCOM) Nya klasser! En förutsättning är en bra logisk arkitektur Nyckelfråga: Hyr flyttas data mellan olika skikt? Alternativ för migrering
Använder du flera fysiska skikt? ASP på en Webbserver Affärs logik på dedikerad applikationsserver Data på separat SQL-Server Vill du behålla denna infrastruktur? .NET Remoting eller XML Web Services “Serviced Components” kan använda DCOM
Migrera webbsidorna först Ersätt ASP sidorna WebForms + User Controls + Server Controls Webbkontroller ger Liknande kapacitet som ett Windows-formulär Utvecklaren behöver inte tänka på tillstånd Mycket kraftfullt Mycket kortare utvecklingstid för webbsidor Bättre återanvändning av kod
Skriva om ASP till en ASPX sida Målet är att separera kod från HTML Men du kan fortfarande ha kod i HTML I enklaste fallet: 1. Döp om sida, 2. Flytta VB-script koden till ”Code-behind” klassen 3. Ändra koden till VB.NET Oftast krävs det att logiken ändras Ibland även HTML koden
Demonstration Konvertering ASP till ASP.NET
Tillståndshantering I samma process Påminner om ASP Med ASP.NET tillståndstjänst Med hjälp av SQL Server
Dela tillstånd Dela med hjälp av Cookies Gömda fält URL ASP och ASP.NET har separata objekt Sessioner Applikations
Demonstration Tillståndsdelning mellan ASP och ASP.NET
Flytta data Hur flyttas data mellan olika skikt? Inte typsatta variabler(Variant, Object) Starkt typsatta variabler (String, Double, Record) XML Frånkopplade “ADO Recordset” Direkt åtkomst från ASP till data med ADO ...
Icke typsatta variabler bör ersättas Alla.NET klasser är starkt typsatta Med XML är det inget problem .NET använder en annan DOM än ASP/COM/MSXML Frånkopplade “ADO Recordset” bör ersättas med “ADO.NET DataSet” Direkt åtkomst från ASP till data via ADO eller ADO.NET är mycket dålig design Flytta data
Demonstration Skicka och ta emot XML
Migrera affärs/data logiken Två möjliga strategier: Ersätt VB6 komponenter direkt med VB.NET komponenter, horisontellt eller vertikalt Låt ASP.NET anropa Web Services som inkapslar affärskomponenter i VB6 Migrera sedan till.NET
ASP.NET kan anropa VB6 COM kod, men... Om dina affärs komponenter i VB6 skickar varianter Skriv startk typsatta mellankomponenter i.NET ASP.NET pratar med mellankomponenterna Mellankomponenterna hanterar datakonvertering Ersätt VB6 komponenter direkt
Kapsla VB6 komponenter Med XML Web Services Låt dina ASP.NET sidor anropa dessa Detta ger en enkel separation av fysiska skikt och logiska skikt .NET Remoting Kan vara ett bättre sätt... Om du behöver transaktioner mellan fysiska skikt, använd “Serviced Components (COM+)”
Demonstration VB6 wrapper med XML Web Services
Ersätt skikt för skikt Om din kod returnerar “ADO Recordset” Konvertera “ADO Recordset” till “ADO.NET DataSet” i affärslagret ASP.NET arbetar då endast med ADO.NET ASP.NET webbkontroller använder DataSet “ADO.NET DataSet” skickas effektivt mellan fysiska skikt – “Marshalling”
Ersätt skikt för skikt Migrera sen datalagret Returnera “ADO.NET DataSet” Ta bort Recordset DataSet konvertering från affärslagret För komponenter som du inte kan migrera, använd COM Interop
Demonstration ADO Recordset till ADO.NET DataSet
COM. NET COM.NET “COM Interop” .NET till COM COM till.NET
Använd COM komponenter i.NET Skapa en assembly som innehåller typ definitioner enligt COM för komponenterna Lägg till en referens i Visual Studio.NET Eller använd TLBIMP Definiera typerna manuellt! Använd som hanterade komponenter Skapa en instans med “new” Fånga fel Arv och utveckling
Använd.NET komponenter i COM Skapa “COM type library” Med hjälp av TLBEXP Eller med hjälp av Visual Studio.NET Installera och registrera assemblyn RegAsm GACUtil Sätt en referens till TLB om det behövs
Demonstration COM komponent i.NET
Att förbereda övergången... Använd “Option Explicit” och låtsas att du använder “Option Strict” Använd inte standardegenskaper Använd () och “Call” vid metodanrop Dim strText As String Recordsest.Fields(“field”).Value
Att förbereda övergången... Andra tips och tricks Skapa klasser i ASP redan nu - WSH Separera affärslogik och innehåll Inga “render”-funktioner Stäng och avallokera objekt Använd bara ett språk per sida
Agenda Introduktion ASP vs ASP.NET IIS 6.0 Migrera ASP till ASP.NET Konvertering Datahantering Nya ASP.NET applikationer Säkerhet ASP.NET Starter Kits
Nya ASP.NET lösningar Konfigurering Säkerhet Autentisering, auktorisering, identitet Cache Inbyggd, extern Dataåtkomst ASP.NET Starter Kits Tips & Tricks
Konfigurering Web.config Som en.ini-fil för din webbapplikation XML formaterad Utbyggbar Några inställningar Säkerhet Sessionshantering Lokalisering Debuggning
Demonstration
Webbserver Planera för säkerhet i ASP.NET IIS (inetinfo.exe) Autentisering Anonymous Basic Digest Integrated Certificate ASP.NET (aspnet_wp.exe) Autentisering Windows Forms Passport None Auktorisering Web/NTFS- rättigheter IP adress restriktioner Auktorisering Fil Url COM+ AM Lokal eller extern resurs Autentiserad användare eller IUSR_MACHINE Identitet ASP.NET Ursprungligt anrop Förutbestämd proxy HTTP begäran SSL Privat Integritet
Säkerhet i ASP.NET Autentisering Auktorisering Identitet Hemligheter Attacker!
Autentisering Windows IIS-baserad Formulär/cookie Passport Skräddarsydd Implementera i AuthenticateRequest(...)
Formulärbaserad autentisering Använder cookies Kan autentisera konton i... Active Directory SQL XML ASP.NET hanterar hänvisning <forms loginUrl="login.aspx“ name="AuthCookie“ protection=“All” timeout="60“ path="/">
Demonstration
Auktorisering COM+ roller URL auktorisering Authorization Manager Rollbaserad auktorisering Windows Server 2003 XML eller ActiveDirectory Skräddarsydd
Demonstration
Identitet Windows 2000 – IIS 5.0 Lokalt servicekonto – ASPNET Kan exekvera som annat konto Internet Information Server 6.0 Restriktivt konto – Network Service ”Impersonation” Kan iklä ASP.NET en klients identitet Kan användas för att efterlikna ASP
Hemligheter Lagra ”connection-strings” och annat web.config/machine.config UDL filer Registret COM+ katalogen DPAPI ”User store” ”Machine store”
Demonstration
Attacker! ”SQL injection” Förändra befintlig fråga eller skapa ny Använd lagrade procedurer med parametrar “Cross-site scripting” Script skickas till applikationen som input Validering och kodning “Buffer overflows” Ohanterad kod kan skapa utmaningar Validering på servern
Demonstration
Cache med ASP.NET Inbyggda mekanismer Hela sidor - OutputCaching Delar av sidor – User Controls Programmatisk ”Caching Application Block” Skapad för icke ASP.NET applikationer
Hanterar dynamiskt genererade sidor Sidan kompileras till IL och maskinkod Maskinkod cachas som Page klassen Uppdateras när ASP.NET sidan ändras eller vid “timeout” Kan användas på “User Controls” OutputCache Duration="sekunder" Location=“server..." VaryByControl="controlname" VaryByCustom="browser | customstring” VaryByHeader="headers" VaryByParam="parametrar" %>
Programmatisk cachning Lägga till element Hämta element Radera element Notifieringar Callback Cache.Add(...); Cache.Insert(...); Cache.Get(...); Cache.Remove(...);
Demonstration
PAG -.NET Application Blocks ”Best practices” Dataåtkomst Felhantering Asynkrona anrop Konfigurering Användargränssnitt Aggregation Applikationsuppdatering Cache
”Caching Application Block” ”Cache Manager” Hanterar och administrerar cachen Skapar de andra objekten ”Cache Service” Övervakar cachen och applicerar regler ”Cache Storage” SQL Server MMF ”Singleton” objekt
Demonstration
ASP.NET Starter Kits Väldokumenterade omfattande lösningar Portal E-handelsplats Rapportering Projekthantering ”Community” Kan användas för att komma igång snabbt Visual Basic.NET, C# eller J# Visual Studio.NET eller något annat verktyg
Demonstration
Tips & tricks Vid utveckling Uppladdning av filer Dynamisk generering av bilder XML-transformering Smart navigering Vid felhantering ”Tracing” Skräddarsydda fel
Demonstration
10 anledningar att älska ASP.NET 6.Inbyggd cachning för ökad prestanda! 7.Stöd för ett stort antal mobila enheter! 8.Använd vilket programspråk som helst! 9.Bygg och använd XML Web Services! 10.Objekt modell för webbsidor!
10 anledningar att älska ASP.NET 1.Det är mycket, mycket, mycket snabbt ! 2.Uppgradera applikationer i drift med XCOPY 3.Underbart verktygsstöd – RAD för webben 4.Strukturerad felhantering 5.Använd ”session state” på ”Web farms”
10 anledningar att älska ASP.NET 1.Det är mycket, mycket, mycket snabbt ! 2.Driftsätt eller uppgradera app. i drift med XCOPY 3.Underbart verktygsstöd – RAD för webben 4.Strukturerad felhantering 5.Enkelt att använda ”session state” på ”Web farms” 6.Inbyggd Cachning för att öka snabbheten 7.Stöd för ett stort antal mobila enheter 8.Använd vilket programspråk som passar dig! 9.Enkelt att bygga och använda web services 10.Enkel objekt modell för utveckling av webbsidor