Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer...
-
Upload
leudbold-wunder -
Category
Documents
-
view
118 -
download
5
Transcript of Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer...
![Page 1: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/1.jpg)
ExchangeExchange 20002000 ProgrammierschnittstellenProgrammierschnittstellen
Michael KlopstockExchange System Engineer
Microsoft GmbH
![Page 2: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/2.jpg)
ADOADO
OLEDBOLEDB
EFDEFD
CMCCMCDAPIDAPI
ActiveActive MessagingMessagingActiveActive MessagingMessaging
Exchange Server InterfacesExchange Server Interfaces
SimpleSimple MAPIMAPISimpleSimple MAPIMAPI
Event ScriptingScriptingEvent ScriptingScripting
OLEOLE MessagingMessagingOLEOLE MessagingMessagingADSIADSI
Outlook Object ModelOutlook Object Model
Routing ObjectsRouting Objects
CDOEXMCDOEXM
Workflow EngineWorkflow Engine
ExtendedExtended MAPIMAPIExtendedExtended MAPIMAPI
CDO 1.21CDO 1.21CDO 1.21CDO 1.21 WEBDAVWEBDAV
XMLXML
CDOSYSCDOSYS
AVAPIAVAPI
Outlook FormsOutlook Forms
WEBFORMSWEBFORMS
LDAPLDAP
Client ExtensionsClient Extensions
COM-AddinsCOM-Addins
CDONTS CDONTS CDO 3.0CDO 3.0
Exchange 2000 SchnittstellenExchange 2000 Schnittstellen
![Page 3: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/3.jpg)
AgendaAgenda
Exchange 5.x Schnittstellen
• Store Schnittstellen
• Directory Schnittstellen
Exchange 2000 Schnittstellen
• Neue Store Schnittstellen
• Neue Directory Schnittstellen
Exchange 2000 Future
• Exchange 2000 SP1
• Exchange und .NET
![Page 4: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/4.jpg)
Exchange 5.x Store SchnittstellenExchange 5.x Store Schnittstellen
StoreStore
MAPIMAPI CDOCDO 1.211.21
Exchange Server Interfaces
CMCCMC
SimpleSimple MAPIMAPI
OLEOLE MessagingMessaging
ActiveActive MessagingMessaging
AVAPICDONTS
![Page 5: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/5.jpg)
Extended MAPIExtended MAPI
Von über 100 Firmen und Microsoft definierter Standard, welcher das Zusammenspiel zwischen Komponenten und deren Schnittstellen definiert
Sämtliche Bestandteile des Exchange Servers kommunizieren u.a. über MAPI (Store, Gateways, Addressbook, Transport, etc.) und Clients (Exchange und Outlook)
OLE/COM basierend Programmierung nur mit C/C++
![Page 6: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/6.jpg)
Extended MAPIExtended MAPI
MAPI ist ein offenes Konzept, nahezu alle Komponenten können durch eigene Implementierungen ersetzt oder erweitert werden
MAPI definiert, welche Schnittstellen Komponenten im Gesamtsystem haben müssen, die Implementierung selbst ist offen.
Realisiert über COM Interfaces (wie abstrakte Basisklassen)
![Page 7: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/7.jpg)
Extended MAPIExtended MAPI
MAPIINIT_0 MapiInitStruct = {0, MAPIINIT_0 MapiInitStruct = {0, MAPI_NT_SERVICEMAPI_NT_SERVICE};};hResult = MAPIInitialize(&MapiInitStruct);hResult = MAPIInitialize(&MapiInitStruct);
// ...// ...
hResult = MAPILogonEx(0,hResult = MAPILogonEx(0, GetMAPIProfileName(),GetMAPIProfileName(), GetMAPIProfilePassword(),GetMAPIProfilePassword(), MAPI_NEW_SESSION | MAPI_NEW_SESSION | MAPI_NO_MAILMAPI_NO_MAIL,, &g_lpMAPISession);&g_lpMAPISession);
MAPIINIT_0 MapiInitStruct = {0, MAPIINIT_0 MapiInitStruct = {0, MAPI_NT_SERVICEMAPI_NT_SERVICE};};hResult = MAPIInitialize(&MapiInitStruct);hResult = MAPIInitialize(&MapiInitStruct);
// ...// ...
hResult = MAPILogonEx(0,hResult = MAPILogonEx(0, GetMAPIProfileName(),GetMAPIProfileName(), GetMAPIProfilePassword(),GetMAPIProfilePassword(), MAPI_NEW_SESSION | MAPI_NEW_SESSION | MAPI_NO_MAILMAPI_NO_MAIL,, &g_lpMAPISession);&g_lpMAPISession);
Wichtig: MAPIInitialize ruft intern CoInitialize (COINIT_APARTMENT..), um COM zu initialisieren, funktioniert also nicht in free-threaded COM Servern.
Lsg: MAPI32.DLL von Exchange 5.5 SP1 unterstützt Flag MAPI_NO_COINIT ( = 8)
![Page 8: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/8.jpg)
DEMO: Extended MAPIDEMO: Extended MAPI
Erzeugen und Versenden einer NachrichtErzeugen und Versenden einer Nachricht
![Page 9: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/9.jpg)
Nice Feature:
• Mapi unterstützt Notifications zwischen MAPI Objekten (Store und Addressbook)
• Bietet Client oder Serveranwendung die Möglichkeit, auf Änderungen wie Message angekommen, verschoben, geändert, gelöscht, Addressbucheintrag erzeugt, verändert, gelöscht etc. zu reagieren
• Implementiert über AdviseSinks (IMAPIAdviseSink::OnNotify)
MAPI Event Notifications (1)MAPI Event Notifications (1)
![Page 10: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/10.jpg)
Event Typ Beschreibung Advise source Objekt
Neue Nachricht (fnevNewMail)
Eine Nachricht wurde zugestellt uund wartet auf Abarbeitung
Message Store, Ordner
Object kopiert (fnevObjectCopied)
Ein MAPI Objekt wurde kopiert Ordner, Nachrichten, alle Typen von Addrb. Objekten
Object modifiziert(fnevObjectModified)
Ein MAPI Objekt wurde verändert Ordner, Nachrichten, alle Typen von Addrb. Objekten
Object erzeugt (fnevObjectCreated
Ein MAPI Objekt wurde erzeugt Ordner, Nachrichten, alle Typen von Addrb. Objekten
Object verschoben (fnevObjectMoved)
Ein MAPI Objekt wurde verschoben Ordner, Nachrichten, alle Typen von Addrb. Objekten
Object gelöscht (fnevObjectDeleted)
Ein MAPI Objekt wurde gelöscht Ordner, Nachrichten, alle Typen von Addrb. Objekten
Critical error (fnevCriticalError)
Globaler Fehler oder Event wie Session Shutdown
Alle Store und Adressbuch Objekte, Tabellen, Status
Erweiterter event (fnevExtended)
Ein interner Event, von einem spezifischen Provider ausgelöst
Jedes Advise Source Objekt
Suche fertig(fnevSearchComplete)
Eine Suchoperation ist beendet und die Ergebnisse liegen bereit
Ordner
Tabelle modifiziert (fnevTableModified)
Information in einem MAPI Tabellen Objekt haben sich geändert
Tabellen
MAPI Event Notifications (2)MAPI Event Notifications (2)
![Page 11: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/11.jpg)
DEMO: MAPI Event NotificationDEMO: MAPI Event Notification
MDB Viewer (MDBVU32) DemoMDB Viewer (MDBVU32) Demo
![Page 12: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/12.jpg)
MAPI ResourcesMAPI Resources
MAPI Links:• http://msdn.microsoft.com/exchange • Exchange Server 2000 Documentation / Messaging API (MAPI)
• http://peach.ease.lsoft.com/archives/mapi-l.html
MAPI Bücher:• "Inside MAPI", Les Thaler (http://www.insidemapi.com)
• Ben Götter, "Developing Applications for Microsoft Exchange with C++"
• Nik Okuntsev, "Programming MS Exchange Server", http://www.wrconsulting.com/Software/Publications/Exchange/Contents.htm
![Page 13: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/13.jpg)
Microsoft Exchange Server hat eigene Interfaces (11 St.), zugehörige Methoden und Runtime Functions (317 St.)
Exchange Dienste benutzen sowohl MAPI als auch Exchange Server Interfaces, deren Methoden und Runtime functions
Exchange Server Interfaces sind hauptsächlich für das Managen des Stores gedacht. (Rules erzeugen, ACL’s auf Folder, Synchronisation, ..)
Eigene Anwendungen können diese Interfaces und Methoden ebenfalls nutzen
Exchange Server InterfacesExchange Server Interfaces
![Page 14: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/14.jpg)
Exchange Server InterfacesExchange Server Interfaces
IExchangeExportChanges (EDKMDB.H) IExchangeFavorites (EDKMDB.H) IExchangeFolderACLs (ACLCLS.H) IExchangeFolderRules (RULECLS.H) IExchangeImportContentsChanges (EDKMDB.H) IExchangeImportHierarchyChanges (EDKMDB.H) IExchangeManageStore (EDKMDB.H) IExchangeModifyTable (EDKMDB.H) IExchangeRuleAction (EDKMDB.H) IExchangeRuleExt (EXCHCLI.H) IExchangeRuleExtCallback (EXCHCLI.H)
![Page 15: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/15.jpg)
Exchange Server InterfacesExchange Server Interfaces
Die Exchange Server Runtime Functions (317 Stück) werden in zwei Gruppen unterteilt:
• Core functions
• Dazu gehören Functionen für Directory Zugriff (DAPI), Proxy Address Generation, Routing Table (SAD_xx), Admin Extension, Tracing, Installation, Rules, MAPI helper und Gateways
• Non Core functions
• Dazu gehören Funktionen für Gateways, Service, Event, Logging, Konfiguration und Konvertierung
![Page 16: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/16.jpg)
Exchange Server Interfaces (ICS)Exchange Server Interfaces (ICS)
Incremental Change Synchronization (ICS) ist Teil der Exchange Server Interfaces
Wird verwendet, um Änderungen in der Storestruktur und Storeinhalt mitzuprotokollieren, abzufragen und um Änderungen zu synchronisieren.
Der Exchange Server 5.5 Event Service benutzt dieses Interface.
Interfaces des ICS:• IExchangeExportChanges IExchangeExportChanges
IExchangeImportHierarchyChangesIExchangeImportHierarchyChangesIExchangeImportContentsChangesIExchangeImportContentsChanges
![Page 17: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/17.jpg)
Incremental Change SynchronisationIncremental Change Synchronisation
Interface, um Store Inhalte/Hierachie zu synchronisieren
Exchange Private Store (Mailboxen)Exchange Public Store (Öffentliche
Ordner)nicht verfügbar für PST oder OST
StoresZugriff via MAPI, sind aber spezifisch
für Microsoft ExchangeBeispiel: Platform SDK April99: ICSAGENTWIZARD
![Page 18: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/18.jpg)
Incremental Change SynchronisationIncremental Change Synchronisation
Schnittstellen• Synchronizer interface
• IExchangeExportChanges
• Collector interfaces• IExchangeImportHierarchyChanges• IExchangeImportContentsChanges
Zwei verschiedene Synchronizer für Hierarchietabelle und Inhalttabelle
• PR_HIERARCHY_SYNCHRONIZER• PR_CONTENTS_SYNCHRONIZER
Realisiert über ein IStream Objekt, welches den aktuellen Status der Synchronisation enthält
Das Format des Synchronisations Status Objekts wird vom Collector/Synchronizer definiert
Enthält Informationen über alle importierten und exportierten Daten
![Page 19: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/19.jpg)
Ab 5.5 SP3 (scannt nur Attachments) Anti-Viren Hersteller implementiert DLL
mit 3 exportierten Funktionen:
• VirusScanInit
• VirusScanTerm
• VirusScanAndClean
Infos für Admin's: Q263949 Ab Exchange 2000 SP1 AVAPI 2.0
• scannt alle Properties
Anti Virus APIAnti Virus API
![Page 20: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/20.jpg)
Definiert von der X-Open Application Program Interface Association (XAPIA). • 10 simple Funktionen um Email-Funktionalität in Anwendungen
zu integrieren Senden, Empfangen und Adressenauflösung
• Plattformunabhängig (Win Implementation verwendet MAPI)
Sample im Platform SDK: CMC.CLI
cmc_sendcmc_send_documentscmc_act_oncmc_listcmc_readcmc_lookupcmc_logoncmc_logoffcmc_freecmc_queryconfiguration
AnwendungAnwendung
CMCCMC
Ruft Cmc_logonRuft Cmc_logon
Extended MAPIExtended MAPI
Map
i32.dll
CM
C.D
LL
Common Messaging Calls (CMC)Common Messaging Calls (CMC)
![Page 21: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/21.jpg)
12 simple Funktionen um Email-Funktionalität in Client- Anwendungen zu integrieren
AnwendungAnwendung
Extended MAPIExtended MAPI
Ruft lpfnMapiSendMail(...)lpfnMapiSendMail(...)
MapiSendMail(...)MapiSendMail(...) Map
i32.dll
MAPIAddress MAPIDeleteMail MAPIDetails MAPIFindNext MAPIFreeBuffer MAPILogoff MAPILogon MAPIReadMail MAPIResolveName MAPISaveMail MAPISendDocuments MAPISendMail
MAPIAddress MAPIDeleteMail MAPIDetails MAPIFindNext MAPIFreeBuffer MAPILogoff MAPILogon MAPIReadMail MAPIResolveName MAPISaveMail MAPISendDocuments MAPISendMail
Simple MAPISimple MAPI
![Page 22: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/22.jpg)
Ab Exchange 4.0 mitgeliefert (MDISP32.DLL)
Nur für Client-side Messaging Apps
• Programmierbar mit Visual Basic, Visual Basic® for Applications, C, C++, etc
Bietet mehr Funktionalität als Simple MAPI oder CMC
• Folder Zugriff, mehr Adressbuch Properties, mehr Message Properties, Custom Properties, etc.
Wesentlich einfacher zu programmieren als Extended MAPI
OLE/Active Messaging (1)OLE/Active Messaging (1)
![Page 23: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/23.jpg)
'Create the Session ObjectSet objSession = CreateObject("mapi.session")
'Logon using the session objectobjSession.Logon profileName:=“Michael Klopstock"
'Add a new message object to the OutBoxSet objMessage = objSession.Outbox.Messages.AddobjMessage.subject = "This is a test.”objMessage.Text = "This is the message text.”
'Add a recipient object to the objMessage.Recipients collectionSet objRecipient = objMessage.Recipients.Add'Set the properties of the recipient objectobjRecipient.Name = ”Michael Klopstock”objRecipient.Type = mapiTo objRecipient.Resolve 'Send the messageobjMessage.Send showDialog:=False
'Logoff using the session object objSession.Logoff
OLE/Active Messaging (2)OLE/Active Messaging (2)
![Page 24: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/24.jpg)
COM Server basierend auf MAPI Nachfolger von Active Messaging Mitgeliefert mit Microsoft Exchange 5.x und
Outlook Support für Server-seitige und Client- seitige
Anwendungen Support für Web Anwendungen Kompatibel mit Active Messaging 1.0
CDO 1.xCDO 1.x
![Page 25: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/25.jpg)
CDO 1.21CDO 1.21
AnwendungAnwendung
CDO CDO (CDO.DLL)(CDO.DLL)
ExtendedMAPIExtendedMAPI(MAPI32.DLL)(MAPI32.DLL)
CDO::CDO() // KonstruktorCDO::CDO() // Konstruktor{{ MapiInitialize(...., ..., ....); }MapiInitialize(...., ..., ....); }
CDO::Logon(LPSTR lpstrProfile,....)CDO::Logon(LPSTR lpstrProfile,....){{
MAPILogonEx(lpstrProfile,....);MAPILogonEx(lpstrProfile,....);}}
Set objSession = CreateObject("MAPI.Session") Set objSession = CreateObject("MAPI.Session") objSession.Logon 'profileName:=”M. Klopstock”..objSession.Logon 'profileName:=”M. Klopstock”..Set objMessage = objSession.Outbox.Messages.Add Set objMessage = objSession.Outbox.Messages.Add objMessage.Subject = "Sample Message" objMessage.Subject = "Sample Message" objMessage.Text = ”Test." objMessage.Text = ”Test." Set objOneRecip = objMessage.Recipients.AddSet objOneRecip = objMessage.Recipients.AddobjOneRecip.Name = ”Sepp Meier" objOneRecip.Name = ”Sepp Meier" objOneRecip.Type = CdoTo objOneRecip.Type = CdoTo objOneRecip.Resolve objOneRecip.Resolve objMessage.Update objMessage.Update objMessage.Send showDialog:=False objMessage.Send showDialog:=False objSession.Logoff objSession.Logoff
![Page 26: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/26.jpg)
CDO Object Model 1.xCDO Object Model 1.xSessionSession
InfoStoresInfoStores
RootFolderRootFolder
FieldsFields
AttachmentsAttachments
RecipientsRecipients
Folders…Folders…
MessagesMessages
FieldsFields
Objekt und CollectionObjekt und Collection
Nur ObjektNur Objekt
FieldsFields
FieldsFields
MessageFilterMessageFilter
AddressListsAddressLists
AddressEntryFilterAddressEntryFilter
FieldsFields
AddressEntriesAddressEntries
FieldsFields
![Page 27: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/27.jpg)
SessionSession
InfoStoresInfoStores
RootFolderRootFolder
Objekt und CollectionObjekt und Collection
Nur ObjektNur Objekt
AppointmentItemAppointmentItem
MeetingItemMeetingItem
RecipientsRecipients
MessagesMessages
RecipientRecipient
MethodeMethode
GetFreeBusyGetFreeBusy
GetDefaultFolderGetDefaultFolder
GetAddressListGetAddressList
RecurrencePatternRecurrencePattern
MessageMessage
GroupHeaderGroupHeader
CDO 1.21 Object Modell (Neu)CDO 1.21 Object Modell (Neu)
![Page 28: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/28.jpg)
Anzeige von Kalendereinträgen eines Zeitraums
DEMO: CDO 1.21DEMO: CDO 1.21
![Page 29: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/29.jpg)
Exchange Event ServiceExchange Event Service
Ab Exchange Version 5.5 Der Exchange Server Event Service registriert
sich bei MAPI, um Folder Notifications vom Store zu bekommen
Nach Erhalt einer Notification stösst der Event Service den ICS an, um die Art der Veränderung festzustellen
Daraus konstruiert der Event Service einen Event, der an die installierten Agents (Default = Event Scripting Agent) weitergereicht wird.
![Page 30: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/30.jpg)
Event Handler Agent: Man kann beim Exchange Server Event Service
eigene Agents (siehe Event Scripting Agent) registrieren, um folgende Events abzufangen:
Erzeugen einer Nachricht in einem OrdnerÄnderung einer Nachricht in einem OrdnerLöschen einer Nachricht in einem Ordner
Ein Event Handler Agent ist ein Standard COM Object• IExchangeEventHandler Interface muss implementiert werden
• ExecuteEvent() Funktion muss implementiert werden:
Infos in MSDN unter:Platform SDK/Database und Messaging Service/Microsoft Exchange Server/ Exchange Server Programmer’s Reference/Guide/ Exchange Server Scripting Agent/Advance Topics:Custom Agents
Exchange Event ServiceExchange Event Service
![Page 31: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/31.jpg)
Mögliche Events:• OnMessageCreated
• OnMessageChanged
• OnMessageDeleted
• OnTimer (Min 15 min)
Vorsicht:• Asynchrones Processing
• wenn z.B.: auf Outbox angewandt, dann kann Message schon wieder gelöscht sein, bis der Agent darauf zugreift.
• Single Threaded => Skalierung ! Mögliche Anwendungsbereiche:
• Periodisches Archivieren von Nachrichten und/oder Attachments
• Workflow Anwendungen (Post in Public Folder, etc.)
Exchange Scripting AgentExchange Scripting Agent
![Page 32: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/32.jpg)
Einrichten eines Scripting agents
Demo: Exchange Scripting AgentDemo: Exchange Scripting Agent
![Page 33: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/33.jpg)
Basiert auf Exchange Event Service Erweitert Exchange 5.5 Server Scripting:
• Ziel: Vereinfachung der Erstellung von Routing und Tracking Anwendungen mit Scripting
• Nicht-Ziel: Volle Workflow Funktionalität bieten
Ab Exchange 5.5 Service Pack 1 Zielgruppe sind "Corporate Developers" und
"Solution Providers"
Exchange Routing ObjectsExchange Routing Objects
![Page 34: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/34.jpg)
"Hub and Spoke" Architektur• Hub = Nabe = Ordner, Spoke = Speiche = Stationen
"Hub" Ordner enthält:• Custom agent (event handler)
• Exchange routing engine (ExRtEng.dll)
• Eine Prozessdefinition• Routing map Objekt
• Maps sind eine sequentielle Liste von Aktionen
• Satz der zur Verfügung stehenden VB Script Funktionen
• Die gesamte Logik verbleibt auf dem Server
Exchange Routing ObjectsExchange Routing Objects
![Page 35: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/35.jpg)
Logische Routen AnsichtLogische Routen Ansicht
AA BB CCStart=>Start=>
BB CCHub sends item to B Hub sends item to B who advances route who advances route by replying to hubby replying to hub
Hub sends item to C Hub sends item to C completes process by completes process by C replying to hubC replying to hub
AAStart=>Start=>
User instantiates User instantiates process by process by submitting item to submitting item to hub folderhub folder
Hub sends item to A Hub sends item to A who advances route who advances route by replying to hubby replying to hub
Technische Routen AnsichtTechnische Routen Ansicht
Hub containing Hub containing Process DefinitionProcess Definition
Exchange Routing ObjectsExchange Routing Objects
![Page 36: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/36.jpg)
Exchange Routing ObjectsExchange Routing Objects
ActivityID Activity FlagsParameter 1 Parameter 21000 Send 2 Bob Smith IPM.Note1010 Wait 0 100801020 ORSplit 0 IsTimeout1030 Goto 0 50001040 Receive 2 FALSE1050 Consolidate 2 FALSE1060 goto 0 100005000 CustomExpiry 2 Manager IPM.Alert
10000 Terminate 0
Routing MAP• Sequentielle Liste von Aktionen
• Aktionen können interne sein (Flags=0), oder externe im Skript (Flags=2)
• Aktionen haben 0 oder mehr Parameter
• Jeder Parameter entspricht 1 Spalte
![Page 37: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/37.jpg)
VoteTableVoteTable
MapMap
LogLog
ProcInstanceProcInstance
ParticipantParticipant
VoteTableVoteTable
RowRow
RouteDetailsRouteDetails
WorkItemWorkItem
MapMap RowRow
= given to script at runtime= given to script at runtime
= objects you (typically) create= objects you (typically) create
Exchange Routing ObjectsExchange Routing Objects
Routing objects (ExRtObj.dll)Routing objects (ExRtObj.dll)
![Page 38: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/38.jpg)
Exchange Client ExtensionsExchange Client Extensions
DLLs um die Funktionalität von Exchange oder Outlook zu erweitern
COM-basiert Installation
• Registry unter HKLM\Software\Microsoft\Exchange\Client\Extension
• Outlook benutzt ECF Files oder Registry
Infos auf MSDN unter: Platform SDK/Database and messaging services/Extending the Microsoft Exchange ClientSamples im Platform SDK: Event Extension: EVENTS.EXT Command extension: COMMAND.EXTProperty Sheet Extension: PROPSH.EXT
![Page 39: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/39.jpg)
Exchange Client ExtensionsExchange Client Extensions
Event Extension
• IExchExtSessionEvents (Neue Message eingetroffen,etc.)IExchExtUserEvents (Selektiertes Item (Listbox, Text, ...))IExchExtMessageEvents (Message Read, Write, Submit, ...)IExchExtAttachedFileEvents (Attachment open, - Verhalten,.)
Command Extensions
• IExchExtCommands (Menu, Toolbar, Delete Command, ...)IExchExtUserEvents (Selektiertes Item (Listbox, Text, ...))
Propertysheet Extension
• IExchExtPropertySheets (Eigene Prop-sheets für Msg, Props) Adanced Criteria Extension
• IExchExtAdvancedCriteria (Advanced Search Dlg modifizieren) Task and Session Extensions
• IExchExt (Client Start/Shutdown/Logon/Logoff) Modal and modeless Extension Windows
• IExchExtModeless ( Eigene Fenster, mit Callback Routine)
![Page 40: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/40.jpg)
CDONTSCDONTS
Standard SMTP Mailer für Server Anwendungen
SMTP send & receive message handling Wird mit IIS 4.0 and Exchange 5.5
installiert Nicht authentiziertes “anonymous”
Versenden von Nachrichten Plain text, HTML, und MHTML Message UUEncoded or Base64 content
encoding
![Page 41: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/41.jpg)
DEMO: CDONTSDEMO: CDONTS
Versenden von Email mit 4 Zeilen CodeVersenden von Email mit 4 Zeilen Code
![Page 42: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/42.jpg)
ADOADO
OLEDBOLEDB
EFDEFD
CMCCMCDAPIDAPI
ActiveActive MessagingMessagingActiveActive MessagingMessaging
Exchange Server InterfacesExchange Server Interfaces
SimpleSimple MAPIMAPISimpleSimple MAPIMAPI
Event ScriptingScriptingEvent ScriptingScripting
OLEOLE MessagingMessagingOLEOLE MessagingMessagingADSIADSI
Outlook Object ModelOutlook Object Model
Routing ObjectsRouting Objects
CDOEXMCDOEXM
Workflow EngineWorkflow Engine
ExtendedExtended MAPIMAPIExtendedExtended MAPIMAPI
CDO 1.21CDO 1.21CDO 1.21CDO 1.21 WEBDAVWEBDAV
XMLXML
CDOSYSCDOSYS
AVAPIAVAPI
Outlook FormsOutlook Forms
WEBFORMSWEBFORMS
LDAPLDAP
Client ExtensionsClient Extensions
COM-AddinsCOM-Addins
CDONTS CDONTS CDO 3.0CDO 3.0
Exchange 2000 SchnittstellenExchange 2000 Schnittstellen
![Page 43: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/43.jpg)
DirectoryDirectory
EMSABP.DLLEMSABP.DLL MAPIMAPI
LDAPLDAP ADSIADSI
Directory API (DAPI)Directory API (DAPI)
Exchange Directory verwaltet Informationen über Exchange Directory verwaltet Informationen über sämtliche installierten Objekte ( Mailboxen, Ordner, sämtliche installierten Objekte ( Mailboxen, Ordner, etc..) deren Struktur und Attribute (=Schema)etc..) deren Struktur und Attribute (=Schema)
Exchange 5.x Directory SchnittstellenExchange 5.x Directory Schnittstellen
![Page 44: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/44.jpg)
Directory ZugriffDirectory Zugriff
Via MAPI address book provider
• OK für read-only, Schreibzugriff eingeschränkt
Via LDAP/ADSI
• Microsoft Exchange 5.0 unterstützt LDAP v2 read
• Microsoft Exchange 5.5 unterstützt voll read/write LDAP v3
• ADSI benutzt den LDAP provider
Via Directory access functions (DAPI)
• Nicht vorhanden in Exchange 2000 !
![Page 45: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/45.jpg)
Directory Zugriff LDAP/ADSIDirectory Zugriff LDAP/ADSI
LDAP/ADSI LDAP (Lightweight Directory Access Protocol) bildet
das Zugriffsprotokoll auf Objekte im AD Jedes Objekt ist über einen eindeutigen LDAP-Pfad
adressierbar ADSI (Active Directory Service Interface) ist die
Abstraktionsschicht für Zugriffe auf das AD (via LDAP)• Anwendungen können entweder die LDAP API benutzen oder
das Active Directory Service Interface (ADSI) benutzen
Vorteil von LDAP: • IETF Standard
Vorteil von ADSI: • Einfacher zu programmieren,
• Unabhängig vom darunterliegenden Directory Service
![Page 46: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/46.jpg)
LDAP KonventionenLDAP Konventionen
Ein LDAP Pfad (URL) besteht aus
• DC = Domain Context
• CN = Common Name LDAP://CN=Michael
Klopstock,CN=Users,DC=seldom,DC=de
Wird von hinten nach vorne gelesen:
In der Domäne seldom.de im Container Users der Benutzer Michael Klopstock
![Page 47: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/47.jpg)
ADSI Object ModellADSI Object Modell
IADs IADsUser IDispatch IADsContainer IADsPropertyList, IADsPropertyEntry,
IADsPropertyValue IADsSecurityDescriptor,
IADsAccessControlList, IADsAccessControlEntry
![Page 48: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/48.jpg)
ADSI Bind and EnumerateADSI Bind and Enumerate
Dim MyContainer As IADsContainer‘‘Bind to container objectBind to container object
Set MyContainer = GetObject("LDAP://MyLdapSvr/O=Internet/DC=Redmond")
‘‘Enumerate child objectsEnumerate child objects
for each Object in MyContainer
Debug.Print Object.ADsPath
Next
![Page 49: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/49.jpg)
DEMO: Directory Zugriff ADSIDEMO: Directory Zugriff ADSI
Setzen des Extension-Data-Attributes1 eines Exchange Users via ADSI
Setzen des Extension-Data-Attributes1 eines Exchange Users via ADSI
![Page 50: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/50.jpg)
Directory ZugriffDirectory Zugriff
Via DAPI (Directory API) Proprietäre API für den Zugriff auf das
Exchange Directory (10 Funktionen, 6 Callback Funktionen)
Wird vorrangig benutzt um Attribute eines “Containers” (Mailbox, Gateways, etc. ) aus dem Directory zu lesen/schreiben sowie für Installation und Konfiguration von Gateways
Samples im Platform SDK• DIRSYNC: Importing and Exporting Mailboxes
• DSEXPORT: Exporting Directory Objects
• DSIMPORT: Importing Directory Objects
![Page 51: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/51.jpg)
Directory Zugriff via DAPI (1)Directory Zugriff via DAPI (1)
#include <dapi.h> int main( void ) { DAPI_PARMS prms = {0}; prms.dwDAPISignature = DAPI_SIGNATURE; prms.dwFlags = DAPI_CREATE_NT_ACCOUNT;
// Initialize base point and container prms.pszBasePoint = "/o=REORG/ou=THEFARSITE "; prms.pszContainer = "/cn=Recipients"; PDAPI_EVENT pDAPIEvent = NULL; DAPI_HANDLE hDAPISession = NULL; pDAPIEvent = DAPIStart(&hDAPISession, &prms);
ATT_NAME avAttrName [4]; // Initialize avAttrName[0].DapiType = DAPI_STRING8; avAttrName[0].Value.pszA = "Obj-Class"; avAttrName[0].size = 9; avAttrName[0].pNextValue = NULL; avAttrName[1].DapiType = DAPI_STRING8; avAttrName[1].Value.pszA = "Directory Name"; avAttrName[1].size = 14; avAttrName[1].pNextValue = NULL;
![Page 52: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/52.jpg)
Directory Zugriff via DAPI (2)Directory Zugriff via DAPI (2)
avAttrName[2].DapiType = DAPI_STRING8; avAttrName[2].Value.pszA = "Home-Server"; avAttrName[2].size = 11; avAttrName[2].pNextValue = NULL; ZeroMemory( &avAttrName[3], sizeof(ATT_VALUE) );
ATT_VALUE avAttrValue[4]; avAttrValue[0].DapiType = DAPI_STRING8; avAttrValue[0].Value.pszA = "Mailbox"; avAttrValue[0].size = 8; avAttrValue[0].pNextValue = NULL; avAttrValue[1].DapiType = DAPI_STRING8; avAttrValue[1].Value.pszA = "NewAccount"; avAttrValue[1].size = 10; avAttrValue[1].pNextValue = NULL; avAttrValue[2].DapiType = DAPI_STRING8; avAttrValue[2].Value.pszA = ”NTMIKEKLOP"; avAttrValue[2].size = 7; avAttrValue[2].pNextValue = NULL; ZeroMemory( &avAttrValue[3], sizeof(ATT_VALUE) );
![Page 53: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/53.jpg)
Directory Zugriff via DAPI (3)Directory Zugriff via DAPI (3)
DAPI_ENTRY deAttr; DAPI_ENTRY deValues; deAttr.unAttributes = 3; deAttr.ulEvalTag = TEXT_VALUE_ARRAY; deAttr.rgEntryValues = &avAttrName[0]; deValues.unAttributes = 3; deValues.ulEvalTag = VALUE_ARRAY; deValues.rgEntryValues = &avAttrValue[0]; char * pAccount = NULL; char * pPassword = NULL; ULONG ulUSN = 0; pDAPIEvent = DAPIWrite( hDAPISession, DAPI_WRITE_CREATE, &deAttr, &deValues, &ulUSN, &pAccount, &pPassword );
![Page 54: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/54.jpg)
Directory Zugriff via DAPI (4)Directory Zugriff via DAPI (4)
if ( pDAPIEvent ) { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_IGNORE_INSERTS, pDAPIEvent->hinstDAPI, pDAPIEvent->dwDAPIError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox( NULL, (char *) lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); // Free the buffer. LocalFree( lpMsgBuf ); } // Terminate DAPI session DAPIEnd( &hDAPISession ); return ( 0 );}
![Page 55: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/55.jpg)
DAPIDAPI
DAPIDAPI
Client(s) wie z.B. Outlook, eigene Anwendungen, etc.Client(s) wie z.B. Outlook, eigene Anwendungen, etc.
MAPIMAPI
CDO 1.21CDO 1.21 CMCCMCS. MAPIS. MAPI
Addrb. P.Addrb. P.Store P.Store P. Trans. P.Trans. P. MAPIMAPISpoolerSpooler
MAPI/RPCMAPI/RPC
Client Client Extension/Extension/COM-AddinCOM-Addin
DLLDLL
Exchange StoreExchange Store
MAPIMAPI SystemSystem AttAtt..
MTAMTA
Event SvcEvent Svc
ScriptScript
ICSICS
CDO 1.21CDO 1.21
Event ScriptEvent Script AgentAgent
Eigene Apps,Services, GatewaysEigene Apps,Services, GatewaysE
xch
an
ge
Ex
cha
ng
eD
irec
tory
Dire
cto
ry
ADSIADSI
LD
AP
LD
AP
ADSIADSI
LDAP ProviderLDAP Provider
LDAP ProviderLDAP Provider
DAPIDAPI
GatewaysGateways
ClientClient
ServerServer
Internet SMTP,
Pop3, etc.
Internet SMTP,
Pop3, etc.
Überblick Exchange 5.x SchnittstellenÜberblick Exchange 5.x Schnittstellen
CDONTSCDONTS
Routing Routing EngineEngine
![Page 56: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/56.jpg)
ADOADO
OLEDBOLEDB
EFDEFD
CMCCMCDAPIDAPI
ActiveActive MessagingMessagingActiveActive MessagingMessaging
Exchange Server InterfacesExchange Server Interfaces
SimpleSimple MAPIMAPISimpleSimple MAPIMAPI
Event ScriptingScriptingEvent ScriptingScripting
OLEOLE MessagingMessagingOLEOLE MessagingMessagingADSIADSI
Outlook Object ModelOutlook Object Model
Routing ObjectsRouting Objects
CDOEXMCDOEXM
Workflow EngineWorkflow Engine
ExtendedExtended MAPIMAPIExtendedExtended MAPIMAPI
CDO 1.21CDO 1.21CDO 1.21CDO 1.21 WEBDAVWEBDAV
XMLXML
CDOSYSCDOSYS
AVAPIAVAPI
Outlook FormsOutlook Forms
WEBFORMSWEBFORMS
LDAPLDAP
Client ExtensionsClient Extensions
COM-AddinsCOM-Addins
Exchange 2000 SchnittstellenExchange 2000 Schnittstellen
CDONTS CDONTS CDO 3.0CDO 3.0
![Page 57: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/57.jpg)
Neue Exch. 2000 SchnittstellenNeue Exch. 2000 Schnittstellen
ADO/OLEDB CDO 3.0 Workflow Engine CDOSYS XML WEBDAV WEBFORMS
WARUM ?????WARUM ?????
![Page 58: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/58.jpg)
Universeller Datenzugriff auf alle Datenbanken via ADO/OLEDB
CDO 3.0 zum Erzeugen von ADO Records
Neue synchrone Events = neue Workflow Engine
CDONTS nur auf Server, CDOSYS Server und Client
WEB, WEB, WEB • => Einheitliches Transportprotokoll
• = HTTP (WEBDAV) und XML
Neue Exch. 2000 SchnittstellenNeue Exch. 2000 Schnittstellen
![Page 59: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/59.jpg)
Exchange 2000 ArchitekturExchange 2000 Architektur
![Page 60: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/60.jpg)
OLEDBOLEDB
Zwei verschiedene Provider:
• Remote: Client OLE/DB provider über DAV• Outlook
• CDO
• Office
• Lokal: Client OLE/DB provider über COM• Virenscanner
• Dokumentenmanagement
• Workflow
![Page 61: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/61.jpg)
ADO 2.5 – Object ModelADO 2.5 – Object Model
ConnectionConnection
CommandCommand
RecordsetRecordset
ErrorsErrors
FieldsFields
ParametersParameters
RecordRecord StreamStream
![Page 62: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/62.jpg)
ADO 2.5ADO 2.5
Connection
• Implizit• URL an die Open Methode des Record Objekts
übergeben
• Explizit• Connection Objekt öffnen
• Transaktionen
• Errors collection
• SQL Select queries
![Page 63: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/63.jpg)
Connection via ADOConnection via ADO
Implizit: dim Rec as New ADODB.Record
strURL = "file://./backofficestorage/" & DomainName &
"/" & strLocalPath
Rec.Open strURL
Explizit: Dim Rec As New ADODB.Record
Dim Conn as New ADODB.Connection
Dim Stm as ADODB.Stream
Conn.Provider = "ExOLEDB.DataSource"
Conn.Open "http://server/folder"
Rec.Open "http://server/folder/item.txt", Conn
Set Stm = Rec.Fields(adDefaultStream).Value
![Page 64: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/64.jpg)
CDO 3.0CDO 3.0
Ersetzt und erweitert CDO for Windows 2000 (CDOSYS)
• Abwärtkompatibel
Zugriff auf public und private Stores Erweiterbar mit eigenen Komponenten Aggregation mit ADO
![Page 65: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/65.jpg)
CDO 3.0CDO 3.0
Dim conn as New ConnectionDim conn as New Connection
Dim rs as New RecordsetDim rs as New Recordset
Dim msg as New MessageDim msg as New Message
fldr = “file://./backofficestorage/domainfldr = “file://./backofficestorage/domain/MBX/user/inbox”/MBX/user/inbox”
conn.open fldr,”fred”,”whatever”,adRunAsyncconn.open fldr,”fred”,”whatever”,adRunAsync
Set rs = conn.execute “Set rs = conn.execute “Select * from scope(‘shallow traversal of Select * from scope(‘shallow traversal of
“ “ & fldr & ”’) where urn:schemas:mailheader:subject = ‘hello’& fldr & ”’) where urn:schemas:mailheader:subject = ‘hello’””
msg.DataSource.Open rs(“DAV:href”),connmsg.DataSource.Open rs(“DAV:href”),conn
msg.Attachments(1).SaveToFile “C:\temp\file.doc”msg.Attachments(1).SaveToFile “C:\temp\file.doc”
msg.DataSource.Savemsg.DataSource.Save
![Page 66: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/66.jpg)
CDO 3.0CDO 3.0
Public Sub SimpleMeetingRequest()Public Sub SimpleMeetingRequest()
Dim objAppt As New AppointmentDim objAppt As New Appointment
Dim objReq As New CalendarMessageDim objReq As New CalendarMessage
objAppt.Subject = "Termin"objAppt.Subject = "Termin"
objAppt.StartTime = "10/4/99 1:00PM"objAppt.StartTime = "10/4/99 1:00PM"
objAppt.EndTime = "10/4/99 2:00PM"objAppt.EndTime = "10/4/99 2:00PM"
objAppt.Attendees.Add ("user2@domain")objAppt.Attendees.Add ("user2@domain")
Set objReq = objAppt.CreateRequestSet objReq = objAppt.CreateRequest
objReq.Message.SendobjReq.Message.Send
End SubEnd Sub
![Page 67: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/67.jpg)
CDO 3.0CDO 3.0
Dim aPerson as new PersonDim aPerson as new Person
Dim rs as RecordSetDim rs as RecordSet
Rs.open “Rs.open “file://./backofficestorage/dom/MBX/user/contacts””
rs.MoveFirstrs.MoveFirst
While NOT rs.EOFWhile NOT rs.EOF
aPerson.DataSource.Open rs.Fields(aPerson.DataSource.Open rs.Fields( “DAV:HREF”) “DAV:HREF”)
Debug.Print aPerson.FirstNameDebug.Print aPerson.FirstName
Debug.Print aPerson.LastNameDebug.Print aPerson.LastName
Debug.Print aPerson.MailingAddressDebug.Print aPerson.MailingAddress
rs.MoveNextrs.MoveNext
WendWend
![Page 68: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/68.jpg)
CDOSYSCDOSYS
Objektbibliothek basierend auf SMTP und NNTP Protokoll Standard• Wird mit Windows 2000 mitgeliefert
• CDOSYS = CDO 2.0
Features:• Programmatische Auswahl des SMTP Hosts
• Unterstützt Transport und Protokoll Events
• Erzeugen von MIME/MHTML Nachrichten
• ADO/OLEDB Unterstützung (Streams)
• Dual Interface
Mögliche Anwendungen:• Bulk Mail
• Mail basierte Replikation (z.b: Win2000 AD replication)
• Viren Checker (Mail und News), Auto forward, Admin Alert
• Spam Mail Erkennung (Sender, Scannen)
• Senden von Webseiten (Graphic, Links)
• Anhängen von Text an ausgehende Nachrichten (Transport)
![Page 69: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/69.jpg)
CDOSYSCDOSYS
Private Sub SimpleSend_Click()Dim myMailItem As New Message
With myMailItem .From = “[email protected]” .To = "[email protected]” .Subject = ”Here is the MS home page." . CreateMHTMLBody(“http://www.microsoft.com”,1) .SendEnd With
End Sub
Erzeugen und Versenden einer Nachricht mit einer Webseite als Body:
![Page 70: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/70.jpg)
DEMO: CDOSYSDEMO: CDOSYS
„I Love you“ Email Scanner „I Love you“ Email Scanner
![Page 71: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/71.jpg)
Exchange 2000 EventsExchange 2000 Events
Store Events
• Innerhalb einer Operation (Syncron):• open, save, create, delete, move
• Benachrichtigung einer Operation (Asynchron):• save, create, delete, move, timer
• Systemzustände • Startup/Shutdow
• Workflow basieren auf Events
![Page 72: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/72.jpg)
DEMO: Exchange 2000 Store EventsDEMO: Exchange 2000 Store Events
Abfangen eines Speichervorgangs in einem öffentlichen Ordner und Setzen von Rechten
Abfangen eines Speichervorgangs in einem öffentlichen Ordner und Setzen von Rechten
![Page 73: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/73.jpg)
Workflow EngineWorkflow Engine
Besteht aus 2 Komponenten
• Workflow Engine • Evaluiert Bedingungen
• Führt Aktionen bei Statusübergangen aus
• Workflow Event Sink• Wird angesprungen, wenn Änderungen an
einem Item in einem Ordner auftreten
• Benutzt OnSyncSave, OnSyncDelete, OnTimer Store Events
• Validatiert Benutzer/Author Security
• Ruft die Workflow Engine
![Page 74: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/74.jpg)
Workflow EngineWorkflow Engine
Workflow Process Definition
• Process Definition Elemente:• AuditTrailProvider
• CommonScriptURL
• Action Table
• Mode (security)
![Page 75: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/75.jpg)
Workflow EngineWorkflow Engine
Workflow Action Table• Tabelle von Status-Übergängen
• Bedingungen und Aktionen sind VB Scripts
• Workflow Engine evaluiert die Bedingungen
• Workflow Engine führt Aktionen aus
AbsendenAbsenden GenehmigenGenehmigen
In BearbeitungIn Bearbeitung GenehmigtGenehmigt
AblehnenAblehnen
![Page 76: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/76.jpg)
Workflow EngineWorkflow Engine
Workflow Engine Security
• Restricted Mode• Aktionen nur mit VB Script, “sandboxed”, kein
CreateObject(), Nur WorkflowSession Objekt kann benutzt werden
• Was kann im Restricted Mode gemacht werden ?• Properties des auslösenden Items modifizieren
• Mails versenden (WorkflowMessage)
• ACL auf das auslösende Item schreiben
• In AuditTrail (Logging) schreiben
![Page 77: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/77.jpg)
Workflow EngineWorkflow Engine
Workflow Engine Security
• Privileged Mode• Aktionen können Script oder eigene COM
Objekte sein,
• Script Engine erlaubt CreateObject()
• Aktionen werden unter einem privilegierten NT account ausgeführt (in der Exchange Servers Gruppe)
• Was kann im Privileged Mode gemacht werden ? • Alles
![Page 78: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/78.jpg)
DEMO: Workflow DesignerDEMO: Workflow Designer
![Page 79: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/79.jpg)
XML in Exchange 2000XML in Exchange 2000
Alles wird über XML definiert
• Schema
• Security
• Registrations
• Formular und Ansichten Rendering
• Datentypen
![Page 80: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/80.jpg)
WEBDAV / HTTPDAV ProtokollWEBDAV / HTTPDAV Protokoll
• HTTP 1.0 "read-only" Zugriff auf Dateien (GET Methode)
• HTTP 1.1 Einfaches Schreiben (PUT und DELETE Methode)
• HTTP-DAV ist eine Erweiterung des HTTP/1.1 Protokolls (RFC2518) • Dateisystem Operationen: MKCOL, COPY, MOVE,
LOCK, UNLOCK
• Manipulation von Properties: PROPFIND, PROPPATCH
• Suchen auf Resourcen: SEARCH
• (Die Exchange DAV-Engine implementiert ausserdem Replikation, Notifications, und Versioning)
![Page 81: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/81.jpg)
WEBDAV / HTTPDAV ProtokollWEBDAV / HTTPDAV Protokoll
Generelle Struktur von WEBDAV Anfragen
• Methode• Beschreibt Methode, die ausgeführt werden
soll
• Header• Beschreibt, wie die Aufgabe zu erledigen ist
• Body (optional)• Definiert die Daten, die in der Methode benutzt
werden, oder zusätzliche Anweisungen, wie die Methode ausgeführt werden soll
• Im Body wird XML verwendet.
![Page 82: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/82.jpg)
WEBDAV / HTTPDAV ProtokollWEBDAV / HTTPDAV Protokoll
Auslesen der Security eines DokumentsClient sendet:
PROPFIND http://myserver/mymessage.doc HTTP/1.1Host: myserverContent-type: text/xml; charset="utf-8“Content-Length: xxxx<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:"> <D:prop xmlns:E=”http:/schemas.microsoft.com/exchange/”/> <E:ntsecuritydescriptor/> </D:prop></D:propfind>
![Page 83: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/83.jpg)
DEMO: WEBDAVDEMO: WEBDAV
Setzen von Security auf Nachrichten via WEBDAV und XML verpackt in XMLHTTP Object
Setzen von Security auf Nachrichten via WEBDAV und XML verpackt in XMLHTTP Object
![Page 84: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/84.jpg)
CDOEXMCDOEXM
CDO für Exchange Management CDOEXM erweitert CDO und ADSI mit
Management Interfaces
• IMailRecipient• Properties: Proxy addresses, Send/Deliver
Limits, Forwarding properties
• Methoden: Mail enable, mail disable
• IMailBoxStore• Properties: Store Quotas, Mailbox location,
Delegates
• Methoden: Create, delete and move mailbox
![Page 85: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/85.jpg)
DEMO:DEMO: CDOEXMCDOEXM
Setzen der Mailbox Quotas einer Exchange Mailbox
Setzen der Mailbox Quotas einer Exchange Mailbox
![Page 86: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/86.jpg)
Exchange SchemaExchange Schema
APP SCHEMASCR = “”BaseSchema = /APP TEMPLATE/APP TEMPLATE SCHEMA
APP SCHEMASCR = “”BaseSchema = /APP TEMPLATE/APP TEMPLATE SCHEMA
APP FOLDER (from template)SCR = “/APP SCHEMA”BaseSchema = “”
APP FOLDER (from template)SCR = “/APP SCHEMA”BaseSchema = “”
Workspace TemplateWorkspace Template
APP TEMPLATE SCHEMASCR = “”BaseSchema = “-EXSCHEMA V1-”
APP TEMPLATE SCHEMASCR = “”BaseSchema = “-EXSCHEMA V1-”
APP TEMPLATESCR = “/APP TEMPLATE SCHEMA”BaseSchema = “”
APP TEMPLATESCR = “/APP TEMPLATE SCHEMA”BaseSchema = “”
Application TLHApplication TLH
APP RESOURCESSCR = “”BaseSchema = “-EXSCHEMA V1-”
APP RESOURCESSCR = “”BaseSchema = “-EXSCHEMA V1-”
GLOBAL SCHEMA“-EXSCHEMA V1-”GLOBAL SCHEMA“-EXSCHEMA V1-”
PUBLIC FOLDER APPSCR = “/APP RESOURCES”BaseSchema = “”
PUBLIC FOLDER APPSCR = “/APP RESOURCES”BaseSchema = “”
NON_IPM_SUBTREE NON_IPM_SUBTREE
![Page 87: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/87.jpg)
Intern
et In
ternet
Info
rmatio
n
Info
rmatio
n
Server
Server Store(s)Store(s)
Eigene Apps,Services, GatewaysEigene Apps,Services, Gateways
Client(s) wie z.B. Outlook, eigene Anwendungen, etc.Client(s) wie z.B. Outlook, eigene Anwendungen, etc.
Client Client Extension/Extension/COM-AddinCOM-Addin
DLLDLL
MAPIMAPI
CDO 3.0CDO 3.0
SystemSystem AttAtt..
Ac
tive
Ac
tive
Dire
cto
ryD
irec
toryMTAMTA
ADSIADSI
LD
AP
LD
AP
Event SvcEvent Svc
ScriptScript
MAPIMAPI
ServerServer
ClientClient
CDO 1.21CDO 1.21 CMCCMCS. MAPIS. MAPI
Addrb. P.Addrb. P.Store P.Store P. Trans. P.Trans. P. MAPIMAPISpoolerSpooler
MAPI/RPCMAPI/RPC
ICSICS
CDO 1.21CDO 1.21
ADSIADSIADOADO
OL
ED
BO
LE
DB
DA
V E
ng
ine
DA
V E
ng
ine
CDOEXMCDOEXMCDO 3.0CDO 3.0
CDOEXMCDOEXMInternet
SMTP, Pop3, etc.
Internet SMTP,
Pop3, etc. ADOADO
MSDAIPPMSDAIPP LDAP ProviderLDAP Provider
LDAP ProviderLDAP ProviderEvent ScriptEvent Script
AgentAgent
OW
A
X400 GWX400 GW
CDOSYSCDOSYS
CDOSYSCDOSYS
Überblick Exchange 2000 ArchitekturÜberblick Exchange 2000 Architektur
![Page 88: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/88.jpg)
Exchange FuturesExchange Futures
Exchange 2000 SP1
• Visual Studio Server Explorer für Web Storage System• Navigation
• Schema Editor
• Formular Registrierungen
• Event Registrierungen
• “Drag and drop” von Exchange Ordnern in den Designer
• Managed OLEDB Provider• Remotable
• Läuft im DTC Umfeld (Distributed Transaction)
![Page 89: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/89.jpg)
Demo Visual StudioDemo Visual Studio
Visual Studio Webstorage System Visual Studio Webstorage System Server Explorer ExtensionServer Explorer Extension
Visual Studio Webstorage System Visual Studio Webstorage System Server Explorer ExtensionServer Explorer Extension
![Page 90: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/90.jpg)
Exchange FuturesExchange Futures
Exchange 2000 und .NETExchange 2000 und .NET
• CDO.NET Klassen
• Managed Provider• Remotable
• Transaktionsfähig
• In DTC integriert
• ADO DataSet
• XmlDataDocumentXmlDataDocument
![Page 91: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/91.jpg)
ZusammenfassungZusammenfassung
Server• Strategie geht Richtung einheitlichen
Datenzugriff auf alle Datenbanken via ADO/OLEDB
• Server Management = Directory Zugriff via ADSI/LDAP
Client• Strategie geht Richtung XML/HTTP-DAV
• WebForms rendern HMTL, je nach Fähigkeit des Clients
• Ziel ist es alle Arten von Devices zu unterstützen
![Page 92: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/92.jpg)
WeitereWeitere Info’s?Info’s?
Exchange 2000 Resources:• msdn.microsoft.com/exchange
• www.microsoft.com/exchange/trainevents/MEC00.htm
• msdn.microsoft.com/library/techart/buildingsolutions.htm
• msdn.microsoft.com/training/seminars/WebDev.asp#exchange
Externe Exchange Infos, Tools, etc.:• www.exchangestuff.com/
• www.slipstick.com/index.htm
RFC’s: • www.gt.ed.net/mailmen/technical/
![Page 93: Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer Microsoft GmbH.](https://reader030.fdocuments.net/reader030/viewer/2022012922/55204d6249795902118b7296/html5/thumbnails/93.jpg)
WeitereWeitere Info’s?Info’s?
Bücher• Programming Microsoft® Outlook® and Microsoft
Exchange, Thomas Rizzo, MSPress
• Programming WebStore Applications with Microsoft Exchange 2000 Server, Mindy Martin, MSPress
msdn quickie• www.microsoft.com/germany/msdn/quickie
msdn TechTalk-Newsgroup• news://msnews.microsoft.com/microsoft.public.de.german.techtalk