Eine Vorschau auf Visual Studio .NET

Veröffentlicht: 08. Jan 2001 | Aktualisiert: 14. Jun 2004

Von Dave Mendlen

Auf dieser Seite

 
 Webdienste und das .NET-Grundgerüst
 Ein Beispiel für einen Webdienst
 Die IDE im Visual Studio .NET
 Neues von Visual Basic .NET
 Neues von C++
 Eine neue Sprache: C#
 Software für den Einsatz im Unternehmen
 WebformulareVSEF
 Die Verwaltung der Daten mit ADO+
 RAD für den Server
 Werkzeuge für den Lebenszyklus
 Fazit

Diesen Artikel können Sie hier lesen dank freundlicher Unterstützung der Zeitschrift:

Bild13

Das neue Visual Studio .NET ist eine umfassende Entwicklungsumgebung für die Erstellung von Programmen mit dem .NET Framework, der Entwicklungsplattform für die nächste Generation von Webanwendungen.

Die sich abzeichnende Version von Visual Studio .NET hat ein umfassendes Leistungsangebot und bietet eine ganze Reihe von Entwicklungswerkzeugen an, mit denen Entwickler sehr schnell Anwendungen auf Basis von Webdiensten schreiben können. In diesem Artikel möchte ich darüber sprechen, was man im Visual Studio in Hinblick auf die schnelle Entwicklung, Einsatz und Wartung der Webdienste erwarten kann. Ich werde auf die Erweiterungen in der integrierten Entwicklungsumgebung eingehen, in Visual Basic und C++, sowie auf die neue Sprache C#.

Außerdem möchte ich kurz auf eine ganze Reihe von Punkten zu sprechen kommen, nämlich auf Webformulare und darauf, wie die Active Server Pages+ (ASP+) die Implementierung der Webformulare vereinfachen, auf ActiveX Data Objects+ (ADO+) und darauf, wie Datasets Daten in der Webanwendung verfügbar machen, auf neue Werkzeuge und Templates für die Unternehmensentwicklung, die erweiterte Unterstützung für XML, auf serverseitiges RAD und auf die neusten Entwicklungen im Visual Studio, die den gesamten Entwicklungslebenszyklus betreffen. Tabelle T1 zeigt die Beziehungen zwischen den Themen, auf die ich eingehen möchte.

Und wie bei allen Vorab-Versionen können sich die Details noch kräftig ändern, bis das Produkt fertig ist und ausgeliefert wird. Aber mit den Informationen, die ich Ihnen jetzt schon geben kann, können Sie sich bereits heute auf die neuen Entwicklungen einstellen und sich überlegen, wie Sie Ihren Nutzen daraus ziehen.

T1 Die Architektur vom Visual Studio .NET.

Visual Studio-Konzept und Entwicklungsumgebung

Einfache Bedienung, visuelle Designer für Drag-and-Drop-Entwicklung

Visual Studio Enterprise Framework

Architekturvorlagen und Entwurfsmuster

.NET Framework

Vereinfachtes Klassengerüst als Baukasten - Formulare, Daten und so weiter

Allen Sprachen gemeinsame Laufzeitschicht (Common Language Runtime)

Gemeinsame Infrastruktur für lose gekoppelte Objekte

Basistechniken XML, HTTP, SOAP, HTML

Offene Internet-Standards

 

Webdienste und das .NET-Grundgerüst

Während sich das Web weiter entwickelt und sich Verfahren wie XML für die universelle Datenübertragung immer weiter ausbreiten, hat sich auch ein neues Paradigma zur Softwareentwicklung herausgebildet, in dem Software als Sammlung von bereits verfügbaren Webdiensten gesehen wird, die mit den üblichen Internet-Protokollen verbreitet und benutzt werden können. Webdienste bieten über die Standard-Webprotokolle die Geschäftsfunktionalität aus der mittleren Schicht an. Da sie HTTP als Transportmittel benutzen, ist es möglich, dass die Aufrufe von fernen Methoden auch die Firewalls in den Unternehmen durchdringen. Zur Sicherheit lassen sich SSL (Secure Sockets Layer) und die gängigen Authentifizierungsmethoden einsetzen. Da Anfragen und Datenanforderungen via XML an diese Webdienste gerichtet werden können, lassen sich die Anwendungen in jeder Sprache entwickeln und mit jedem Komponentenmodell, und zwar unter jedem Betriebssystem, das HTTP-fähig ist.

Die vielen Vorteile dieses Modells liegen auf der Hand. Firmen können nicht nur ihre internen Anwendungen leichter integrieren, sondern auch auf die Webdienste zugreifen, die von anderen Firmen angeboten werden. Durch die passende Kombination von Webdiensten, die im Internet verfügbar sind, können Unternehmen eine Vielfalt von spezialisierten Anwendungen erstellen. Zum Beispiel könnte ein Unternehmen die Bankgeschäfte, den elektronischen Zahlungsverkehr, Aktiengeschäfte und Versicherungsdienste unter einem einheitlichen nahtlos erscheinenden Finanzportal anbieten. Oder es könnte die Bestandskontrolle, Bestellannahme und Bestellausführung zu einem umfassenden Handelssystem ausbauen.

Während das Webdienstmodell keine spezielle Plattform vorschreibt, erfordert ein Webdienst, der in der Lage ist, Millionen von Kunden zu bedienen und mit Daten zu versorgen, eine recht beachtliche Infrastruktur. Das Microsoft .NET Framework wurde so konzipiert, dass es die Werkzeuge und Verfahren liefern kann, die in solch einer Infrastruktur gebraucht werden. Mit anderen Worten, man kann sich dieses Grundgerüst als eine Erweiterung von Windows DNA 2000 mit besonderen Vorbereitungen für das Angebot und die Integration von Webdiensten und lang laufenden Vorgängen vorstellen.

