Over the past year I’ve been working with the new Exchange Web Services Managed API and I have to say, it’s a wonderful thing – especially compared to working with the Visual Studio generated proxy classes for Exchange Web Services. While working with Exchange Web Services (EWS) early in the Exchange 2007 release it became apparent to me that an editor tool in the spirit of MFCMAPI built on top of EWS might be useful. At the time I started working on such an editor and based it off the Visual Studio generated proxy classes. To my delight I was soon introduced to an API that the product team was working on to make my life (and that of any other EWS developer using .NET languages) much easier – the EWS Managed API.
I immediately started work on converting my editor code from proxy classes to this new API. This process was about 75% deleting code and 25% writing new EWS Managed API code. I was replacing hundreds of lines of proxy class code with half as much (or less) EWS Managed API code. Over the coming months I explored the features of the API and was able to quickly add new functionality to the editor because I could focus on UI code rather than wordy proxy class code.
Out of all of this work comes EWSEditor! This initial public release is called version 1.5 because it has been used internally for a while by my team. There are still features I’m working on and basic API coverage that will come together over time. It’s a work in progress but still very useful in its current state so I wanted to get it out to the public. Please feel free to send me suggestions, comments, bugs, etc. There is an Issue Tracker and Discussions page on the project site – feel free to use them.
From the project site, here are the goals of EWSEditor…
“1. Demonstrate the Exchange Web Services Managed API functionality and simplicity to developers through its source code.
2. Demonstrate the Exchange Web Services SOAP traffic used to perform actions initiated through an explorer user interface.
3. Assist non-developers in debugging and understanding Exchange stores by exploring items, folders, and their properties in depth. “
The plan right now is to do an update every two months (next one will be in January). Since this is the first public release there might be an interim release if some blocking issue come up. Available for download are release notes which I’ll add to with each release to track the changes over time and give an overview of what is new. Here are the notes from the 1.5 release…
“1.5 Release – 11/6/2009
The first public release of EWS Editor! The basic feature set is still be flushed out but it is still a very useful tool. There are three feature areas of EWS Editor: General UI, Support Tools, and API Coverage. The focus of this release was to establish the UI design and flow of the application, solidify some useful support tools, and illustrate the direction of the application.
There are some gaps in CRUD tasks across item and folder properties and items themselves. The major focus of upcoming releases will be to fill in these gaps before moving on to new features.”
If your interested, download the source or just the binary and try it out. Here are some the highlighted features from the release notes…
Exchange Service Profiles
Exchange Service Profiles describe not only the connection information for calls specified in the ExchangeService class but also the root folder to use in the tree view of EWS Editor. Multiple ExchangeService objects can be displayed at one time using unique configurations. This allows folders on multiple servers and server versions to be displayed at one time or displaying the same folders using different credentials.
Exchange Service Profiles can be saved to an XML file which contains the configuration information (sans specified passwords) so that it can be reloaded easily. If a profile requires credentials then a prompt will appear when loading the Services Profile to enter the credentials.
View properties of ExchangeServices, Folders, and Items
The PropertyDetailsGrid display first class properties for all nodes of the tree view starting with the root, ExchangeService node and all the way to the folder contents form, displaying first class properties for Items in a folder. Under the View menu the PropertySet used to retrieve item or folder data can be configured to customize which schema properties and extended properties are displayed in the PropertyDetailsGrid.
Extended Property Lookup
A number of known extended MAPI properties have been indexed in EWS Editor. Extended properties can be added to the PropertyDetailsGrid through a look up using a known constant name for the property such as PR_SUBJECT, PidTagSubject, etc. An Extended Property Lookup tool provides a way to quickly get the property information for a known constant.
Request and response logging
While EWS Editor is running, all requests and responses are logged to a file. The Chatter Log tool is used to view the history of requests and responses.