4. What is EWS
- XML-based protocol (SOAP)
- Introduced in Exchange 2007
- Successor to previous WebDAV approach
- Used from introduction for OWA 2007 and later
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope>
<soap:Body>
<GetItem>
<ItemShape>
<t:BaseShape>Default</t:BaseShape>
<t:IncludeMimeContent>true</t:IncludeMimeContent>
</ItemShape>
<ItemIds><t:ItemId Id="AAAlAF" ChangeKey="CQAAAB" /></ItemIds>
</GetItem>
</soap:Body>
</soap:Envelope>
5. Who/what is using EWS at the moment?
• Outlook 2010
– Free/Busy
– Some minor features
• Mac
– Outlook 2011
– ‘Mail’
– ‘Addressbook’
– ‘Calendar’
• Other
– Various opensource projects for accessing exchange server from
opensource packages (eg. Evolution, Thunderbird, etc)
– Various closed source projects (eg. Archivers, Indexers, etc)
6. Relation to MAPI
EWS protocol
EWS Gateway
(IIS plugin)
MAPI
Exchange mail store message
database
(EMSMDB)
7. EWS: MAPI + CDO over XML
EWS protocol
MAPI -> XML engine
EWS Gateway Calendaring engine
(IIS plugin) (like CDO)
Meeting/Task request
engine (like CDO)
8. Why was it designed this way ?
• Much more high-level functions
– Easier for developers to use, less client-side code needed
– Solves most of the really hard stuff like recurrence and meeting request
handling
• XML/SOAP interface allows access from any platform
• XML/SOAP interface allows access from any programming
language (well, in theory …)
• Most easily built on top of MAPI since MAPI already provides many
features that you need for EWS
9. Why do clients use EWS?
• On non-MS platform
– You have no choice, except IMAP & CalDAV
• On MS platform
– It’s easier than MAPI, and usable from .Net applications
• Why not IMAP?
– Email only
– No handling of meeting requests, etc
• Why not CalDAV?
– Calendar/tasks only
– No easy handling of meeting requests, etc
11. EWS in Zarafa: general design
• Forked processes (think ‘zarafa-ewsd’)
• Primarily in Python
– Rapid development possible
– Speed disadvantage compared to C++ is not important, since most real
processing is done by MAPI (C++)
12. EWS general development goals
In order of priority:
3.Support e-mail handling in Outlook 2011, Mac Mail
4.Support addressbook handling in Outlook 2011, Mac Addressbook
5.Support calendar handling
6.Support MR/TR handling
7.Management functions like setting OOF, etc.
Low priority:
-Bulk handling features of EWS
-Administration features
13. XML handling in Zarafa-EWS
• Always the question: pull or push XML ?
Push
- Read all XML at once, parse it all, then pass to processor
- Easy to code, clear overview
- Slow for large requests: high latency
Pull
- Read XML bit-by-bit, process when possible (before reading end of
XML request)
- Harder to code, sometimes makes the code less readable
- Low memory footprint, low latency