The Microsoft Exchange Conference (MEC) in Atlanta in October 1999 marked the debut of Microsoft Exchange 2000 Server, formerly code-named Platinum. Microsoft plans to release Exchange 2000 several weeks after Windows 2000 (Win2K). Exchange 2000 depends heavily on Win2K because of the integration of the Active Directory (AD) into Exchange 2000. One of my main reasons for attending the MEC was to find out what functionality Exchange 2000 will add for developers and users. These new features caught my eye:
- The Web Store
- Server-based events
- Collaboration Data Objects (CDO) 3.0
- Item- and column-level security
The Web Store
Perhaps the most substantial and exciting change in Exchange 2000 is the migration of data storage to the Web Store. The Web Store is a semistructured store; that is, it can hold heterogeneous data without defining a fixed schema for the data beforehand.
The Web Store represents one infrastructure for multiple databases. You can have more than one public or private store on each server. Of possibly greater interest for building applications, though, is the fact that each database has two components: the Exchange database (.edb) file like you find in Exchange Server 5.5 stores and a new streaming database.
The streaming database provides direct storage of MIME data types. As a result, Exchange 2000 can store not only messages but also multimedia objects, iCalendar items, word-processing documents, and other types of documents that users transmit on the Internet. Storage and retrieval are faster because Exchange 2000 doesn't have to convert the data to and from its own format.
Another new aspect of Web-enabling the Exchange stores is Outlook Web Access (OWA) in Exchange 2000. Rather than requiring thousands of lines of Active Server Pages (ASP) code to display messages and other items from user mailbox folders, Microsoft has essentially built OWA into Exchange 2000. On screen, OWA duplicates the look and feel of Outlook 2000, except that OWA still doesn't support tasks, journal entries, sticky notes, spell check, or a few other features that many people consider essential. Anticipating more user interest in Web-client access to Exchange Server, Microsoft is pushing FrontPage 2000 as the main creation tool for Web forms.
For developers, working with the Web Store is relatively simple. One method is to access it as a database using a new OLE DB provider that works with the new ActiveX Data Objects (ADO) 2.5. Cumbersome entry and store IDs are no longer necessary because each folder and item has a unique URL. You can define custom object types (i.e., content classes) that include properties, events, and methods from related objects. Because Microsoft has built content indexing into the Web Store (including full-text indexing of message attachments and documents in folders) and ADO 2.5 provides the syntax, you can write routines that expose richer search capabilities than you could using SQL search strings.
Win2K users will find that, with the addition of a feature called the Installable File System (IFS), they can open their mailbox folders and public folders in the familiar Windows Explorer environment, with all its drag-and-drop capabilities, or as Web Folders in Microsoft Internet Explorer (IE) or Microsoft Office 2000.
More Server Events
Exchange 2000 adds new events for which you can write event handlers that react to activities in the store, and it lets you create event agents with Visual Basic (VB), not just as server scripts or with high-level languages such as C++. If you've struggled with the limitations of the Exchange Event Service in Exchange Server 5.5, you'll be glad to see the addition of a pair of synchronous events—OnSyncSave and OnSyncDelete—that take control of the item that triggers the event and that you can cancel. Because you know that these events will fire for every item added or changed and every item deleted, you can write more robust item and folder handling on the server side. In particular, Exchange doesn't delete an item until all OnSyncDelete event code has completed.
The asynchronous server-store events include OnDelete and OnSave (which replaces the OnMessageCreated and OnChange events in Exchange Server 5.5). Also new to the store are the OnMDBStartUp and OnMDBShutdown events to handle operations when the store starts and stops. You also have an OnTimer event, as in Exchange Server 5.5.
In addition to store events, transport and protocol events let you write applications to respond to Network News Transfer Protocol (NNTP) and SMTP events. (SMTP is the primary transport mechanism in Exchange 2000 events.) These events include connecting to a server, posting a new message, and receiving messages—before the messages reach the store.
CDO 3.0 makes a giant leap from the current version (1.21), which Exchange Server 5.5 and Outlook 2000 introduced. This new version runs only on the server but provides many new capabilities. You use ADO to access individual objects and collections, but CDO exposes the most frequently used properties as named properties and a Fields collection for unnamed properties.
Many of the new capabilities are tightly bound to Internet standards and to practices that don't yet have standards. For example, CDO 3.0 exposes full details of a MIME message, from the header to the body parts that make up a multipart message, with alternative text, HTML representations, and attachments. Among the new capabilities is a method to copy an entire Web page—including embedded images—into an HTML mail-format message.
CDO 3.0 also includes built-in workflow objects, eliminating the need for a separate Routing Objects add-in, which Exchange Server 5.5 Service Pack 1 (SP1) introduced. CDO 3.0 represents workflow processes with action tables, implemented as ADO RecordSet objects. Workflow documents respond to the synchronous OnSyncSave and OnSyncDelete events and the OnTimer event.
Another new feature is that programs using CDO can use public Contacts folders as address lists for name resolution. Previously, dynamic CDO sessions could use only the Global Address List (GAL).
For Exchange administration, a CDO Exchange Management subset can run from a client workstation to provide objects that help with high-level tasks such as creating mailboxes, without working with the Microsoft Active Directory Service Interfaces (ADSI) object model.
Item- and Column-level Security
In the past, one shortcoming of Exchange Server public folders was that you couldn't hide individual items or fields from unauthorized users. The only available permissions were at the folder level. The Exchange 2000 Web Store supports permissions at the item level and even at the field or column level. However, this feature has no client interface yet, limiting its use to custom applications. In Exchange 2000 beta 3, the need to use fairly low-level APIs to construct a security descriptor for each set of permissions limits your ability to work with these permissions. For the release version of Exchange 2000, Microsoft is working on a simpler mechanism for getting and setting the permission properties—one that you can use in VB and Web applications and that probably will use Extensible Markup Language (XML).
After several days of total Exchange 2000 and CDO 3.0 immersion, I started to get a nagging sense that something was missing. Then I realized that Microsoft is aiming virtually all the new capabilities at either Web-based users or server applications. Companies with many people working either temporarily disconnected or permanently offline will find few specifics in Exchange 2000 for their users. Any applications to serve these users will probably depend heavily on server-store events and CDO workflow objects. You'll have to wait to see whether the next version of Outlook offers an offline store with direct OLE DB/ADO access and some of CDO 3.0's more interesting new features.
In the meantime, another possibility might be building Web-based applications that take advantage of the offline replication capabilities of WWW Distributed Authoring and Versioning (WebDAV), the new Internet protocol for distributed authoring and versioning. (See the Internet Engineering Task Force—IETF—Request for Comments—RFC—2518 for a description of this protocol.) Exchange 2000 and the Web Folders feature in IE 5.0 and Office 2000 support WebDAV.
Migrate or Wait?
Exchange 2000 won't change your client and development environment overnight. Given the product's dependence on Win2K, any company deploying Exchange 2000 will need some time to formulate a solid implementation plan.
Furthermore, the tight integration of Exchange 2000 with Web capabilities might raise some difficult political issues inside many organizations. Until now, the messaging and intranet groups have often competed for resources and for the opportunity to use their favorite technologies to implement particular projects. What will happen when the messaging group says, "We're totally Web-based now, so we want to take over the intranet, in addition to running the mail and scheduling systems"? I think that many companies will spend considerable time deciding how to integrate Exchange 2000's new features into their existing intranet strategies. (They'll spend even more time developing a scheme for deploying Win2K, which must be in place before you can install Exchange 2000.)
If you're an Exchange developer, you'll want to concentrate on Exchange 2000's ADO and SQL queries because these technologies are essential to using CDO 3.0. I also recommend that you learn all you can about XML, for three reasons. First, WebDAV is based on XML. Second, Microsoft is already heavily using XML to integrate products. In Office 2000, XML lets you save a document in HTML format, have someone else edit the HTML version, then open it again in the original Office program without losing any of the Office functionality. (Microsoft calls this feature round-tripping.) Third, Microsoft's BizTalk initiative for electronic data interchange also depends on XML. Exchange 2000 uses XML for its store-data schema, and client applications can use XML to manipulate Exchange data. A companion language, Extensible Style Language (XSL), provides formatting tools for XML data.
If you want to learn more about Exchange 2000, Microsoft has posted the slides from the MEC '99 sessions at http://www.microsoft.com/ exchange/55/gen/MEC99.htm.