Jeder Entwickler, der sich mit der Erstellung von Anwendungen, die mit Microsoft Dynamics CRM interagieren sollen, befasst, kann aus einer Vielzahl von Möglichkeiten, auswählen, um dies zu bewältigen. Allerdings werden sich diese verschiedenen Optionen wohlmöglich unterschiedlich auf die Performance auswirken. Daher möchten wir verschiedene Kombinationen dieser Optionen einmal näher unter die Lupe nehmen, um festzustellen, wie sich die Performance entsprechend verbessern lässt.

Verwendung von Early und Late Binding

Im Falle von Early Binding haben wir es mit Basistyp Klassen zu tun. Angesichts der verringerten Nutzlast bei der Serialisierung kann die Performance somit stark verbessert werden. Allerdings bringen die Zeichenfolgeschlüssel, die verwendet werden, um die Attribute näher zu beschreiben, auch einige Nachteile mit sich. Fehler beim Code sind eines der größten Risiken, was uns in dieser Hinsicht in den Sinn kommt. Darüber hinaus bringt die Refakturierung ebenfalls so ihre Schwierigkeiten mit sich.

Wenn Sie sich für die frühe Bindung entscheiden, kann Ihnen das CrmSVCUtil-Tool dabei behilflich sein, verschiedene Klassen zu erstellen. Dies soll heißen, dass alle Eigenschaften, Attribute und Beziehungen bereits in den Einheiten selbst enthalten sind. Das bedeutet, dass Sie in der Lage, auf die IntelliSense-Unterstützung zu bauen. Jedoch bringt dieser Ansatz ebenfalls ein paar Nachteile mit sich. Wenn Sie Änderungen an dem CRM-Schema vornehmen, bedeutet das, dass Sie das CrmSVCUtil Tool erneut starten müssen um die Code generierten Klassen zu erzeugen. Gleichzeitig sorgt dieser Ansatz jedoch für einen saubereren Code, was als einer der wichtigsten Vorteile anzusehen ist.

 

LINQ oder QUERY-Expressions?

Dank der LINQ Queries kann das Abfragen der Daten auf das jeweilige CRM zugeschnitten werden. LINQ bringt den Vorteil mit sich, dass es weitaus zugänglicher ist. Die QUERY-Expressions sind zudem Teil von LINQ, sodass Sie gleich doppelt profitieren können. Allerdings sollten Sie bedenken, dass LINQ selbst im Fall, dass Sie nur eine Einheit abfragen, gleich mehrere Einheiten abfragt. Da diese beiden Abfragetypen sowohl mit der frühen als auch der späten Bindung kombiniert werden können, haben Sie die freie Wahl.

 

Wie schlagen sich diese Optionen in Bezug auf die Performance?

Wir haben eine Testumgebung kreiert, eine Verbindung zu CRM 2013 hergestellt und beide Arten von Anfragen für ein paar Hundert Accounts durchgeführt.

Natürlich haben wir darauf geachtet, diese Tests mehrmals durchzuführen. Angesichts dieser Zahlen, schließen wir, dass es kaum eine Leistungsvarianz zwischen den verschiedenen Optionen gibt. Werfen Sie auch einen Blick auf unsere Ergebnisse aus dem Test, um unsere Schlussfolgerung nachvollziehen zu können:

 

Fazit

In unseren Augen ist LINQ der Sieger. Die Syntax lässt sich auch im Fall von eher komplexen Abfragen einfacher lesen und das ist nur einer der Hauptvorteile. Early Bound Entities können verwendet werden, um sofort Refakturierungs-Feedback zu erhalten, was ein großes Plus ist. Allerdings ist dies lediglich eine Frage der Präferenz, da die spät gebundenen Typen sowie die QUERY-Expressions ebenfalls auf eine ähnliche Art und Weise funktionieren. Nun liegt es an Ihnen, sich Ihrem persönlichen Codestil entsprechend zu entscheiden.