Das Herz des .NET Frameworks ist eine Laufzeitschicht, die von allen Programmiersprachen gemeinsam benutzt wird (common language runtime). Diese Laufzeitschicht bietet viele Dienste an, die nicht nur die Codeentwicklung und den Einsatz der Anwendung vereinfachen, sondern auch die Zuverlässigkeit der Anwendung steigern. Im Grundgerüst gibt es auch eine Reihe von Klassenbibliotheken, die von jeder der .NET-Programmiersprachen aus eingesetzt werden können. Das Grundgerüst ermöglicht die Entwicklung von herkömmlichen Windows-Anwendungen, von Webanwendungen, Webdiensten und Komponenten.

Im Visual Studio .NET können Sie jede Funktion in jeder Sprache leicht als einen Webdienst anbieten. Sie brauchen nicht erst XML und SOAP zu lernen, um Webdienste einsetzen zu können. Wenn Sie Ihre Geschäftsobjekte kompilieren, generiert das Visual Studio .NET automatisch eine XML-Datei mit einer Beschreibung der Funktion. Und wenn die Funktion aufgerufen wird, nimmt sie automatisch XML-Pakete an oder verschickt sie.

Sobald der Webdienst fertiggestellt ist, werden der kompilierte Code und die XML-Datei mit der Beschreibung der öffentlichen Methoden, die es in diesem Dienst gibt, auf dem Webserver veröffentlicht. Nun lässt sich der Webdienst via HTTP aufrufen und die Übertragung der Daten von und an den Dienst erfolgt automatisch in XML.

Im Visual Studio .NET können Sie jeden veröffentlichten Webdienst mit der Maus direkt in Ihre Anwendung ziehen. Dieser Vorgang versetzt das Visual Studio in die Lage, den Webdienst wie eine Klasse zu behandeln. Der Zugriff auf einen Webdienst erfolgt dann so, dass man eine neue Instanz der Webdienstklasse anlegt und einfach deren Methoden aufruft.

 

Ein Beispiel für einen Webdienst

Schauen wir uns an einem Beispiel an, wie man eine Anwendung um einen Webdienst herum bauen kann. In diesem Beispiel wird zwar Visual Basic benutzt, aber im Visual Studio gibt es dieselben Werkzeuge zur Erstellung von Webdiensten auch für die anderen verfügbaren Sprachen. Der Webdienst soll in diesem Beispiel Aktien bewerten.

Bild01

B1 Ein Webdienstprojekt in Visual Basic .NET.

Zuerst würde man in Visual Basic ein neues Webdienstprojekt namens Stocks anlegen (Bild B1). Dann fügt man eine Klasse namens

<font size=2>Ratings</font>

zum Projekt hinzu und schreibt den Code für die Funktion, mit der sich der Dienst aufrufen lässt (Bild B2).

Bild02

B2 Das Webdienstprojekt erhält eine neue Klasse.

Wenn Sie das Projekt kompilieren, generiert das Visual Studio automatisch eine XML-Datei mit einer Beschreibung der Funktion

<font size=2>Rate</font>

:

<?xml version='1.0' ?> 
<methods href='https://localhost/Stocks/Ratings'> 
    <method name='Rate' href='Rate'> 
        <request> 
            <param dt='string'>ticker</param> 
        </request> 
        <response dt='string'/> 
    </method> 
</methods>

Nachdem der Webdienst fertiggestellt ist, werden der kompilierte Code und die XML-Datei mit der Beschreibung der öffentlichen Methoden des Dienstes auf dem Webserver veröffentlicht. Anschließend lässt sich der Webdienst via HTTP aufrufen und die Datenübertragung von und an den Dienst kann in XML erfolgen. Sie können den

<font size=2>Rate</font>

-Dienst in jedem beliebigen Browser direkt überprüfen. Wie Bild B3 zeigt, gibt Visual Basic die Daten von Haus aus als XML zurück.

Bild03

B3 Das XML-Ergebnis der Anfrage.

Zur Einbindung des Webdienstes in eine Anwendung brauchen Sie nur die XML-Datei des Webdienstes auf dem Projekt abzulegen, da sie nicht nur den URL des Webdienstes enthält, sondern auch die verfügbaren Funktionen beschreibt. Visual Studio kümmert sich dann um den restlichen Code, der für den Aufruf des Dienstes erforderlich ist.

Im Bild B4 wurde die XML-Datei des Aktienbewertungsdienstes bereits ins Projekt aufgenommen. Nun kann das Visual Studio die betreffenden Aufrufe für den Zugriff auf den Webdienst automatisch vervollständigen. Im Prinzip hätte man den Aktienbewertungsdienst auch auf jedem anderen Betriebssystem entwickeln können, darunter auch die vielen Unix-Dialekte, und mit jedem Webserver, zum Beispiel auch mit Apache. Unter Windows 2000 mit den IIS 5.0 (Internet Information Services) ist die Erstellung und Inbetriebnahme solcher Dienste sehr einfach.

Bild04

B4 Ein Webdienst für Aktienbewertungen

 

Die IDE im Visual Studio .NET

Visual Studio .NET stellt eine neue, nahezu vollständige Entwicklungsumgebung dar, die Visual Basic, Visual C++, Visual FoxPro und andere Sprachen in einer gemeinsamen IDE (integrated development environment) zusammenführt. Da sich die Entwicklung für das Web auch immer stärker auf Visual Studio .NET auswirkt, ist die Funktionalität, die sich zuvor im Visual InterDev fand, nun ein zentraler Bestandteil der Umgebung selbst und von den verschiedenen Sprachprodukten aus zugänglich. Unabhängig davon, welche Sprache Sie auch wählen, brauchen Sie nur noch eine Entwicklungsumgebung zu lernen, zu konfigurieren und zu benutzen. Für die Entwicklung, Fehlersuche und Anwendung des Codes brauchen Sie nicht mehr zwischen verschiedenen Umgebungen zu wechseln. Unter dem Strich erreichen Sie so eine schnellere und einfachere Entwicklung der Anwendungen. Ob Sie nun reinsprachige Anwendungen entwickeln oder eine bunt gemischte Lösung, die gemeinsame IDE stellt eine hochproduktive Entwicklungsumgebung dar, die visuelle Designer für HTML, XML, Daten und serverseitigen Code bietet und vieles mehr.

