Neue Exchange-Programmierschnittstellen

Auch wenn Exchange 12 noch nicht komplett auf die kommende Serverversion von Windows Vista abgestimmt ist, ergeben sich für die nächste Exchange-Version einige größere Änderungen für den Bereich Softwareentwicklung für Exchange.

In den vergangenen Jahren haben sich die technischen Gegebenheiten für die Softwareentwicklung im Windows-Bereich durch die Einführung der .NET-Technologie stark gewandelt. Dies wird sich in den kommenden Jahren weiter fortsetzen, da zunehmend Produkte auf den Markt kommen, die auf .NET zurückgreifen oder zumindest auf diese Technologie ausgerichtet sind. Im Bereich System- und Unternehmenssoftware kommen weitere Neuerungen auf die Anwender zu, wie beispielsweise die neue Kommandozeilenumgebung MSH beziehungsweise Monad, die speziell das administrative Scripting neu gestalten wird.

Entwickler im Exchange-Bereich werden diese Entwicklung wohl mit einem lachenden und einem weinenden Auge betrachten. Einerseits war die API-Unterstützung für Exchange immer recht komplex und lückenhaft. Auf der anderen Seite erfordert der Schritt zu anderen Programmierschnittstellen einen beachtlichen Lernaufwand und reduziert erst einmal den Wert des vorhandenen Know-hows.

E12 steht ganz im Zeichen der genannten Umstrukturierung der vorhandenen Programmieransätze. Da mit der neuen Software gleichzeitig ein großer Versionsschritt vollzogen wurde, nutzt Microsoft die Gelegenheit, einigen alten Ballast loszuwerden. Exchange 12 unterstützt dann eine Reihe neuer Programmiermodelle, verschiedene alte APIs werden aber dafür nicht mehr weiter enthalten sein. Einige andere ältere Schnittstellen werden als so genannte „deemphasized technologies“ eingestuft. Diese Bereiche bleiben zwar in der nächsten Version enthalten, werden zukünftig aber nicht mehr weiterentwickelt. Im nächsten großen Versionsschritt werden sie dann ebenfalls nicht mehr enthalten sein. Das bedeutet letztendlich, dass diese APIs bei Neuentwicklungen nach Möglichkeit vermieden werden sollen, weil sie zukünftig nicht mehr unterstützt werden.

Nicht mehr unterstützte API

Wird ersetzt durch

ExWin32,ExIFS

Web Services

EDK Gateway

Managed Agents

Transport Event Sinks

Managed Agents

Routing Objects

Managed Agents

Exchange 5.5 Event Service

Managed Agents

CDOExM

Monad-Skripts

WMI-Klassen

Monad-Skripts

Queue Viewer

Monad-Skripts

Backup/Restore (ESEdbcli2)

Monad-Skripts

CDOWF, Workflow Designer

Windows Workflow
Foundation

Web Forms

ASP.NET

Neues Konzept

Exchange ist im Grund ein System, dessen relativ kompakte Struktur erst in den letzten Versionen durch die Einführung von Rollen etwas aufgebrochen wurde. Hierdurch ist eine gewisse Modularität entstanden. Real besteht Exchange aus einer Reihe unterschiedlicher Komponenten, die entwicklungstechnisch eine ganz unterschiedliche Historie aufweisen, beispielsweise der X.400-MTA, der SMTP-Dienst oder die Webkomponenten. Die Schnittstellen dazwischen sind deshalb eher ad hoc entstanden und nicht besonders gut aufeinander abgestimmt. Die APIs für Entwickler anderer Firmen sind vielfach ohne Blick auf das heutige Gesamtkonzept entstanden. Viele der Schnittstellen stammen noch von anderen Produkten, wie beispielsweise Simple MAPI, welches bereits mit MS Mail 3.0 im Jahre 1992 eingeführt wurde.

Ziel bei der Entwicklung von Exchange 12 war eine modulare Neukonzeption des Systems, bei der die Schnittstellen zwischen den Komponenten besser aufeinander abgestimmt sind. Exchange12 wird aus einer größeren Anzahl von Modulen bestehen, die sich mit unterschiedlichen Konfigurationen an verschiedene Rollen anpassen lassen. Die Schnittstellen zwischen den Modulen sollen idealerweise auch diejenigen sein, die externen Entwicklern zur Erweiterung des Systems zur Verfügung stehen. Die hierbei bereitgestellten APIs sollen sich auf die Kernfunktionen von Exchange beschränken und keine Komponenten unterstützen, die schon durch andere Schnittstellen abgedeckt sind.

Um diesem Ziel gerecht zu werden, wurden oder werden eine ganze Reihe von Exchange 12- Teilen mit so genanntem Managed Code, das heißt Programmteilen, die .NET verwenden, neu geschrieben. Insbesondere werden viele Mailfunktionen in den gerne mit .NET verwendeten Web Services zur Verfügung stehen. Außerdem wird E12 eigene Monad-Objekte beinhalten, die die Verwaltung des Servers stark vereinfachen sollen. Insbesondere für die Monad-Umgebung gilt diese Vereinfachung aber erst nach einiger Einarbeitungszeit, die notwendig ist, um sich mit der neuen Technologie vertraut zu machen.