The Evolution of Exchange Development…

The Exchange Developer Roadmap has been discussed by more authoritative sources before leading up to the release of Exchange 2010.  I’d like to revisit this roadmap and take it from where Jason left off, going forward into Exchange Online in Office 365.  For enterprise customers this is important to understand – if you are upgrading from Exchange 2003 to 2010 or Online then many applications that touch Exchange today will require an upgrade to the “modern” Exchange APIs.  For an ISV looking at these API sets will help you understand what APIs you need to leverage to support the versions of Exchange you’re targeting.

When I talk about this roadmap or evolution of Exchange development, I typically do so by grouping the APIs in six categories:

Group Name APIs used to…
Client …build clients including synchronization
Notification …get notifications or changes
Management …perform management tasks
Backup …backup Exchange mailbox data
Transport …inject custom logic into the transport and routing stack of Exchange
OWA …extend, customize, or reuse Outlook Web Access/App

Let’s take a high-level walk through these groups from Exchange 2003 to Exchange 2010 and see how the APIs evolve over time and how they are different between on-premises and online…

Exchange 2003:

Group APIs
Client MAPI * , CDO 1.21, Incremental Change Synchronization (ICS), WebDAV, ExOLEDB, CDOEX
Notification Exchange Store Events, WebDAV notifications
Management CDOEXM, Exchange WMI
Backup Exchange Streaming Backup and Restore API, VSS
Transport SMTP Event Sinks
OWA Web forms

* All references to MAPI are in the context of Exchange’s MAPI provider which was removed from the product in Exchange 2007 completely. However, the Exchange 2003 version has been made available as a separate download for some time now although the support lifecycle is tied to Exchange 2003’s

Exchange 2007:

Group APIs
Client WebDAV, ExOLEDB, CDOEX, Exchange Web Services (EWS)
Notification Exchange Store Events, WebDAV notifications, EWS Notifications
Management Exchange PowerShell
Backup VSS
Transport Transport Agents
OWA Forms Registry, UI Customization, Web Parts

Exchange Online (BPOS):

Group APIs
Client Exchange Web Services (EWS) *
Notification EWS Notifications
Management BPOS PowerShell **
Backup none
Transport none
OWA none

* Because Exchange Online in BPOS is based on Exchange 2007, the Exchange Impersonation configuration requires configuration of the CAS server as well as permissions on mailboxes. For this reason, Exchange Impersonation cannot be configured on BPOS Standard (BPOS-S).
** The BPOS PowerShell cmdlets are mainly provided for migration scenarios and not general management

Exchange 2010:

Group APIs
Client Exchange Web Services (EWS)
Notification EWS Notifications *
Management Exchange PowerShell
Backup VSS, EWS (ExportItems/UploadItems) **
Transport Transport Agents
OWA Forms Registry, UI Customization, Web Parts

* Streaming notifications were added in Exchange 2010 and provide a critical balance between firewall friendly push notifications and the “real-enough-time-ness” of push notifications. ** Added in Exchange 2010 SP1

Exchange Online (Office 365):

Group APIs
Client Exchange Web Services (EWS)
Notification EWS Notifications
Management Exchange PowerShell *
Backup EWS (ExportItems/UploadItems)
Transport Forefront Online Protection for Exchange (FOPE)
OWA none

* Within the constraints of what management is allowable in general by an individual tenant in Office 365

I’ll get into more detail about this evolution with a discussion of online service descriptions in the coming weeks.  I’ll also talk about how the features and APIs available in each version affect product planning for ISVs that want to support Exchange Online as well as Exchange on-premises.