Außerdem hilft Ihnen die gemeinsame IDE bei der Fehlersuche in den Webanwendungen über Sprachen, Projekte, Prozesse und gespeicherte Prozeduren hinweg. Zu den Dingen, die mir am besten gefallen, gehören die dynamische Hilfe, der Webseiteneditor, die Aufgabenliste, der Objektbrowser, die neuen Fähigkeiten des Befehlsfensters, die Integration von VBA (Visual Basic für Anwendungen), die Auto-Hide-Fenster, die Unterstützung für mehrere Monitore und die an Office angelehnten Menüs. Ein Teil davon ist im Bild B5 zu sehen.

Bild05

B5 Visual Studio .NET hat einiges zu bieten.

Um zu rechten Zeit mit den richtigen Informationen aus der MSDN-Bibliothek dienen zu können, zeigt die IDE des Visual Studio abhängig von den gerade bearbeiteten Themen Verknüpfungen zur entsprechenden Dokumentation an. Wenn Sie sich zum Beispiel in der IDE befinden, aber derzeit keine Anwendung oder Komponente geöffnet haben, zeigt die Umgebung Hinweise auf die Textstellen an, in denen die Planung einer Anwendung besprochen wird, eine Auswahl an Vorlagen und Assistenten und eine dynamische Liste mit verschiedenen Anwendungsvorlagen von verschiedenen Anbietern. Im Zuge des Fortschritts, den Sie bei der Entwicklung der Anwendung machen, weiß auch die IDE, an welchem Teil der Anwendung Sie gerade arbeiten und zeigt im Fenster mit der dynamischen Hilfe den passenden Inhalt an.

Der neue Webseiteneditor ist ein gemeinsamer WYSIWYG-Editor, in dem Sie Ihre Webseiten graphisch oder visuell zusammenstellen können, ohne sich mit HTML oder Skriptcode herumzuschlagen. Der Webeditor beherrscht eine Reihe nützlicher kleiner Tricks, zum Beispiel die automatische Ergänzung von HTML-Tags und Ausdrücken, eine XML-Syntaxüberprüfung schon beim Entwurf und die absolute Positionierung der Elemente.

Die Aufgabenliste, die es zuvor nur für C++ gab, ist nun in allen Visual Studio-Sprachen verfügbar und ermöglicht es, den Code mit Kommentaren zu versehen, die sich auf die zu erledigenden Aufgaben beziehen. Diese Angaben werden analysiert und in einem einfachen Tabellenformat im Aufgabenfenster angezeigt. Auf diese Weise können Sie Ihren Code ohne großen Aufwand so kommentieren, dass andere Mitglieder der Arbeitsgruppe oder Sie selbst später nach dem erneuten Öffnen des Codes schnell den Stand der Dinge sehen. Ein Doppelklick auf den Kommentar in der Aufgabenliste zeigt den Code-Abschnitt an, in dem der entsprechende Kommentar zu finden ist.

Ein Objektbrowser ist für Visual Basic-Entwickler nichts Neues. Aber der neue Objektbrowser vom Visual Studio bildet alle Objekte des Systems ab und liefert über jedes detaillierte Informationen. Mit dem leistungsfähigen Mechanismus zum Filtern, Sortieren und Gruppieren können Sie unabhängig von der Sprache, in der die betreffenden Objekte entwickelt wurden, sehr schnell die gewünschten Informationen finden.

Im Befehlsfenster können Sie die Leistungsfähigkeit der IDE sehr schnell ausnutzen, indem Sie auf einer einzelnen Eingabezeile den erforderlichen Befehl zur Navigation, Suche und Ausführung der vielen denkbare Zielelemente innerhalb und außerhalb der IDE eingeben. Wenn Sie die Tastatur vorziehen, können Sie im Befehlsfenster zum Beispiel die erforderlichen Suchen durchführen, auf Fenster und Gegenstände innerhalb einer Lösung gehen, Befehle ausführen, im Web navigieren und externe Programme starten. Der IntelliSense-Mechanismus der IDE wurde auch auf das Befehlsfenster ausgedehnt, wo er anhand der zuvor bereits eingetippten Eingaben seine Vorschläge macht.

Die IDE ist nun vollständig an die Wünsche des Anwenders anpassbar und erweiterbar, dank der VBA-Makroaufzeichnung und VBA-Programmierbarkeit. Nahezu alle IDE-Subsysteme lassen sich auf diese Weise anpassen und automatisieren. Durch die Programmierbarkeit in VBA lassen sich auch andere Werkzeuge und Anwendungen wie Microsoft Project oder Outlook leichter in den Entwicklungszyklus integrieren. Im Befehlsfenster lassen sich schnelle Anpassungen und Makroaufrufe codieren, was die Steuerbarkeit und Kontrolle zusätzlich verbessert.

Mit dem neuen Schritt in Richtung sprachübergreifende Projekte ist das Visual Studio .NET in der Lage, die Fehlersuche auch über die Sprachgrenzen hinweg durchzuführen, die es in einer Lösung geben kann. Mit dem neuen Debugger können die Entwickler praktisch stufenlos zwischen HTML, Skript und Code hin und her gehen, einschließlich der dazugehörigen Aufrufstapel.

Zu den hübschen Kleinigkeiten, die einem die Arbeit erleichtern, gehört der Auto-Hide-Mechanismus. Wenn Sie die Arbeit in einem Fenster abgeschlossen haben, zum Beispiel im Werkzeugkasten (Toolbox), klappt er wieder zusammen und verschwindet an die Seite des Bildschirms. Sobald Sie solch ein Fenster wieder brauchen, schieben Sie einfach die Maus auf das betreffende Fenster und klappen es damit wieder auf. Das funktioniert bei allen gemeinsam benutzten Fenstern, so dass Sie unter dem Strich sehr viel Platz auf dem Bildschirm haben. Zusätzlichen Arbeitsplatz erhalten Sie durch zusätzliche Monitore. Visual Studio .NET kann nämlich mit den entsprechenden Monitorkonfigurationen umgehen.

