Middleware-Evaluation: ASP vs. ColdFusion
Artikel erschienen in Swiss IT Magazine 2000/41
Heute existieren beinahe unzählige Werkzeuge zur Erstellung von Webanwendungen. Es gab Zeiten, in welchen fast monatlich eine neue Lösung auf den Markt kam. Einige konnten sich in Nischen behaupten, doch der grösste Teil ist schon wieder verschwunden. Momentan ist es in Bezug auf Neuentwicklungen in diesem Bereich eher ruhig. Unter den noch bestehenden sind einige nur Programmiersprachen mit entsprechendem Compiler oder Interpreter. Diese enthalten keine weiteren Tools und zeichnen sich deshalb nicht als integrierte Entwicklungsplattform aus. Dazu gehören beispielsweise Perl und PHP. Natürlich haben sich in der Zwischenzeit einige Tool-Hersteller dieser Sache angenommen und solche Werkzeuge auf den Markt gebracht. Es bleibt jedoch dem Programmierer überlassen, diese Werkzeuge selber zusammenzustellen, womit eine Weiterentwicklung als ganzes Paket nicht gewährleistet ist.
Aus diesem Grund beschränken wir uns im Workshop auf die beiden Marktführer in diesem Bereich: Active Server Pages von Microsoft und ColdFusion von Allaire.
Sowohl für ASP wie auch für ColdFusion finden sich je eine Entwicklungsplattform am Markt. Bei Allaire ist dies ColdFusion Studio 4.5, bei Microsoft Visual InterDev 6.0.
Die ASP-Technologie ist eigentlich nur ein Parser für Dateien, die neben HTML-Code auch Scriptbefehle enthalten, für welche ein Interpreter existiert. Zudem stellt ASP ein Objektmodell für den Zugriff auf den Webserver bereit. Für die Ausführung der Scripts stehen verschiedene Interpreter zur Verfügung. Standardmässig sind dies JavaScript und VBScript oder aber auch Perl. Alle anderen Aufgaben übernehmen Komponenten und Server wie zum Beispiel ADO für den Zugriff auf Daten, CDO für Workflow und E-Mail und MTS für Transaktionsverarbeitung und Berechtigungssteuerung. Diese Komponenten sind alle in Windows 2000 enthalten. Bei NT 4.0 müssen sie teilweise aus dem Option Pack installiert werden. Als IDE wird Visual InterDev 6.0 aus VisualStudio verwendet.
Grundsätzlich enthalten beide Editoren alle von einem Entwickler im Arbeitsalltag benötigten Funktionen. Von der reinen Editor-Funktionalität her, hat Cold-Fusion Studio sogar leicht die Nase vorn. So können beispielsweise Teilbereiche eines Dokuments aus- und eingeblendet werden. ColdFusion Studio bietet auch für HTML-Tags eine IntelliSense-ähnliche Technologie, die bei Allaire Tag Insight und Function Insight genannt wird.
Bei Visual InterDev wird diese Funktion nur innerhalb des Codes angeboten. Man kann sich zwar HTML-Tags zusammenstellen lassen, es wäre jedoch schöner, wenn dies gleich wie bei Scripts über IntelliSense gemacht werden könnte. Schmerzlich vermisst haben wir dieses Feature jedoch in ColdFusion Studio bei den Objekten. Denn gerade dort wirkt dieses Feature als Lehrer für den Programmierer und hilft ihm, die manchmal sehr komplexen Objektstrukturen zu verstehen, wodurch die Entwicklungseffizienz erheblich gesteigert werden kann. Zudem ist dieses Feature auch eine grosse Hilfe bei der Erstellung von Anwendungen, die dem n-Tier-Konzept entsprechen.
Beide Editoren setzen Farbe zur Unterscheidung von Codes ein. Visual InterDev unterscheidet auch die Tags und Attribute derselben im HTML- und JavaScript-Code farblich, was wiederum bei ColdFusion Studio nicht vorhanden ist. Dabei stiessen wir noch auf einen kleinen Bug: Ab der zweiten Zeile zeigt ColdFusion Studio einen mehrzeiligen Kommentar wie einen normalen Code an.
Beide Editoren unterstützen den Entwickler bei der Erstellung von Dateien mit Wizards. Leider gehen diese nie über eine relativ geringe Komplexität hinaus. So sind sie für das Kennenlernen zwar sehr nützlich, der erfahrene Programmierer stösst dabei jedoch sehr schnell an die Grenzen und er wird sich seine eigenen Frameworks aufbauen. In Visual InterDev können diese sehr schön eingebunden werden.
ColdFusion Studio enthält mehrere Applets, die auch von den Wizards unterstützt werden. Leider bieten diese keine Möglichkeit einer direkten Kommunikation mit dem Server. Deshalb müssen immer alle Daten beim Laden der Seite übertragen werden und können nicht erst bei Bedarf, zum Beispiel wenn ein Ast einer Baumstruktur geöffnet wird, vom Server angefordert werden. Bei einer kleinen Datenmenge ist dies nicht weiter ein Problem, bei grösseren wird die Geduld der Benutzer schon eher überstrapaziert.
Visual InterDev bietet dafür die sogenannten Design Time Controls. Diese werden über einen spezialisierten Dialog parametrisiert und als Kommentar in der Seite abgelegt. Beim Speichern der Datei werden diese Parameter in den entsprechenden Code übersetzt und bleiben als Kommentar enthalten. Damit können sie auch mehrmals wieder verändert werden. Hier zeigt sich auch der Unterschied zum Wizard: Wurde dieser einmal beendet, müssen Änderungen danach jeweils manuell im Code vorgenommen werden. Alle Einstellungen, die im Wizard gemacht wurden, sind nur noch als Code vorhanden. Nicht so bei Design Time Controls: Sie können jederzeit wieder aufgerufen werden und enthalten noch alle Einstellungen aus der letzten Verwendung. Somit eignet sich Visual InterDev auch sehr gut als RAD-Tool.
Solche Design Time Controls bieten im übrigen die verschiedensten Komponentenhersteller an und können sehr flexibel in Visual InterDev eingebunden werden. Es gibt auch ein SDK, mit welchem solche Controls selber erstellt werden können. Leider sind die DTCs für Visual InterDev nicht kompatibel mit denjenigen für FrontPage.
Ein kleines Schmankerl bietet ColdFusion Studio: Die IDE bietet Wizards zum Erstellen von WML-Dateien. Dies ist erwähnenswert, auch wenn sich die Anzahl von WAP-Projekten in naher Zukunft noch in sehr engen Grenzen halten wird.
Beide IDE enthalten auch visuelle Datenbank-Editier-Tools. Dabei hat jedoch Visual InterDev klar die Nase vorn. In ColdFusion Studio können die Datenbankobjekte wie Tabellen, Views etc. nicht direkt mutiert werden. Es ist lediglich möglich, Queries zu erstellen. Dies ist sehr unvorteilhaft, zumal die Abfragen in den Wizards nicht verwendet werden können. Dasselbe gilt übrigens für Tabellen und Views aus Datenbanken, die über OLE DB angesprochen werden. Visual InterDev hingegen bietet die volle Palette an Datenbankoperationen, sofern der entsprechende OLE DB Provider dies auch unterstützt.
Wie steht es nun mit der Teamfähigkeit dieser zwei Entwicklungsumgebungen? Grundsätzlich befriedigend. Nur befriedigend deshalb, weil beide ein zusätzliches Tool benötigen, damit sich die Entwickler nicht gegenseitig den Code überschreiben. Die Editoren enthalten Mechanismen, die solches in den meisten Fällen verhindern. In der täglichen Projektarbeit kann dies jedoch trotzdem geschehen. Beide unterstützen den Standard SCC. Damit können die gängigsten Source-Control-Tools wie PVCS oder Microsoft Source Safe eingesetzt werden. Mit diesen Tools braucht es wirklich boshafte Entwickler oder fahrlässige Projektleiter, damit ein Überschreiben von Dateien noch vorkommt. Microsoft Source Save ist in Visual Studio enthalten.
Die Projektverwaltung bei beiden Produkten genügen den Anforderungen. Jene von Visual InterDev ist besser in den Webserver integriert und verwendet die FrontPage Server Extensions. Dafür kann ColdFusion Studio die Dateien im Projektexplorer auch über FTP verwalten. Bei Visual InterDev ist dies erst mit Windows 2000 möglich.
Bei der Verteilung des erstellten Codes gehen die beiden Kontrahenten verschiedene Wege. Bei ColdFusion Studio gibt es dafür einen Wizard, über den ein Script in JavaScript oder VBScript erstellt wird. Das Script kann vom Benutzer nachträglich verändert und damit funktional erweitert werden, was sehr wertvoll ist. Visual InterDev enthält eine Funktion, mit der das ganze Web, oder auch nur geänderte Seiten, auf ein anderes Sub-Web kopiert werden kann. Ein kontrolliertes Staging bieten beide nicht. Dazu muss das Source Control Tool verwendet werden.
Beide Systeme unterstützen sowohl ein lokales wie auch ein Server-seitiges Debugging. Bei Visual InterDev kann immer nur ein Projekt auf dem gleichen Server behandelt werden. Anders bei ColdFusion, hier fanden wir keine entsprechende Einschränkung.
Die Funktionen für das Setzen von Breakpoints und das Inspizieren von Variablen ist bei beiden Werkzeugen genügend. Visual InterDev verbucht hier einen kleinen Pluspunkt, da alles so funktioniert wie in den anderen Entwicklungstools von Microsoft und anderen Herstellern auch.
Ist eine Anwendung unter ASP einmal entwanzt und die Performance optimiert, läuft diese in der Regel sehr stabil. Unter ASP werden heute viele Business-kritische Anwendungen im Intranet betrieben. Gelegentlich auftretende Speicher-Lecks stammen meistens von unsauber programmierten Scripts. Dabei sind nicht geschlossene und befreite Objekte die Hauptursache.
Diese Lecks können jedoch sehr gut mit sogenannten Stress-Tools lokalisiert werden. Ein solches Stress-Tool gibt es von Microsoft gratis zum Downloaden. Zu finden unter der Bezeichnung "Web Application Stress-Tool".
ColdFusion hatte in der Vergangenheit ein kleines Problem mit der Stabilität. Unter gewissen Konfigurationen blieb der Server regelmässig hängen. Mit der aktuellen Version scheint dieses Problem jedoch gelöst.
Sprachen wurden erfunden, um die Menschen zu trennen. Dieser leicht polemische Satz trifft jedoch sehr oft auch auf Programmiersprachen zu. Wie vielen, eher sinnlosen Diskussionen über Programmiersprachen musste doch schon fast jeder Programmierer beiwohnen. Es gibt untaugliche, mühsame oder sogar sinnlose Programmiersprachen. Unter den wenig verbleibenden gibt es solche, die für den einen oder anderen Zweck sehr gut geeignet sind. Und am Schluss ist es ein wenig Gewöhnung und sehr viel Geschmackssache.
CFML wie auch VBScript oder JavaScript sind sicher sehr gut für die gesetzten Aufgaben gerüstet. CFML ist etwas umständlich, wenn es darum geht, den Sprachumfang mittels Standardkomponenten zu erweitern. Dies liegt jedoch nicht in der Natur von Markup-Sprachen, wie XML sehr schön beweist. XML wurde aber von Beginn weg als erweiterbare Sprache konzipiert (was allein der Name andeutet). Da ColdFusion plattformunabhängig ist, müssen eben auch verschiedene Schnittstellen-Definitionen berücksichtigt werden.
Ansonsten rümpft jeder VB-Programmierer bezüglich CFML die Nase, wie auch jeder CFML-Programmierer bezüglich VB. Aus der Tatsache, dass mehr Programmierer VB als CFML verwenden, kann noch keine Qualifikation für die Sprache allein abgeleitet werden.
Betrachtet man die strategischen Allianzen von Allaire sowie die Entwicklungsgeschichte von ColdFusion, so ist unschwer zu erkennen, dass sich ColdFusion immer mehr Richtung Java/Unix entwickeln wird. Dies soll aber nicht heissen, dass Windows nicht mehr unterstützt wird. Allaire hat eine gute Codebasis, um verschiedene Plattformen zu unterstützen.
ASP hingegen wird weiterhin hauptsächlich unter Windows laufen. Es gibt zwar eine Portierung auf Unix. Doch wie sollen all die Komponenten, welche in ASP Verwendung finden, auch unter Unix funktionieren? Überhaupt liegt eine der grössten Vorteile von ASP gegenüber ColdFusion in der nahtlosen Integration von Standardkomponenten aus dem Hause Microsoft und anderen Anbietern, welche diese Plattformen unterstützen. Solche Komponenten können zwar auch in ColdFusion eingebunden werden, sie bleiben jedoch nur sehr geübten Entwicklern vorbehalten. Die Integration von ASP mit MTS (Microsoft Transaction Server), CDO (Colaborate Data Object) und Message Queing sind da gute Beispiele. Diese arbeiten hervorragend mit ASP zusammen und sind auch optimal in Visual InterDev integriert. Gerade diese Komponenten und Anwendungsserver werden für transaktionsorientierte Anwendungen oder Workflow-Applikationen benötigt.
Sowohl Allaire wie auch Microsoft beschäftigen sich sehr stark mit dem Blick in die Web-Zukunft. Eine der ersten E-Commerce-Sites in der Schweiz wurde schon mit ColdFusion realisiert und funktioniert übrigens noch heute. Damals war es das einzige Werkzeug, welches konzeptionell vernünftig in einen Internetserver eingebunden war. Das Konzept war richtig und darauf kam es an. Als dann die erste Version von ASP erschien, stiegen viele Unternehmen und Programmierer relativ schnell um. Das Konzept war einfach passender. Für die ColdFusion-Zukunft sah es somit eher düster aus. Allaire gelang es jedoch, ihr Produkt kontinuierlich weiterzuentwickeln. Heute ist Allaire ein sehr gut etabliertes Unternehmen mit einer hervorragenden Produktpalette. Insbesondere das Produkt Allaire Spectra bietet ein interessantes Konzept und scheint in die richtige Richtung zu weisen.
Die Programmierer werden immer mehr Standardkomponenten verwenden. Alles andere ist heute nicht mehr wirtschaftlich. Diese Komponenten sind nicht mehr nur einfach Controls oder kleine Funktionssammlungen, sondern immer grössere und umfangreichere Systeme, die der Programmierer mit anderen verknüpfen muss. Dabei sind klar standardisierte Schnittstellen wie auch ein einfacher programmatischer Zugang zu diesen Interfaces aus den Entwicklungswerkzeugen das Wichtigste. Da können nur Hersteller von Entwicklungswerkzeugen bestehen, die auch in den grossen Standardisierungsgremien Einsitz nehmen und die notwendigen Ressourcen haben. Nur so ist es den Anbietern von Dienstleistungen und Produkten möglich, am E-Business innerhalb nützlicher Frist teilzunehmen und ihre Anwendungen mit denen ihrer Kunden, Partner und Lieferanten zu verknüpfen (time to market). Aus diesen Gründen eignet sich ASP besser für Corporate Application und für die firmenweite Applikationsintegration.
Genau darauf zielt die neuste Kampagne von Microsoft. Unter dem trendigen Namen .Net lanciert Microsoft ein neues Internet, unter anderem mit einer neuen Definition von E-Business. Wenn wir mal all das Marketinggesülze weglassen, so haben wir einige sehr gute Konzepte und sind in freudiger Erwartung der Tools, die uns die Zukunft bringen wird. Einige sind bereits heute als Beta verfügbar. So zum Beispiel BizTalk Server, Visual Studio .Net und ASP+. Damit werden sicher einige der heutigen Probleme gelöst werden.