ASP .NET In der Projektpraxis Hannes Preishuber MCSD, MCSE, MCT CEO ppedv ag [email protected] Agenda Active Server Pages eine Success Story Warum wechseln ASP .NET was ists ASP .NET was bringts Anwendungsdesign in .NET Portierung ASP -> .NET Das häufigste Frontend wird in Zukunft Browser basiert sein. Der Benutzer will jede Art von Informationen fließen sehen. Grenzen wie Betriebsystem oder Prozessoren interessieren ihn dabei nicht. Active Server Page ASP Voll integriert in IIS (VB)Script in HTML-Seiten • Extension ASP Alle COM-Objekte verfügbar • Z.B. ADO Sechs eingebaute Objekte • Server, Response, Request... Entwicklungswerkzeug Visual InterDev ASP Grenzen Script Programmierung Code & Design in einer Seite Session Management • Cookies & Web Farms Installation & Betrieb • Austauschen einer DLL Fehlersuche Code Sichtbar für Admin DTCs (Design Time Controls) Hier kommt.... Seite.ASPX • • • • • • • • • <> ASP 4.0 Auch bekannt als ASP+ Riesen Schritt Voll kompiliert Objektorientiert Basiert und nutzt .NET Framework Keine DLL's mehr registrieren Einfach Hype .... Wie bekomme ich .NET Visual Studio .NET (RC1) • Download oder Bestellen Komponenten Update • 1 CD inkludiert in Visual Studio .NET ASP .NET Premium • • 18 MB Download von zb www.ASP.net Mehr Features als ASP .NET • 4 Prozessoren, Chaching, Web Farm Session State Grundlagen .NET Zwei Techtalk's Was ist ASP .NET • • Basis Beta 1 http://www.microsoft.com/germany/ms/msdnevents/techtalk/ download/TT-0201-PPT.ppt Was ist das NET Framework & VB .NET • Basis Beta 2 • http://www.microsoft.com/germany/ms/msdnevents/techtalk/ download/TT-0901.ppt Bestandteile ASPX-Seite • • Codebehind-Seite • • HTML-Layout Server-Controls Programmcode in beliebiger Programmiersprache Nutzung von Assemblies einer beliebigen Programmiersprache Resource-Datei BIN-Verzeichnis Warum Codebehind? Trennen von User-Interface und Logik • Webdesigner bekommen ihre Chance Compiler kann übersetzen Drei Arten • • • In Site Src Codebehind n. Sprachen • VB.NET und C# als Hauptkandidaten Unterschiede C# • • • • • • • Neu und schön Case Sensitiv Java & C++ Überladen von Operatoren Dokumentieren Unmanaged Code CSC VB .NET • • • • • 10 Jahre Wissen Option explizit VB Dialekte IDE komfortabler VBC Kein Unterschied Beide Sprachen nutzen das Framework • • • • • • • • Common Language Runtime Common Type System Common Language Specification .NET Klassenbibliothek Intermediate Language Just in Time Compiler Garbage Collection Objektorientiert Argument: Web Forms HTML • Runat="server" Server Controls • Textbox, Label .. DataList Controls • Datagrid, Datalist, Repeater Validation • Feldprüfung Rich Controls • Kalender Objektmodell <script language="VB" runat="server"> Sub Btn_Click(Sender As Object, E As EventArgs) Message.Text = "Hi " & Name.Text End Sub </script> <form action="myform.aspx" runat=server> Name: <asp:textbox id="Name" runat=server/> <asp:button text="Enter" Onclick="Btn_Click" runat=server/> <asp:label id="Message" runat=server/> </form> Vorteile WebForms Objektmodell Datenbindung Validierbar Viewstate Erzeugen Browser HTML Code User Controls • Kombinieren von WebControls (Menü) File Upload FTP Posting Acceptor <form enctype="multipart/form-data" action="/scripts/cpshost.dll? PUBLISH" method="POST"> Drittanbieter • Safileup WebDav Tool Erweitertung von HTTP 1.1 Per ASP Request.BinaryRead(Request.TotalBytes) File Upload Imports System.Web.Util Form erzeugen • encType="multipart/form-data" Input Element • <input id=Upload1 type=file runat="Server"> Input Button Upload Code • Upload1.PostedFile.SaveAs(Datei) Datenbindung Connection String ADO Objekt erzeugen • Server.CreateObject("ADODB.Recordset“) Open Cursortype u Locktype <%=rs.fields(„Name“)%> Connection bleibt offen (pooling) Datenbindung nur an DTCs Datenbindung Connection String • Speichern in Web.Config Dim hshTable as NameValueCollection = CType(Context.GetConfig("system.web/myconf"), NameValueCollection) Dim dsn as String = CType(hshTable.Item("DBCON"), String)"), Hashtable)("DBCON")), String) DatasetCommand • mCmd("select * ",con) DataSet statt Recordset • mCmd.Filldataset(myDS,"tbName") Table Objekt an Grid binden • Gr.Datasource=mCmd.Tables(0).Defaultview Datagrid Design Time Control (DTC) • • Recordset Datagrid Dicke Library • _ScriptLibrary Aber sogar editierbar! • Hart aber möglich • Q229672 Datagrid visuelles Grid Binden an Daten • Tabelle, XML, Array, Hashtable editierbar Customizing • Checkboxen, Buttons, Grafiken, Links Events • ItemCommand Mail Versand CDONTS oder CDOSYS • SMTP Server des IIS Fremde Komponenten • Smtp Mailer Hardcore INET Objekt Mail Versand Imports System.Web.Util Generieren einer MailMessage • Dim mymail as new MailMessage Füllen des Mail Containers Smtpmail.Send • Mymail.from="[email protected]" • Smtpmail.send Grafik anzeigen Balkengrafik aus ASP • dehnen eines GIF‘s Office Web Components • Excel Chart ASP Image Komponenten Grafik anzeigen Imports System.Drawing • Aktuell nur Drawing2D Image Control auf aspx • <asp:image id=Bild imageurl="bild.aspx"> Erzeuge Bild • Bild=New Speichern Bitmap(300,230,...) • Bild.Save(Stream,ImageFormat.PNG) • Response.BinaryWrite(Stream.ToArray) Architektur Anforderungen an Softwareentwicklung • • • Code reuse Skalierbar Ausfallsicher Vorteile von Architektur • • Gezielteres vorgehen Später keine Grenzen Architektur<>Pflichtenheft • Grobes Konzept Windows DNA Das Entwicklungsmodell für Windows Datenbanken Mainframe-Systeme Thin Client Rich Client Externe Anwendungen Architektur in .NET Keine COM Objekte mehr • • Aber COM+ Unterstützung • System.Enterpriseservices Kein eigener Komponentendienst Asynchrone Prozesse • • Keine Callbacks DisConnected Data Keine zentrale Registrierung • Rechte Verwaltung Architektur in .NET Datenbank • Stored Procedures Datenzugriff • ADO .NET Middle Tier • • • COM Objekte über Wrapper einbinden Assamblies als COM Ersatz WebServices liefern Funktionalität Frontend • Web Forms Sample:IBuySpy Sample Downloadbar • http://www.ibuyspy.com/ Klassische 3 Tier Applikation Web Farm State Management • • • • • Einrichten über web.config Cookies Cookieless Stateserver • • InProc OutProc SQL Server • Scripte InstallSqlState.sql Warum portieren Web Forms • Trennung Code und UI Web Farmen • State & Session Management Installation • Copy, WEB.CONFIG Performance • Caching, Compiliert Webservices konsumieren Wie portieren? Umbenennen der ASP Seite (ASPX) Prozedur Aufruf mit "( )" Variablen deklarieren Kein SET mehr Standardeigenschaften ergänzen Aspcompat in Page Direktive setzen ..... Quelle www.devtrain.de aspcompat <%page aspcompat=true%> • • • • • Page läuft im STA • Single Threaded Apartment Nur für ASPX Seiten Alle VB 6.0 COM sind STA Manche COM Objekte können MTA & STA • • Umschalten über Registry Makfre15.bat & makapt15.bat ASP Objekte in COM Objekten • • OnStartPage & OnEndPage Eventhandlers ObjectContext Fehlersuche Neues Error Fenster • Lokal andere Meldungen Tracing • • Page Level Application Level über Web.config Debugging • • Ohne Visual Studio dbgclr.exe Performance Counters Das Finale: ASP .NET Webanwendungen • Verschiedene Clients • Browser, Mobile und Webservice Consumer Einfacheres Erstellen Mächtigere Funktionen Designed für Enterprise Lösungen Wo gibt’s weitere Info’s? MSDN Online • http://www.microsoft.com/germany/msdn MSDN Quickie • http://www.microsoft.com/germany/msdn/quickie MSDN TechTalk-Newsgroup • news://msnews.microsoft.com/microsoft.public.de.german.techtalk www.devtrain.de • http://www.devtrain.de www.gotdotnet.de Bücher • ASP3.0/ASP+ Sybex Verlag Hannes Preishuber Fragen!? Uff...