Außerdem beherrscht Visual Studio auch diesen netten kleinen Trick, den Sie vielleicht schon in den Menüs von Office 2000 gesehen haben. Die Menüpunkte, die schon längere Zeit nicht mehr benutzt wurden, bleiben einfach verborgen. Falls Sie solch einen Menüpunkt wieder brauchen, halten Sie einfach die Maus für ungefähr eine Sekunde auf das Menü und schon klappt das Menü zu seiner vollen Größe auf. Diese Verhaltensweisen lassen sich natürlich vom Anwender konfigurieren, so dass Sie alle kleinen Helfer, die Sie nicht brauchen, einfach abschalten können.

 

Neues von Visual Basic .NET

Zur schnellen Entwicklung von kommerziellen Webanwendungen müssen sich die Entwickler auf eine Geschäftslogik verlassen können, die skalierbar, robust und wiederverwendbar ist. In den letzten Jahren hat sich die objektorientierte Programmierung zum wichtigsten Verfahren für die Entwicklung von Systemen entwickelt, die diese Anforderungen erfüllen können. Durch den Einsatz von objektorientierten Programmiersprachen sind große Systeme leichter zu verstehen, Fehler schneller gefunden und Aktualisierungen schneller durchgeführt.

Obwohl sich Visual Basic zu einem sehr beliebten Werkzeug für die schnelle Entwicklung von Windows-Anwendungen gemausert hat, schmälert sein Mangel an sprachlichen Ausdrucksmöglichkeiten für die objektorientierte Programmierung seine Akzeptanz bei der Entwicklung von Komponenten für die mittlere Schicht. Das soll sich mit der neuen Version von Visual Basic ändern, in der es neue Ausdrucksmöglichkeiten für die objektorientierte Programmierung gibt, durch die sich die Entwicklung von Webanwendungen vereinfachen lässt. Mit diesen neuen sprachlichen Mitteln soll Visual Basic die Leistungsfähigkeit von C++ oder Java erhalten, ohne die leichte Verständlichkeit aufzugeben, die es so populär gemacht hat.

Im folgenden möchte ich kurz die Erweiterungen in den Bereichen Vererbung, Überladung, Vielgestaltigkeit (Polymorphie), Fehlerbearbeitung mit

<font size=2>try..catch..finally</font>

und im Freethreading beschreiben.

Ganz oben auf der Wunschliste steht bei den meisten Leuten die Implementierungsvererbung. In der nächsten Version soll Visual Basic mit dem neuen Schlüsselwort

<font size=2>inherits</font>

die Vererbung beherrschen.

Die neue Visual Basic-Version beherrscht auch einen Trick, der "Überladung" genannt wird. Durch die Überladung können die Methoden und Operatoren eines Objekts in Abhängigkeit des Kontexts verschiedene Bedeutungen haben. Operatoren können sich je nach den aktuellen Datentypen oder Klassen der Operanden verschieden verhalten. So kann die Bedeutung von

<font size=2>x+y</font>

zum Beispiel davon abhängen, ob es sich bei

<font size=2>x</font>

und

<font size=2>y</font>

um Zahlen, Strings oder Strukturen handelt. Überladung ist besonders dann von Nutzen, wenn Ihr Objektmodell Ihnen vorschreibt, für Prozeduren, die mit verschiedenen Datentypen arbeiten, dieselben Namen zu verwenden. Eine Klasse kann zum Beispiel verschiedene Datentypen anzeigen, die folgende

<font size=2>Display</font>

-Prozeduren erfordern:

Overloads Sub Display (theChar As Char) 
... 
Overloads Sub Display (theInteger As Integer) 
... 
Overloads Sub Display (theDouble As Double)

Ohne Überladung müssten Sie jeder Prozedur einen anderen Namen geben (

<font size=2>DisplayChar, DisplayInt</font>

und

<font size=2>DisplayDouble</font>

), obwohl die Prozeduren im Prinzip dasselbe tun.

Polymorphie ist die Fähigkeit von Visual Basic, Objekte je nach ihren Datentypen oder Klassen verschieden zu bearbeiten. Außerdem bietet sie die Möglichkeit, die Methoden in den abgeleiteten Klassen neu zu definieren. So versetzt die Polymorphie den Entwickler zum Beispiel in die Lage, die

<font size=2>PayEmployee</font>

-Methode aus einer gegebenen Basisklasse

<font size=2>Employee</font>

in den abgeleiteten Klassen anders zu definieren, zum Beispiel als

<font size=2>Hourly, Salaried</font>

oder

<font size=2>Commissioned</font>

. Um welche spezielle Art von

<font size=2>Employee</font>

-Objekt es sich nun auch handelt, die Methode

<font size=2>PayEmployee</font>

wird immer das korrekte Ergebnis liefern, wie in den folgenden Zeilen angedeutet:

Class Employee 
    Function PayEmployee() 
       PayEmployee = Hours * HourlyRate 
    End Function 
Class CommissionedEmployee 
    Inherits Employee 
    Overloads Function PayEmployee() 
      PayEmployee = BasePay + Commissions 
    End Function

Fehlerbearbeitung bedeutete in Visual Basic bisher, den entsprechenden Code zur Fehlerbearbeitung in jeder Funktion und jeder Unterroutine einzubauen, was dieses Verfahren beinahe zur perfekten Definition des Begriffs "Codeduplizierung" macht. Die Fehlerbearbeitung mit dem bekannten Befehl

<font size=2>On Error GoTo</font>

erschwert in großen Anwendungen die Entwicklung und die Wartung. Schon die Bezeichnung des Befehls deutet eines der Probleme an.

Wie

<font size=2>GoTo</font>

impliziert, wird die Kontrolle an eine andere Stelle der Unterroutine weitergegeben, sobald ein Fehler auftritt. Läuft der Fehlercode erst einmal an, muss die Kontrolle oft mit einem Standard-

<font size=2>GoTo</font>

an einen bestimmten Aufräumcode weitergeben werden, von wo aus ein weiteres

<font size=2>GoTo</font>

zum Ausgang aus der Prozedur führt. Versucht man nun, mit einer Kombination von

<font size=2>Resume</font>

und

<font size=2>Next</font>

verschiedene Fehler abzufangen, wird daraus schnell der schönste Spaghetticode, der zudem weitere böse Fehler provoziert, wenn die Ausführungspfade nicht sorgfältig durchdacht und getestet werden.

