zarafa summercamp 2012 - exchange web services on zarafa

Post on 14-Dec-2014

1.495 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Exchange Web Services (EWS)Steve Hardy

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

How are we going to pronounce it ?

This is a ‘ewe’

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

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

Relation to MAPI

MAPI

EWS Gateway(IIS plugin)

EWS Gateway(IIS plugin)

Exchange mail store message database

(EMSMDB)

EWS protocol

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)

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

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

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)

• 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

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

• 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

Demo

top related