Neue Exchange-Programmierschnittstellen
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 |
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.