Mit dem für Visual Basic neuen Sprachkonstrukt

<font size=2>try..catch..finally</font>

sind diese Probleme weitgehend vom Tisch. Die Bearbeitung von Fehlermeldungen (exception handling) lässt Schachtelungen zu und es gibt eine Kontrollstruktur für den Aufräumcode, der unter normalen Bedingungen und im Fehlerfall ausgeführt wird.

Das heutige Visual Basic läuft synchron. Das bedeutet, dass jede Codezeile vor der nächsten ausgeführt werden muss. Bei der Entwicklung von Webanwendungen heißt das Zauberwort aber "Skalierbarkeit". Die Entwickler brauchen Werkzeuge, die den gleichzeitigen Lauf verschiedener Programmteile ermöglichen (concurrent processing - wobei man den Begriff "Gleichzeitig" nicht auf die philosophische Goldwaage legen sollte). Die neue Version von Visual Basic implementiert Freethreading (siehe Kasten).

Freethreading
Wörtlich ungefähr: "freie Fädelung". Gemeint ist, dass verschiedene Ablaufpfade mit relativ wenigen Restriktionen nebeneinander bzw. gleichzeitig laufen können. Dank Freethreading können Entwickler einen neuen Thread starten, der dann zum Beispiel langwierige Arbeiten wie die Ausführung einer komplexen Abfrage oder eine komplizierte Berechnung übernimmt, während der Rest der Anwendung synchron weiterläuft.

 

Neues von C++

Für das Visual Studio .NET wurde auch die Programmiersprache C++ so erweitert, dass man mit ihr Programme für das neue .NET Framework entwickeln kann. Der entscheidende Teil sind die "verwalteten Erweiterungen" (Managed Extensions), die im Wesentlichen aus einer Reihe von Schlüsselwörtern und Attributen bestehen, mit denen sich vorhandene C++-Anwendungen .NET-fähig machen lassen. Mit einem simplen Compilerlauf können Sie nun die Leistungen des .NET-Grundgerüsts ausnutzen, ohne die traditionellen Vorteile von C++ aufgeben zu müssen, zum Beispiel die allseits beliebte Speicherverwaltung, den direkten Zugang zu den Programmierschnittstellen von Windows und bei Bedarf auch den ziemlich direkten Zugriff auf die Hardware.

Wenn Sie Ihre Daten am neuen einheitlichen Typsystem ausrichten (Unified Type System), sind auch die Klassen, die Sie in C++ entwickeln, sofort in jeder anderen Sprache zugänglich, für die es .NET-fähige Compiler gibt. Nun ist es also auch eine Vererbung über Sprachgrenzen hinweg möglich.

Auch die Speicherverwaltung wurde erweitert. Mit den Managed Extensions haben sie Zugang zu der Speicherhalde, die sich den Luxus eines eigenen Garbage Collectors (Speicherbereinigung) erlaubt, und zu automatisch verwalteten Objekten, die auf dieser Halde angelegt werden. Mit der Garbage Collection ist für die meisten Anwendungen eine automatische Leistungssteigerung verbunden, die es den Entwicklern zudem ermöglicht, sich auf die wichtigeren Aspekte der Anwendung zu konzentrieren, statt sich mit der Verwaltung von Objekten und Zeigern herumzuschlagen. In den nächsten Ausgaben des System Journals finden Sie sicherlich weitere Informationen über die C++-Erweiterungen.

 

Eine neue Sprache: C#

C# ist eine elegante, einfache, typsichere, objektorientierte Sprache, die den C- und C++-Entwicklern eine bessere RAD-Methode geben soll (Rapid Application Development), ohne die Leistungsfähigkeit und Kontrollmöglichkeiten zu opfern, die für C/C++ so bezeichnend sind. Da Ihnen Joshua Trupin und Marcellus Buchheit in diesem Heft schon einen guten Überblick über die Sprache geben, kann ich mich hier auf eine Aufzählung der wichtigsten Merkmale beschränken.

  • Ein Programmiermodell und eine Syntax, die C++-Programmierern geläufig ist. Die Befehle, Ausdrücke und Operatoren stimmen zu 99 Prozent mit denen von C++ überein.

  • Umfassender Zugriff auf die COM+-Dienste.

  • Umfassender Zugriff auf COM und Plattform, so dass sich der vorhandene Code leicht anpassen lässt.

  • Automatische Garbage Collection.

  • Typsicherheit. Es gibt keine nicht initialisierten Variablen mehr und keine unsicheren Typkonvertierungen. Zugriffe auf Arrays erfolgen mit einer Indexüberprüfung und Operationen und Konvertierungen werden auf Überlauf geprüft.

  • Erweiterbare und typisierte Metadaten. Es ist möglich, neue Typen und Kategorien von Metadaten zu deklarieren.

  • XML-Unterstützung für die Interaktion mit Webkomponenten.

 

Software für den Einsatz im Unternehmen

Das neue VSEF-Gerüst (Visual Studio Enterprise Framework) ermöglicht es den Unternehmen, Vorgaben und gängige Verfahrensweisen für Projekte zu definieren und sie in der IDE des Visual Studio als verbindlich festzulegen, um für die Einhaltung der getroffenen Entscheidungen zu sorgen. Es gibt zwei wichtige Komponenten im VSEF: Enterprise Templates und Policy Definition.

Die Enterprise Templates versetzen das Unternehmen in die Lage, Standardvorgaben für gängige Lösungen zu machen. Eine mehrschichtige Architektur wie Windows DNA 2000 lässt sich auf einer relativ hohen Ebene als eine Lösung beschreiben, die auf jeder der logischen Schichten der Anwendung bestimmte Projekttypen enthält. Microsoft stellt nun eine Anzahl solcher Templates im Visual Studio bereit, darunter Templates für Windows DNA und Webdienste. Ein zusätzlicher Vorteil für Entwickler und Unternehmen besteht in der Erweiterbarkeit dieser Templates. Templates lassen sich mit Hilfe eines XML-Schemas vollständig an die Erfordernisse des Unternehmens anpassen.

