zarafa summercamp 2012 - exchange web services on zarafa

14
Exchange Web Services (EWS) Steve Hardy

Upload: zarafa

Post on 14-Dec-2014

1.495 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

Exchange Web Services (EWS)Steve Hardy

Page 2: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• Eee-doubleyou-es• Eee-wee-es• you w’s ?

How are we going to pronounce it ?

Page 3: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

This is a ‘ewe’

Page 4: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

- XML-based protocol (SOAP)- Introduced in Exchange 2007- Successor to previous WebDAV approach- Used from introduction for OWA 2007 and later

What is EWS

<?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>

Page 5: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• 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)

Who/what is using EWS at the moment?

Page 6: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

Relation to MAPI

MAPI

EWS Gateway(IIS plugin)

EWS Gateway(IIS plugin)

Exchange mail store message database

(EMSMDB)

EWS protocol

Page 7: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

EWS: MAPI + CDO over XML

EWS Gateway(IIS plugin)EWS Gateway(IIS plugin)

EWS protocol

MAPI -> XML engine

Calendaring engine(like CDO)

Meeting/Task request engine (like CDO)

Page 8: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• 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

Why was it designed this way ?

Page 9: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• 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

Why do clients use EWS?

Page 10: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

EWS in Zarafa

EWS Gateway(Standalone server)EWS Gateway(Standalone server)

EWS protocol

MAPI -> XML engine

Calendaring engine(like CDO)

Meeting/Task request engine (like CDO)

Page 11: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• 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++)

EWS in Zarafa: general design

Page 12: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

In order of priority:

1.Support e-mail handling in Outlook 2011, Mac Mail

2.Support addressbook handling in Outlook 2011, Mac Addressbook

3.Support calendar handling

4.Support MR/TR handling

5.Management functions like setting OOF, etc.

Low priority:-Bulk handling features of EWS-Administration features

EWS general development goals

Page 13: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

• 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

XML handling in Zarafa-EWS

Page 14: Zarafa SummerCamp 2012 - Exchange Web Services on Zarafa

Demo