Post on 05-Apr-2015
transcript
ASP .NET In der Projektpraxis
Hannes PreishuberMCSD, MCSE, MCT
CEO ppedv ag
HannesP@ppedv.de
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
• HTML-Layout
• Server-Controls
Codebehind-Seite
• 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
FTPPosting Acceptor
<form enctype="multipart/form-data" action="/scripts/cpshost.dll?PUBLISH" method="POST">
Drittanbieter Tool
• Safileup
WebDav Erweitertung von HTTP 1.1Per 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.ConfigDim 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).Defaultvie
w
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• Mymail.from="christkindl@himmel.de"
Smtpmail.Send• 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 Bitmap(300,230,...)
Speichern• 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 DNADas Entwicklungsmodell für Windows
ExternExterneeAAnwendungennwendungen
Mainframe-SystemeMainframe-Systeme
DatDatenbankenenbanken
Thin Thin ClientClient
Rich Rich ClientClient
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...Uff...