Der zweite wichtige Bestandteil des VSEF sind die Policy Definitions. Damit können die Unternehmen die Menü-, Dialog- und Komponentenauswahl filtern, die in der IDE verfügbar ist. Die Policy-Definitions lassen sich mit den Architekturvorlagen verknüpfen, so dass die Entwickler schneller und einfacher die gängigen Geschäftspraktiken in Erfahrung bringen und einhalten können. So sollte ein Geschäftslogikprojekt in der Windows DNA-Vorlage zum Beispiel keine Komponenten der Anwenderschnittstelle enthalten. Also kann der Architekt eine Policy definieren, die besagt, dass sich in diesem speziellen Projekt keine Webformulare und keine Windows-Formulare einsetzen lassen.

Diese Vorauswahl können die Architekten sogar noch weiter treiben und die Auswahl der zulässigen Verfahren noch weiter einschränken, zum Beispiel für die Mechanismen für den Datenzugriff, für Standardwerte oder Vorgaben und für die zulässigen Wertebereiche von Properties. Durch die Einschränkung der Auswahl in den Implementierungsdetails auf die gewünschten Verfahren und Methoden erhöht der VSEF die Produktivität der Entwickler. Und er erhöht auch die Wahrscheinlichkeit dafür, dass die Entwicklungsprojekte erfolgreich abgeschlossen werden.

Die Kombination von Enterprise Templates und Policy Definition setzt das Unternehmen in die Lage, die besten Verfahrensweisen zu definieren und in einer effizienten und effektiven Weise an ihre Entwickler zu kommunizieren. Auch die Kunden können die VSEF-Vorgaben ausbauen, indem sie Verknüpfungen mit wichtigen Themen und Informationen einfügen, die im dynamischen Hilfsfenster sichtbar werden. So könnte sich ein Unternehmen zum Beispiel für ActiveX Data Objects (ADO) als Zugriffsmechanismus auf die Daten entscheiden und die Umsetzung dieser Entscheidung durch eine Policy Definition erzwingen, die an die Architekturvorlage angeheftet wird. Außerdem kann das Unternehmen Informationen über die Gründe liefern und erklären, warum es diese Vorschrift gibt. Wenn sich nun ein Entwickler mit dem Datenzugriffscode beschäftigt und Fragen über die aktuellen Vorschriften und deren Begründung hat, wendet er sich ans dynamische Hilfefenster und schaut sich die verfügbaren Materialien an.

 

WebformulareVSEF

Mit der nächsten Version von Visual Studio werden die ASP+-Webformulare eingeführt. Sie vereinfachen die Entwicklung von skalierbaren Webanwendungen. Nach den Formularen von Visual Basic modelliert, ermöglichen die Webformulare den Programmierern die schnelle Entwicklung von plattformübergreifenden, browserübergreifenden, programmierbaren Webanwendungen, und zwar mit derselben Vorgehensweise, die sie schon in Visual Basic zur Entwicklung von Desktopanwendungen benutzt haben. Man zieht das gewünschte Steuerelement ins zukünftige Formular, klickt es per Doppelklick an, schreibt den erforderlichen Code und startet die Anwendung mit F5.

Ein normales Webformular besteht aus einer HTML-Datei, in der die visuelle Repräsentation der Seite definiert wird, und aus einer Quelltextdatei mit dem Code für die Bearbeitung der Ereignisse. Der Quelltext wird zu ausführbarem Code kompiliert und bietet daher zur Laufzeit die entsprechende Leistung. Beide Dateien liegen auf dem Server und werden auch dort ausgeführt, wo sie ein HTML 3.2-konformes Dokument erzeugen, das an den Client übermittelt wird.

Gegenüber ASP-Seiten und WebClasses haben Webformulare den Vorteil, dass sie auf dem Server den vollen Sprachumfang von Visual Basic oder C# (oder einer anderen passenden Sprache) bieten. Damit der Code ein Höchstmaß an Geschwindigkeit und Skalierbarkeit bietet, wird er kompiliert und auf dem Server ausgeführt. Außerdem lassen sich Webformulare leichter warten, weil sie die Schnittstelle zum Anwender (die HTML-Datei) sauber vom Code (eine Klassendatei) trennen. Der heutige ASP-Code verlangt noch eine Mischung von HTML und Skriptcode auf der Seite. Mit den Webformularen können die Entwickler ihren Code schreiben, während die Gestaltung der Seite, also die Abfassung der HTML-Datei an einen Grafikspezialisten delegiert wird.

Webformulare ermöglichen es auch, dass die Anwendung praktisch in jedem Browser und auf jeder Plattform läuft. Sie können sich auf die allgemeingültigen Seiten beschränken, die in reinem HTML 3.2 abgefasst sind, oder einen bestimmten Browser als Ziel angeben.

 

Die Verwaltung der Daten mit ADO+

ADO+ ist eine verbesserte Version von ADO und bietet einen plattformübergreifenden skalierbaren Datenzugriff. Da die zu übertragenden Daten mit XML formatiert werden, können sie von jeder Anwendung weiterverarbeitet werden, die XML versteht. Im Extremfall braucht es sich beim Empfänger gar nicht um eine ADO+-Komponente zu handeln. Es könnte irgendeine Lösung sein, die mit dem Visual Studio erstellt wurde, oder eine beliebige andere Anwendung auf einer beliebigen anderen Plattform. ADO+ wurde explizit unter Berücksichtigung solcher Szenarien entworfen.

Datasets sind im ADO+ neu. Solch ein Dataset ist eine Kopie der Datenbank, die lokal im Speicher verfügbar ist und eine beliebige Zahl von Tabellen enthalten kann, wobei jede Tabelle einer Datenbanktabelle oder einer speziellen Darstellung der Daten (einem View) entspricht. Ein Dataset bietet eine nicht verbundene Sicht auf die Daten in der Datenbank. Anders gesagt, die Datasets liegen lokal im Speicher und sind somit für die Webanwendungen verfügbar, aber es besteht keine aktive Verbindung mit der Datenbank, in der die Originale der Tabellen und Views liegen.

