Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer...
-
Upload
leudbold-wunder -
Category
Documents
-
view
116 -
download
5
Transcript of Exchange2000 Exchange 2000Programmierschnittstellen Michael Klopstock Exchange System Engineer...
ExchangeExchange 20002000 ProgrammierschnittstellenProgrammierschnittstellen
Michael KlopstockExchange System Engineer
Microsoft GmbH
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
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
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
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++
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)
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)
DEMO: Extended MAPIDEMO: Extended MAPI
Erzeugen und Versenden einer NachrichtErzeugen und Versenden einer Nachricht
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)
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)
DEMO: MAPI Event NotificationDEMO: MAPI Event Notification
MDB Viewer (MDBVU32) DemoMDB Viewer (MDBVU32) Demo
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
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
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)
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
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
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
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
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
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)
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
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)
'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)
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
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
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
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)
Anzeige von Kalendereinträgen eines Zeitraums
DEMO: CDO 1.21DEMO: CDO 1.21
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.
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
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
Einrichten eines Scripting agents
Demo: Exchange Scripting AgentDemo: Exchange Scripting Agent
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
"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
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
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
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)
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
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)
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
DEMO: CDONTSDEMO: CDONTS
Versenden von Email mit 4 Zeilen CodeVersenden von Email mit 4 Zeilen Code
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
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
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 !
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
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
ADSI Object ModellADSI Object Modell
IADs IADsUser IDispatch IADsContainer IADsPropertyList, IADsPropertyEntry,
IADsPropertyValue IADsSecurityDescriptor,
IADsAccessControlList, IADsAccessControlEntry
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
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
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
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;
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) );
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 );
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 );}
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
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
Neue Exch. 2000 SchnittstellenNeue Exch. 2000 Schnittstellen
ADO/OLEDB CDO 3.0 Workflow Engine CDOSYS XML WEBDAV WEBFORMS
WARUM ?????WARUM ?????
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
Exchange 2000 ArchitekturExchange 2000 Architektur
OLEDBOLEDB
Zwei verschiedene Provider:
• Remote: Client OLE/DB provider über DAV• Outlook
• CDO
• Office
• Lokal: Client OLE/DB provider über COM• Virenscanner
• Dokumentenmanagement
• Workflow
ADO 2.5 – Object ModelADO 2.5 – Object Model
ConnectionConnection
CommandCommand
RecordsetRecordset
ErrorsErrors
FieldsFields
ParametersParameters
RecordRecord StreamStream
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
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
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
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
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
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
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)
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:
DEMO: CDOSYSDEMO: CDOSYS
„I Love you“ Email Scanner „I Love you“ Email Scanner
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
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
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
Workflow EngineWorkflow Engine
Workflow Process Definition
• Process Definition Elemente:• AuditTrailProvider
• CommonScriptURL
• Action Table
• Mode (security)
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
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
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
DEMO: Workflow DesignerDEMO: Workflow Designer
XML in Exchange 2000XML in Exchange 2000
Alles wird über XML definiert
• Schema
• Security
• Registrations
• Formular und Ansichten Rendering
• Datentypen
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)
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.
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>
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
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
DEMO:DEMO: CDOEXMCDOEXM
Setzen der Mailbox Quotas einer Exchange Mailbox
Setzen der Mailbox Quotas einer Exchange Mailbox
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
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
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)
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
Exchange FuturesExchange Futures
Exchange 2000 und .NETExchange 2000 und .NET
• CDO.NET Klassen
• Managed Provider• Remotable
• Transaktionsfähig
• In DTC integriert
• ADO DataSet
• XmlDataDocumentXmlDataDocument
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
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/
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