Die Termine der Kladde stehen jetzt im Kalender des Büros. Aber das Büro benutzt Outlook, und Outlook ändert sich: Jemand verschiebt einen Termin per Ziehen, löscht einen, trägt einen Urlaub ein, den die Kladde nicht kennen kann. Diese Lektion baut den Rückweg: Änderungen aus Outlook kommen in die Kladde, ohne jedes Mal den ganzen Kalender zu lesen, ohne Doppelte und ohne dass die Kladde und Outlook sich gegenseitig hin- und herschreiben, bis jemand den Stecker zieht.
Zwei Mittel bietet Graph dafür, und die Lektion verbindet sie: Delta-Abfragen beantworten „Was hat sich seit meinem letzten Blick geändert?“, und Änderungsbenachrichtigungen sagen „Es hat sich etwas geändert“. Learn beschreibt das Zusammenspiel in einem Satz: Eine App kann Benachrichtigungen abonnieren und dann mit Delta alle Änderungen seit der letzten Abfrage holen. Das ist der Plan. Der Rest ist die Frage, was passiert, wenn etwas schiefgeht.
Nicht gegen einen Mandanten ausgeführt. Kein Aufruf dieser Lektion lief gegen einen Microsoft-365-Mandanten. Adressen, Eigenschaften, Fristen und Grenzen stammen aus Microsoft Learn, gelesen für diese Lektion; Antworten des Dienstes werden beschrieben, nicht vorgeführt. Wo Learn eine Frage offen lässt, steht „nicht gelesen“ oder „offen“. Jede Übung mit Mandant sagt es und hat einen Teil, der ohne Mandanten läuft: Hier sind das die meisten, denn die Regeln des Abgleichs sind reine Logik hinter eigenen Schnittstellen.
| Teil | Was entsteht |
|---|---|
| Regeln | wer gewinnt, was bei Löschung geschieht, wie Echos erkannt werden: sieben Regeln, die der Code und die Tests festhalten |
| Delta | IOfficeCalendarDelta, der Durchgang aus Seiten, nextLink und deltaLink, das Fenster, der abgelaufene Token |
| Anwenden | ChangeApplier: eine Änderung, die Regeln, idempotent; CalendarSync: ein Durchgang |
| Benachrichtigung | Abonnement, Webhook, Validierung, clientState, Verlängerung, Lebenszyklus-Ereignisse |
| Betrieb | CalendarSyncService: Anstoß durch Benachrichtigung, Netz durch Zeitgeber, Tests mit FakeTimeProvider |
Wo die Kladde steht
Aus Lektion W4.2.2 haben Sie IOfficeCalendar mit OfficeEvent, OfficeCalendarWriter (legt an und ändert), ICalendarLinks (Termin der Kladde ⇄ Ereignis) und AvailabilityView. Aus K2: die Outbox (Lektion 2.8.4), den Hintergrunddienst
mit Anfangsverzögerung und Scope je Lauf (Lektion 2.8.2, „Hintergrunddienste“), AppointmentPlanner mit MoveAsync und den Regeln für Termine (Lektion 2.11.3) und FakeTimeProvider (Lektion 2.8.2).