Zur Laufzeit werden die Daten von der Datenbank an ein Geschäftsobjekt in der mittleren Schicht übergeben und dann zur Anwenderschnittstelle transportiert. Dieser Datenaustausch erfolgt in einem speziellen Format auf XML-Basis. Zur Übertragung der Daten von einer Schicht in die nächste bringt eine ADO+-Lösung die im Speicher vorhandenen Daten (den Dataset) in die Form einer XML-Datei und schickt diese XML-Datei dann an die Zielkomponente. Sie können diese Daten als XML-Baum manipulieren und in diesem Baum navigieren. Ein Schema hilft Ihnen bei der relationalen Sicht auf die XML-Daten. Bild B6 zeigt die wichtigsten Komponenten einer ADO+-Lösung.

Bild06

B6 Die wichtigsten Komponenten einer ADO+-Lösung.

Im Visual Studio .NET programmieren Sie mit Datenobjekten und nicht mit Tabellen und Spalten. Die folgende Zeile zeigt die herkömmliche Sichtweise, die ohne starke Typisierung auskommt:

IF TotalCost > Table("Customer").Column("AvailableCredit")

Mit der starken Typisierung unter ADO+ ist dasselbe Beispiel viel einfacher geschrieben und gelesen:

IF TotalCost > Customer.AvailableCredit

Außerdem wird es Ihnen gefallen, wie die automatische Befehlsergänzung die Objekte erkennt, mit denen Sie programmieren. Da sich das XML-Schema sehr schön zur Laufzeit interpretieren lässt, ist IntelliSense in der Lage, die verfügbaren Tabellen aufzulisten, die mit

<font size=2>Customers</font>

zu tun haben (Bild B7).

Bild07

B7 IntelliSense findet die Bestellungstabelle.

Es gibt im Visual Studio .NET ein umfangreiches Angebot, das den Umgang mit XML erleichtert. So gibt es für die Hardcore-XML-Programmierer zum Beispiel einen XML-Editor mit Farbkodierung und automatischer Ergänzung von Befehlen und Tags (Bild B8).

Bild08

B8 Farbkodierung im XML-Editor.

Im Dataset Designer können Sie auch mit einer graphischen Darstellung der Daten arbeiten (Bild B9). Ziehen Sie einfach die Tabellen von einer beliebigen Datenquelle, zum Beispiel auch vom SQL Server oder von Oracle-Datenbanken aus dem Serverexplorer auf die Arbeitsfläche. Sie können Datasets zusammenstellen, deren Daten aus beliebigen Datenquellen stammen, etwa aus relationalen Datenbanken, aus Dateneinheiten, die während der Entwicklung zusammengestellt werden, oder aus XML-Dateien.

Bild09

B9 Der Dataset-Designer.

Meistens muss man während des Entwurfs der Anwendung Daten hinzufügen, ändern oder löschen. Auf der Datenvorschauseite können Sie nicht nur Daten hinzufügen oder ändern, sondern auch die Beziehungen zwischen den Daten ermitteln (Bild B10).

Bild10

B10 Datenvorschau.

Die Verfahren zur Datenbindung wurden für das Visual Studio .NET beträchtlich verbessert, um ADO+ möglichst leistungsfähig zu machen. Die Entwicklung von Anwenderschnittstellen zur Interaktion mit den Daten ist daher ziemlich einfach geworden. Und wichtiger noch, Werte können nun auch an Geschäftsobjekte und Webdienste gebunden werden.

 

RAD für den Server

Der Schlüssel zur Entwicklung von skalierbaren Webanwendungen liegt in der mittleren Schicht. Die Geschäftslogik und der größte Teil der Anwendung liegen auf den Servern der mittleren Schicht. In der nächsten Version des Visual Studio gibt es unter anderem einen Serverexplorer und einen Komponentendesigner. Sie ermöglichen mit Hilfe von wiederverwendbaren Serverkomponenten RAD auf dieselbe Weise, die Visual Basic-Entwickler bereits jetzt schon zur schnellen Konstruktion von Anwenderschnittstellen einsetzen. Nur geht es jetzt um die Entwicklung der Objekte für die mittlere Schicht.

Zu den größten Schwierigkeiten bei der Entwicklung einer Komponente für die mittlere Schicht gehört es, zuverlässig herauszufinden, welche Dienste im Netz des Unternehmens verfügbar sind. Und es kann sehr schwierig werden, diese Dienste in die eigenen Komponenten und Anwendungen zu integrieren.

Wenn Sie schon mit dem Visual Studio 6.0 gearbeitet haben, ist Ihnen sicherlich bekannt, dass die Erkundung von SQL Server- und Oracle-Datenbanken möglich war und Visual Basic das Schema und die Daten in diesen Datenbanken ändern konnte. Im Datenfenster (Data View) konnten Sie auf eine Datenbank zeigen und dann die Knoten aufklappen, um sich immer tiefer in die Struktur der Datenbank hineinzuarbeiten. Und Sie konnten sogar die Struktur der Datenbank oder Tabellen ändern, die Views und die gespeicherten Prozeduren.

Die nächste Version des Serverexplorers geht von der Datenanzeige im Visual Studio 6.0 aus einen großen Schritt weiter und zeigt die Ressourcen eines ganzen Computers an, einschließlich Datenbanken, Nachrichtenschlangen und alle anderen installierten Serverelemente, die auf der Maschine leben (Bild B11).

Bild11

B11 Der Serverexplorer.

Sie können mit dem Serverexplorer auch administrative Arbeiten an den Serverressourcen durchführen und zum Beispiel eine Nachrichtenschlange (message queue) hinzufügen, löschen oder umbenennen oder einen Windows NT-Dienst starten oder stoppen.

Sobald Sie wissen, welche Ressourcen es gibt, können Sie die gewünschten Ressourcen vom Serverexplorer in die Designer des Visual Studio ziehen. In ähnlicher Weise, in der Formulardesigner eine schnelle Entwicklung von Client-Anwendungen ermöglichen, bietet der Serverexplorer auch einen Weg zur schnellen und graphisch orientierten Entwicklung von serverseitigen Komponenten. Wenn Sie einen dieser Gegenstände in den Designer ziehen, erzeugt das Visual Studio automatisch eine Komponente, die mit der gewählten Ressource arbeitet.

