… för utvecklare! Johan Lindfors
Webbläsare Applikationsserver Webbserver Dynamisk HTML motor Affärslogik RDBMS Applikationsserver?
Applikationsserver IIS ASP.NET.NET Runtime och COM+ RDBMS Windows Server 2003
Applikationsserver IIS ASP.NET.NET Runtime och COM+ RDBMS Windows Server 2003
.NET Runtime och COM+ LoBSAPSiebelApplikationsserver IIS ASP.NET RDBMS Windows Server 2003
LoBSAPSiebel XML Web Service IIS ASP.NET RDBMS Applikationsserver Windows Server 2003
LoBSAPSiebelApplikationsserver XML Web Service IIS ASP.NET RDBMS Windows Server 2003
Tjänster i en applikationsserver Webbserver Programmeringsmodell Dataåtkomst Komponentmodell Transaktioner Integration Meddelandehantering Skalbarhet Klienthantering IIS ASP.NET (.NET Framework) ADO.NET COM+ komponenter COM+ transaktioner XML/SOAP: standards MSMQ NLBS Internet Explorer
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
.NET Framework 1.1 Mobila applikationer ASP.NET mobile controls (MMIT) ”Side-by-Side” exekvering Olika versioner av.NET Framework Exekvering av WinForms från Internet CAS för ASP.NET applikationer Hostade scenarios ODBC stöd System.Data.Odbc IPv6
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
COM och COM+ Component Object Model- COM Introducerades 1993 ”Object Linking and Embedding” ActiveX Microsoft Transaction Server- MTS Distributed COM - DCOM Erbjöd komponent-kommunikation över nätverket Component Services- COM+ ”Object Pooling” ”Queued Components”
COM+ 1.5 Skalbarhet Konfigurerbara isoleringsnivåer ”Poolning” av processer Tillgänglighet Återanvändning av processer COM+ applikationer som NT tjänster Minnesgrindar COM+ Web Services Hanterbarhet Pausa/slå av applikationer Dumpa processer Programmerbarhet Privata/publika komponenter Komponentaliaser Initialisering av processer SWC
Konfigurerbara isoleringsnivåer Insert… Johan Lindfors Finlandsgatan 30 Kista, Stockholm Update… Per Ahlberg Box 27 Redmond, WA Select … Where Ort = Kista Tx 1Tx 3Tx 2
Konfigurerbara isoleringsnivåer Utmaning: COM+ 1.0 använder den högsta möjliga isoleringsnivån (SERIALIZABLE) för att garantera korrekt data Kan vara för mycket för vissa applikationer Lösning: Tillåt utvecklare att välja isoleringsnivå själva Fördel för utvecklare: Potentiellt ökad prestanda, skalbarhet och tillgänglighet
Poolning av processer Utmaning: Gamla enkeltrådade (STA) komponenter skalar dåligt Lösning: Skapa en pool av komponenter för multipla klienter Fördel för utvecklare: Skalbarhet Bättre tillgänglighet Se upp med delade resurser
Återanvändning av processer Utmaning: Prestandan på de flesta applikationer försämras med tiden Litar på kod från tredje-part med osäker kvalité Minnesläckor Användning av resurser som inte skalar Lösning: Stäng av och återstarta processer Fördel för utvecklare: En snabb och enkel lösning för kända problem och oförutsedda sådana
Applikationer som tjänster Utmaning: COM+ 1.0 applikationer kan inte exekvera som NT tjänster Lösning: Tillåt COM+ 1.x applikationer att exekvera som NT tjänster Fördelar för utvecklare: COM+ applikationer kan startas vid systemstart eller i sekvens COM+ applikationer kan exekvera som “LocalSystem” COM+ applikationer kan enkelt göras klusterbenägna
Minnesgrindar Utmaning: Skapa komponenter för minnessnåla situationer Felhanteringskod för “low-memory” svårt att debugga Lösning: Tillåt inte servrar att laddas eller komponenter att skapas vid minnessnåla situationer Fördel för utvecklare: Bättre tillförlitlighet genom att undvika svår- debuggad kod
COM+ Web Services
Pausa/slå av applikationer Utmaning: Inget sätt att kontrollera aktivering av komponenter Lösning: Tillåt administrativ och programmatisk kontroll över komponent-aktivering Fördel för utvecklare: Större möjligheter för administration och kontroll
“Dumpa” processer Utmaning: Svårt att felsöka COM+ applikationer i produktionsmiljöer Lösning: Tillåt administratörer att dumpa hela processens tillstånd utan att terminera den Fördel för utvecklare: Enklare att felsöka applikationer
Komponentalias Vad är en COM+ komponent? Komponent Typelib CLSID Bits.dll,.exe Konfiguration Construct string Pooling, JIT, osv.
Komponentalias Utmaning: Delad implementation sker på kodnivå Lösning: Tillåt implementationsdelning på den binära COMponent nivån Fördel för utvecklare: Mindre kod att skriva, debugga, hantera! Mindre utvecklingskostnader!
Publika/privata komponenter Utmaning: Alla COM+ komponenter är publika Lösning: Möjliggör både publika och privata komponenter Liknar konceptet för privata/publika metoder Publika komponenter kan aktiveras av andra applikationer Privata komponenter kan bara ses och aktiveras av andra komponenter inom samma applikation Fördel för utvecklare: Kontroll över exponeringen av funktionalitet
Initialisering av processer Utmaning: Inget sätt att initialisera en process eller att städa upp vid avslutning! Lösning: Låt komponenter implementera ett interface som anropas vid “startup” och “shutdown” Fördel för utvecklare: Applikationer kan “varm-startas”
“Services Without Components” Utmaning: Du måste paketera affärslogik i komponenter för att kunna utnyttja tjänster i COM+! Lösning: Låt utvecklare komma åt tjänster i COM+ utan att paketera koden som komponenter Fördel för utvecklare: COM+ tjänster kan användas oberoende av paketering
SWC med.NET Framework 1.1 System.EnterpriseServices… ServiceDomain Enter/Leave ServiceConfig Egenskaper Activity Kan användas för asynkrona aktiviteter
Partitioner Utmaning: Hur försäkrar du dig om att användare får en specifik version (eller konfiguration) av din COM+ applikation? Lösning: Tillåt identitet på användare att påverka aktivering Fördel för utvecklare: Enklare att designa och bygga “hostade” applikationer Flera versioner av en applikation på samma maskin gör det enklare att hantera få stora servrar istället för många små
COM+ i Windows Server 2003 Tänk på att: Vissa funktioner i COM+ 1.5 kommer att användas även fast du kanske inte har tänkt på dem ”Application Recycling/Pooling” ”Memory Gates” COM+ Web Services Testa dina komponenter vid utveckling!
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
Vad är MSMQ? MSMQ 1.0 i Windows NT 4.0 MSMQ 2.0 i Windows 2000 Integration med AD, klustring, MMC MSMQ 3.0 i Windows XP och Server till-många Meddelandehentering över Internet Triggers Ingen begränsning vid 2 GB System.Messaging
Distributionslistor Rikt men resurskrävande Transaktioner, säkerhet, endast en leverans QoS Publika distributionslistor Publicerade i ActiveDirectory Använder AD’s grupp objekt Kan innehålla andra distributionslistor ”FormatName:DL= ” Privata köer Ej publikt registrerade köer
Multicast Snålare än distributionslistor MSMQ autenticering och auktorisering PGM – Pragmatic Multicast Protocol Byggt ovanpå IP multicast Ett meddelande skickas på nätverket till Köer registrerar via MMC Kan lyssna på en Multicast grupp Klientapplikationer oberörda FormatName:MultiCast=
MSMQ över Internet SOAP/HTTP hantering Samma programmeringsmodell FormatName:Direct= SRMP Tillägg till WS–Routing Implementeras i MSMQ 3.0 Brandväggar och routrar Lastbalansering Mappning/routning med XML-filer
Triggers Utmaning: Generisk kod skapas om och om igen Lösning: En tjänst som hanterar/lyssnar på köer och hänvisar meddelanden till applikationer.NET komponenter måste ”wrappas” som COM- komponenter Fördelar Integrerad installation och administration Klustring
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
Fokusområden för IIS 6.0 Administration XML Metabase och WMI Skalbarhet HTTP.SYS och “Response cache” Tillgänglighet Isolering av “Listener” och Request Queuing Tillförlitlighet Isolering, monitorering och återvinning Bakåtkompatibilitet
Administration XML Metabase Textbaserad XML-fil Editera trots exekvering Automatisk versionshantering och “rollback” Konfigurations-kloning WMI och ADSI Administration via CMD
Skalbarhet och tillgänglighet Skalbarhet HTTP.SYS exekverar i “Kernel-mode” “Response Cache” Flera isolerade processer “WP” Tillgänglighet Isolerad “Listener” funktion “Request Queue”
metabase TCP/IP Filter INETINFO ASP.NET ASPNET_WP.EXE ASP.NET ASPNET_WP.EXE ASP.NET ASPNET_WP.EXE ASP.NET Processmodellen i IIS då…
HTTP.SYS WAS ASP.NET Filter Worker Process ASP.NET Filter Worker Process ASP.NET Filter Worker Process INETINFO metabase Processmodellen i IIS nu… ASP.NET Filter Worker Process
Tillförlitlighet i IIS 6.0 Tillförlitlighet Separera applikationer från INETINFO Automatisk periodisk återvinning Tidbaserad “Hits”-baserad Minnesbaserad Schemalagd Övervakning, återstartning Bättre debuggning
Agenda Tjänster i kärnan (Kernel services) COM+.NET Framework Visual Studio.NET 2003 MSMQIISUDDI
Vad är UDDI? Universal Description Discovery and Integration Ett standardiserat sätt att hitta Web Services En datamodell och ett API Lagra detaljer på leverantörer och deras tjänster Tjänster med och utan XML SOAP API för att söka och publicera Baserat på standards från Internet Oberoende av plattform, leverantör osv. Implementationer Publik på internet Privat för företag
Privata UDDI tjänster Tillvalstjänst i Windows Server 2003 Windows.NET Framework 1.1 IIS 6.0 SQL Server 2000 Enkelt att installera, konfigurera och underhålla Stödjer UDDI version 1 och 2 Integrerat med Active Directory Säkerhetsroller Publicering av tjänster
Privata UDDI tjänster Tillvalstjänst i Windows Server 2003 Windows.NET Framework 1.1 IIS 6.0 SQL Server 2000 Enkelt att installera, konfigurera och underhålla Stödjer UDDI version 1 och 2 Integrerat med Active Directory Säkerhetsroller Publicering av tjänster
Sammanfattning.NET Framework 1.1 Visual Studio.NET 2003 Windows Server 2003 (och Windows XP) COM+ 1.5 MSMQ 3.0 IIS 6.0 Omskriven men bakåtkompatibel
Vad har vi inte tagit upp? 64-bitars utveckling NLBS ”Authorization Manager” ”System Resource Manager” ”Hyperthreading” Terminal Services Windows Media Active Directory