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...