Nehmen wir an, Sie wählen eine bestimmte Nachrichtenschlange aus und ziehen sie auf die Arbeitsfläche des Komponentendesigners. Das Visual Studio wird automatisch eine Komponente erzeugen, die diese spezielle Nachrichtenschlange anspricht (Bild B12). Klicken Sie einfach die Serverkomponente im Komponentendesigner mit einem Doppelklick an und der Code für das Objekt wird geöffnet.

Bild12

B12 Eine Komponente für eine Nachrichtenschlange.

 

Werkzeuge für den Lebenszyklus

Mit dem Visual Studio .NET widmet sich Microsoft stärker dem gesamten Lebenszyklus einer Anwendung. Mit der für das Internet erforderlichen Skalierbarkeit vor Augen konzipiert, ist das Visual Studio .NET mit seiner offenen und erweiterbaren Architektur eine Entwicklungsplattform für den gesamten Lebenszyklus einer Anwendung. Visual Studio berücksichtigt jede Phase im Entwicklungszyklus und stellt auch die Infrastruktur für die Teamarbeit bereit.

Microsoft plant, das Visual Studio .NET mit den hier besprochenen Schlüsselelementen und Werkzeugen zu liefern, und arbeitet intensiv mit Dritten zusammen, um den Lebenszyklus mit Leben zu erfüllen. Die anstehende Version wird sich stärker der Analyse, den Design, dem Test und den Einsatzphasen im Lebenszyklus einer Softwareentwicklung im Unternehmen widmen.

Zur Unterstützung der Analyse- und Designphasen bietet das Visual Studio einige Erweiterungen in den Modellierungswerkzeugen an. Brauchbare Informationen sind darüber aber noch nicht verfügbar. Was die Design- und Entwicklungsphase anbetrifft, hat das Visual Studio einiges zu bieten, wie man diesem Artikel entnehmen kann. In der IDE sind eine ganze Reihe von Designwerkzeugen und visuellen Entwicklungsprogrammen verfügbar. So kann ein Datenbankentwickler zum Beispiel die Logik seiner Datenbank festlegen, sie nahtlos in eine reale Datenbank konvertieren und dann mit den visuellen Entwicklungswerkzeugen die gespeicherten Prozeduren, Ansichten, anwenderdefinierte Funktionen und Abfragen schreiben.

In der IDE vom Visual Studio ist der Webtest integriert, der Entwickler in die Lage versetzt, Testskripte in der IDE zu schreiben und auszuführen und sicherzustellen, dass sich Ihre Anwendungen wie erwartet skalieren lassen und sich wie geplant verhalten. Der Skalierbarkeitstest ist via "point-and-click" möglich. Außerdem lassen sich die Antworten validieren und die Funktionalität von Webanwendungen und Web testen.

Das Visual Studio bietet auch ein Werkzeug zur Leistungsanalyse an, den Visual Studio Analyzer. Damit lassen sich Flaschenhälse im Programmablauf erkennen und beheben. Er wurde für die anstehende Version aktualisiert und kann nun WMI-Ereignisse (Windows Management Instrumentation) auslösen und erfassen. Außerdem lassen sich die Tests auch während des Laufs ändern.

Die Installations- und Einsatzphase kann für verteilte Anwendungen ziemlich kniffelig werden. Wie wohl jeder Entwickler von verteilten Webanwendungen schon erfahren musste, ist die Konfiguration und der Betrieb solcher Anwendungen gelegentlich ziemlich schwierig. Meistens müssen auf den Servern der mittleren Schicht Serverressourcen wie Nachrichtenschlangen oder Leistungszähler vorhanden sein, damit die Anwendung überhaupt laufen kann. Unter den neuen Werkzeugen vom Visual Studio findet sich aber auch ein Installationsprogramm, das alle Schichten einer verteilten Anwendung berücksichtigt. Sie können ein Installationsprogramm entwickeln, das seine Nutzlast an logische Maschinen ausliefert, die sich wiederum auf mehrere reale Maschinen abbilden lassen. Außerdem können Sie Ihre Anwendungen so einrichten, dass Sie bei der Fehlersuche nach der Installation unterstützt werden.

Wenn Sie mit den neuen vielschichtigen Projekten vom Visual Studio .NET eine Anwendung für Windows entwickeln, erfordert die Anwendung kein spezielles Installationsprogramm mehr. Sie zeigen einfach auf die Anwendung und starten sie. Außerdem sind Anwendungen, die mit Visual Studio .NET entwickelt wurden, selbstreparierend. Sollte ein Anwender versehentlich eine DLL oder gar die Anwendung selbst löschen, wird sie automatisch vom System ersetzt. Das Visual Studio wird auch die nächste Version des AppCenters anbieten, um die Installation auf Serverfarmen zu erleichtern und die Verwaltung von verteilten Anwendungen mit graphischen Werkzeugen zu ermöglichen.

 

Fazit

Das neue Visual Studio .NET ist eine umfassende Entwicklungsumgebung für die Erstellung von Programmen mit dem .NET Framework, der Entwicklungsplattform für die nächste Generation von Webanwendungen. Es bietet die Hilfsmittel zur Vereinfachung von Erstellung, Installation und ständigen Weiterentwicklung von sicheren, skalierbaren und hochgradig verfügbaren Webdiensten, ohne dem Entwickler eine neue steile Lernkurve zuzumuten. Außerdem versetzt das Visual Studio .NET den Webentwickler in die Lage, die Webdienste so zu benutzen, als handele es sich um lokale Objekte in der vom Entwickler bevorzugten Programmiersprache. Das vereinfacht die Entwicklung von Diensten und Anwendungen und erlaubt es den Entwicklern, ihre Zeit und Kraft auf die Dinge anzuwenden, die der eigenen Firma den entscheidenden Wettbewerbsvorteil bieten. Das Ergebnis ist eine kürzere Zeitspanne bis zur Marktreife, eine höhere Produktivität der Entwickler und letztlich auch bessere Software.

Dave Mendlen ist Produktplaner für Visual Basic. Er war davor ein technischer Produktmanager für das Visual Studio 6 und ein Entwickler im Office 2000-Team. Er ist außerdem der Gründer der Visual Basic User Group in Chicago.