Auswählen des Entwicklungsstils für verwalteten Code
Veröffentlicht: November 2016
Gilt für: Dynamics CRM 2015
Microsoft Dynamics CRM SDK bietet zahlreiche Methoden und Technologien, die beim Schreiben von Code verwendet werden können, um auf die Microsoft Dynamics CRM 2015 und Microsoft Dynamics CRM Online 2015-Update-Webdienste zuzugreifen oder die Anwendung zu erweitern. In diesem Handbuch werden mehrere Tools und Methoden aufgezeigt, die Sie für verschiedene Codierungsaufgaben verwenden können, und es bietet Anleitungen dazu, wann sie verwendet werden sollten.
In diesem Thema
Authentifizieren mithilfe von Code
Erstellen und Bereitstellen von Plug-Ins oder benutzerdefinierten Workflowaktivitäten
Erstellen und Bereitstellen von XAML-Workflows
Entitätsprogrammierung (frühe Bindung im Vergleich zu später Bindung und Entwicklererweiterungen)
Abfrage (Fetch im Vergleich zu QueryExpressions und LINQ und Entwicklererweiterungen)
Authentifizieren mithilfe von Code
Die folgende Tabelle zeigt die Auswahlmöglichkeiten, die Sie zum Schreiben von Code haben, der den Aufrufer mit einer Installation von Microsoft Dynamics 365 für die lokale Bereitstellung mit Internetzugriff (IFD) oder Online-Bereitstellungen authentifiziert.
Klassen |
Beschreibung und Verwendung |
Weitere Informationen |
---|---|---|
Hilfscode |
Die Klassen im Beispielcode zeigen, wie eine Verbindung mit den Webdiensten hergestellt und der Benutzer authentifiziert wird. Sie können den Hilfscode als Ausgangspunkt für Ihren eigenen benutzerdefinierten Authentifizierungscode verwenden. Dieser Code ist einfach zu verwenden und unterstützt alle Bereitstellungsarten von Microsoft Dynamics 365. Außerdem unterstützt er das Speichern von Kennwörtern in Windows-Anmeldeinformationsverwaltung für eine spätere erneute Verwendung. Vollständiger Quellcode wird bereitgestellt, den Sie kopieren und an Ihre Anforderungen anpassen können. Dies ist ein empfohlenes Verfahren, um Programme von Änderungen an diesem Hilfscode in zukünftigen Versionen zu isolieren. |
Beispiel: Erste Schritte für Microsoft Dynamics CRM Verwenden des Beispiel- und Hilfscode Hilfscode: Klasse "ServerConnection" Dieser Code ist in den SampleCode\CS\HelperCode\CrmServiceHelpers.cs- und SampleCode\VB\HelperCode\CrmServiceHelpers.vb-Dateien im SDK-Download verfügbar. Laden Sie das Microsoft Dynamics CRM SDK-Paket herunter. |
Entwicklererweiterungen |
Diese Assemblys werden bereitgestellt, um die Entwicklung von Anwendungen, die mit Microsoft Dynamics 365 interagieren, zu vereinfachen und zu beschleunigen. Die Erweiterungen erweitern die Funktionalität des Kern-Microsoft Dynamics CRM SDK spezfisch um die Verwendung der OrganizationServiceContext-Klasse herum. Wenn Sie eine einfache Methode suchen, die die Arbeit mit wenigen Codezeilen für Sie erledigt, verwenden Sie die CrmConnection-Klasse. Dieser Code ist einfach zu verwenden und unterstützt alle Bereitstellungsarten von Microsoft Dynamics 365. |
|
Xrm-Client |
Für fortgeschrittene Entwickler, die die Windows Communication Foundation (WCF)-Servicekanalverwaltung und den Authentifizierungsprozess anpassen müssen, bieten sich die IServiceManagement<TService>- und OrganizationServiceProxy-Klassen im Microsoft.Xrm.Sdk.Client-Namespace an. Die direkte Verwendung dieser Klassen kann die Verbindungs- und Authentifizierungsleistung verbessern und mehr Flexibilität bieten. Dafür sind jedoch fortgeschrittene Kenntnisse über die WCF-Servicekanal- und -Serverauthentifizierung erforderlich. Darüber hinaus müssen Sie mehr Code zur Handhabung aller Microsoft Dynamics 365-Bereitstellungsarten schreiben. |
Active Directory und anspruchsbasierte Authentifizierung Beispiel: Authentifizieren von Benutzern durch die Microsoft Dynamics CRM-Webdienste |
XRM-Tooling |
Diese Assemblys nutzen die Dynamics 365-APIs, um Support für einfache Authentifizierung mit weniger Codezeilen und mithilfe von Windows PowerShell-Cmdlets bereitzustellen. Alle Funktionsaufrufe in diesen Klassen bieten Threadsicherheit für die in Dynamics 365 durchgeführten Aktionen in einer Multithread-Umgebung. Sie stellen ein übliches Anmeldesteuerelement mit integrierter Authentifizierungslogik und der Fähigkeit, Authentifizierungsinformationen sicher zu speichern und wiederzuverwenden, bereit, und bieten dadurch eine einheitliche und nahtlose Anmeldung bei Dynamics 365 über die Windows-Client-Anwendungen. Die Klassen bieten außerdem integrierte Diagnose-Ablaufverfolgung zur Unterstützung der Problembehandlung und Leistungsberichterstellung der Aktionsaufrufe über die Windows-Client-Anwendungen. Diese Klassen unterstützen alle Microsoft Dynamics 365-Bereitstellungsarten und -Authentifizierungstypen, mit Ausnahme von OAuth. |
Erstellen von Windows-Client-Anwendungen mithilfe der XRM-Tools Verwenden Sie XRM, um eine Verbindung mit CRM herzustellen Verwenden von PowerShell-Cmdlets für XRM-Tooling, um eine Verbindung mit CRM herzustellen |
Erstellen und Bereitstellen von Plug-Ins oder benutzerdefinierten Workflowaktivitäten
In der folgenden Tabelle werden die Möglichkeiten aufgeführt, die Sie zum Schreiben und Bereitstellen von Plug-Ins und benutzerdefinierten Workflowaktivitäten haben.
Tool |
Beschreibung und Verwendung |
Weitere Informationen |
---|---|---|
Plug-In- und benutzerdefinierte Workflowaktivitätsklassen Plug-In-Registrierungstool |
Die Plug-In- und benutzerdefinierten Workflowaktivitätsklassen ermöglichen das Erstellen von Ereignishandlern für die Ausführung der angepassten Geschäftslogik, die Sie in Microsoft Dynamics 365 integrieren können, um das Standardverhalten der Plattform zu ändern oder zu erweitern. Wenn diese Klassen direkt verwendet werden, enthält Ihr Code nicht länger Hilfscode, der in Developer Toolkit bereitgestellt wird. Wenn Sie Plug-Ins und benutzerdefinierte Workflowaktivitäten neu schreiben, müssen Sie das Plug-In-Registrierungstool verwenden, um sie zu registrieren. Das Tool stellt eine grafische Benutzeroberfläche bereit und unterstützt das Registrieren von Plug-Ins und benutzerdefinierten Workflowaktivitäten in Microsoft Dynamics 365. Verwenden Sie diese Methode: Wenn Sie mit der Verwendung der Plug-In- und benutzerdefinierten Workflowaktivitätsklassen vertraut sind. Wenn kein zusätzlicher Bibliothekscode automatisch generiert und in Ihren Codedateien platziert werden soll. Wenn es Sie nicht stört, ein externes Tool und die Webanwendung zum Registrieren und Packen von benutzerdefinierten Code-Assemblys zu verwenden. |
Benutzerdefinierte Workflowaktivitäten (Workflowassemblys) Registrieren und Bereitstellen von Plug-Ins Exemplarische Vorgehensweise: Registrieren eines Plug-Ins mithilfe des Plug-In-Registrierungstools |
Erstellen und Bereitstellen von XAML-Workflows
In der folgenden Tabelle werden die Möglichkeiten aufgeführt, die Sie zum Schreiben und Bereitstellen von XAML-Workflows haben.
Tool |
Beschreibung und Verwendung |
Weitere Informationen |
---|---|---|
Microsoft Visual Studio-Workflow-Designer |
Die lokale und IFD-Version von Microsoft Dynamics 365 unterstützt die Möglichkeit, benutzerdefinierte XAML-Workflows zu erstellen. Wenn Sie den Microsoft Visual Studio-Workflow-Designer verwenden, können Sie benutzerdefinierte XAML-Workflows, die auch als deklarative Workflows bezeichnet werden, erstellen, indem Sie Workflowaktivitäten von der Toolbox auf die Entwurfsoberfläche ziehen, Variablen erstellen und Eigenschaften dieser Aktivitäten festlegen, um den Funktionsumfang des Workflows zu implementieren. Sie können die integrierten Windows Workflow Foundation-Aktivitäten oder Prozessaktivitäten verwenden, die für Microsoft Dynamics 365 spezifisch sind. Verwenden Sie diese Methode, wenn Sie nur benutzerdefinierte XAML-Workflows schreiben möchten. |
Benutzerdefinierte XAML-Workflows Erstellen von Workflows zum Automatisieren von Geschäftsprozessen |
Entitätsprogrammierung (frühe Bindung im Vergleich zu später Bindung und Entwicklererweiterungen)
In der folgenden Tabelle werden die Möglichkeiten aufgeführt, die Sie zum Schreiben von Code haben, der Entitäten in Microsoft Dynamics 365 verwendet.
Klasse |
Beschreibung und Verwendung |
Weitere Informationen |
---|---|---|
Früh gebunden <optional namespace>.Account, <optional namespace>.Contact und so weiter |
Das Codegenerierungstool (CrmSvcUtil) erstellt aus der Entity-Klasse abgeleitete Entitätsklassen mit früher Bindung, die Sie verwenden können, um auf Geschäftsdaten in Microsoft Dynamics 365 zuzugreifen. Diese Klassen enthalten eine Klasse für jede Entität in Ihrer Installation, einschließlich benutzerdefinierter Entitäten. Verwenden Sie diese Methode, wenn der Compiler Typreferenzen zur Kompilierzeit prüfen soll. Darüber hinaus sind Attribute und Beziehungen in der generierten Klasse enthalten, sodass sie über IntelliSense-Unterstützung für Entitäten, Attribute und Beziehungsnamen verfügen. Starke Typen werden im Allgemeinen bevorzugt verwendet und sie werden auch in den meisten Beispielen der SDK-Dokumentation verwendet. Dieser Ansatz hat ein paar Nachteile: Klassen müssen jedes Mal neu erstellt werden, wenn Entitäten angepasst werden, um Schemaänderungen zu nutzen. Die Serialisierungskosten erhöhen sich, wenn die Entitäten während der Übertragung über das Netzwerk in Typen mit später Bindung konvertiert werden. |
Verwenden Sie im Code die Entitätsklassen mit früher Bindung Entitätsklassen mit früher Bindung mit dem Codegenerierungstool erstellen (CrmSvcUtil.exe) |
Spät gebunden Microsoft.Xrm.Entity |
Die Entity-Klasse enthält den logischen Namen einer Entität und einen Eigenschaftsbehälterarrray des Entitätsattributs. Dadurch können Sie die späte Bindung verwenden, sodass Sie mit Typen wie benutzerdefinierten Entitäten und benutzerdefinierten Attributen arbeiten können, die nicht vorhanden waren, als Ihre Anwendung kompiliert wurde. Ein weiterer Vorteil davon ist, dass weniger Serialisierung erfolgt, wenn die Daten über ein Netzwerk übertragen werden, sodass eine höhere Leistung erzielt wird. Dieser Ansatz hat ein paar Nachteile: Die Typen müssen explizit angegeben werden, um implizite Umwandlungen zu vermeiden. Es ist schwieriger, die Auswirkungen von Änderungen auf das Schema zu isolieren, weil die Namen für Ressourcen, wie z. B. Entitäten und Attribute, hartcodiert sind. Bei der Codierung treten leichter Rechtschreibfehler auf, da die Attributnamen hartcodierte Zeichenfolgen sind. |
|
Entwicklererweiterungen Microsoft.Xrm.Client.CrmEntity |
Die CrmEntity-Klasse wird von der Entity-Klasse abgeleitet. Zusätzlich dazu, dass sie die gleichen Funktionen wie die Entity-Klasse bietet, fügt die CrmEntity-Klasse neue Erweiterungsmethoden zum Abrufen und Festlegen zur Vereinfachung allgemeiner Codierungsaufgaben und zwei neue Eigenschaftenänderungs-Ereignisse hinzu. |
|
Frühe Bindung mithilfe der Codegenerierungstool-Erweiterungen <optional namespace>.Account, <optional namespace>.Account und so weiter |
Durch die Verwendung der CrmSvcUtil-Tool-Version mit Entwicklererweiterungen können Sie Typen mit früher Bindung generieren, die von der CrmEntity-Klasse abgeleitet werden. Verwenden Sie diese Option, wenn Sie andere Funktionen nutzen möchten, die in den Entwicklererweiterungen verfügbar sind. |
Generieren von Code mit den Codegenerierungstool-Erweiterungen (Dynamics CRM 2015) |
Abfrage (Fetch im Vergleich zu QueryExpressions und LINQ und Entwicklererweiterungen)
In der folgenden Tabelle sind die Möglichkeiten aufgeführt, die Sie zum Erstellen von Abfragen haben, die Sie verwenden können, um Datensätze aus der Microsoft Dynamics 365-Datenbank abzurufen.
Abfragenstil |
Beschreibung und Verwendung |
Weitere Informationen |
---|---|---|
FetchXML |
Hierbei handelt es sich um eine benutzerdefinierte XML-basierte Abfragesprache, die alle Funktionen von QueryExpression sowie Aggregate und die Gruppierung unterstützt. Fetch-Abfragen können Datensätze für mehrere Entitäten zurückgegeben. Darüber hinaus können Abfragen in der Datenbank gespeichert werden und serialisiert werden. Dies wird verwendet, um eine Abfrage als benutzereigene Ansicht in der UserQuery-Entität und als unternehmenseigene Ansicht in der SavedQuery-Entität zu speichern. Verwenden Sie diese Abfragesprache, wenn Aggregate und Gruppierung unterstützt werden müssen, oder wenn Sie die Abfrage speichern müssen. |
|
Ein Abfrageausdruck wird verwendet, um Datensätze für einen einzelnen Entitätstyp zu suchen. Abfragen werden als Objektmodell erstellt. Diese Klasse unterstützt alle FetchXML-Funktionen, ausgenommen Aggregate und Gruppierung. Sie unterstützt außerdem Entitätsprogrammierungsstile mit früher und später Bindung. |
||
LINQ |
Abfragen werden mithilfe der Standardsprache erstellt, aber intern verwendet .NET Language-Integrated Query (LINQ)QueryExpression, weshalb eine Einschränkung auf die Funktionen von QueryExpression besteht.LINQ unterstützt außerdem Entitätsprogrammierungsstile mit früher und später Bindung. |
Erstellen von Abfragen mit LINQ (.NET language-integrated query) |
Siehe auch
Entwicklerübersicht
Lernprogramme für den Einstieg in die Entwicklung für Microsoft Dynamics CRM 2015
Schreiben von Anwendungen und Servererweiterungen
Die Programmiermodelle für Microsoft Dynamics CRM 2015
© 2017 Microsoft. Alle Rechte vorbehalten. Copyright