Archiv

Archiv für die Kategorie ‘.Net’

EF 5: Modelle übersichtlicher gestalten

17. März 2013 1 Kommentar

Ob man nun “Model-First” oder “DB-First” folgt, bei Entity Framework steht man schnell einmal vor einem Problem: Das Datenmodell verliert an Übersichtlichkeit.

Die oft verwendeten Beispiele mit wenigen Tabellen und Verbindungen sehen im Designer von Visual Studio prima aus. Hat man aber ein komplexeres Modell steht man bald einmal vor so einer Ansicht:

Unübersichtliches Modell

Auch wenn man sehr viel Zeit aufwendet um die Entitäten hin und her zu ziehen, so bleibt das Modell doch unübersichtlich. Verwendet man Entity Framework 5 und Visual Studio 2012 gibt es aber 2 Hilfsmittel die einem bei der Organisation helfen können.

 

Farben

Mit Hilfe von Farben kann man thematisch zusammenhängende Bereiche hervorheben. Dazu klickt man im Designer die gewünschte Tabelle (oder mittels der Hilfe von CTRL mehrere) an und wählt in den Properties die entsprechende Füllfarbe (Fill Color):

Farbe auswählen

Die Farben haben einzig im Designer eine Bedeutung und beeinflussen das Modell nicht. Mit wenig Aufwand sieht das Diagramm dann so aus:

Farbiges Modell

 

Diagramme

Für grosse Modelle sind die Farben zwar ein Anfang, doch ist man damit noch nicht am Ziel. Neu kann man das Modell aber in verschiedene Diagramme aufteilen. Die entsprechende Funktion findet sich im Model Browser unter Diagramme:

Diagramm hinzufügen

Die gewünschten Entitäten können nun auf dieses neue Diagramm gezogen werden. Man muss dies aber nicht für jede Entität einzeln machen. Über das Kontextmenü auf einer Entität kann man mit “Include Related” alle verbundenen Entitäten auf einmal einfügen lassen.

Die so erzeugten Diagramme behandeln nur noch den Ausschnitt aus dem Modell den man genauer betrachten möchte:

Zusätzliches Diagramm

Beim Löschen von Entitäten aus dem Diagramm muss man aufpassen. Mittels “Delete from Model” wird die Entität aus dem Modell gelöscht und ist danach über den DB-Kontext nicht mehr abrufbar. In der Regel will man stattdessen die Funktion “Remove from Diagram” nutzen. So wird nur das Diagramm angepasst und das Modell bleibt unverändert.

 

Fazit

Mit Hilfe von Farben und zusätzlichen Diagrammen kann man Ordnung in sein DB-Modell bekommen. So kann man auch grössere Datenbanken in Entity Framework benutzen ohne die Übersicht zu verlieren.

Kategorien:.Net, dnugBern, webDotNet Schlagworte: ,

MS SQL Server: Login mittels Passwort aktivieren

Obwohl es kaum etwas Einfacheres gibt stosse ich bei der Arbeit mit dem SQL Server immer wieder auf ein Problem: Wieso kann ich nicht mit dem angegebenen Benutzernamen und Passwort auf die Datenbank zugreifen?

Die Fehlermeldung bleibt ja mit Absicht wage:

SQL Login Error

Schaut man ins Event Log findet man die Ursache:

Login failed for user 'demo'. Reason: An attempt to login using SQL authentication failed. Server is configured for Windows authentication only. [CLIENT: ]

Auch bei diesem Server ist bisher nur ein Login mittels Windows-Authentifizierung erlaubt. Dies lässt sich aber schnell ändern. Dazu genügt es das Microsoft SQL Server Management Studio als Administrator zu starten und mittels Rechtsklick auf den Servernamen die Eigenschaften aufzurufen. Unter Security kann man dem SQL Server erlauben die Benutzer selber zu authentifizieren:

MS SQL Server Properties

Nach einem Neustart des SQL Server funktioniert der Login mittels Benutzername und Passwort wie gewünscht.

Kann man das SQL Server Management Studio verwenden ist diese Option schnell aktiviert – man muss nur daran denken dies auch zu tun. Hat man diese Möglichkeit wegen fehlenden Berechtigungen oder Security-Anforderungen nicht, wird es mühsam. In diesem Fall ist die Anleitung von Sven Schmalle sehr hilfreich.

Kategorien:.Net, webDotNet Schlagworte: ,

Stolperfallen bei der Installation von SharePoint 2013

SharePoint 2013 lässt sich ganz einfach installieren. Es sei denn man wählt eine falsche Option. In dem Fall endet man in einer Sackgasse aus der man kaum mehr herausfindet.

 

Niemals als Stand-alone installieren


Der Installationsdialog von SharePoint 2013 bietet gleich zu Beginn eine Auswahlmöglichkeit für den Server Typ:

  • Complete für den Produktiveinsatz
  • Stand-alone für Tests und Entwicklung

Egal in welchem Szenario man SharePoint nutzen will, man muss unbedingt die komplette Installation auswählen.

Bei meinem ersten Versuch wählte ich leider die Option „Stand-alone“. Die Installation läuft ohne Probleme durch und man kann am Ende gleich den Configuration Wizard starten lassen. Auch der beginnt wie gewohnt zu arbeiten. Bis dann plötzlich ganz spezielle Fehlermeldungen kommen:

„The SDDL string contains an invalid sid or a sid that cannot be translated“

Googelt man nach dieser Fehlermeldung findet man sehr viele Tipps. Irgendwann hat man die alle durch und jeder DB-User verfügt über alle möglichen Berechtigungen. Nur bleibt das Problem bestehen. Aus meinem Bekanntenkreis bekam ich den Tipp diese Übung abzubrechen, von vorne zu beginnen und „Farm“ oder „Complete“ als Installationstyp zu wählen. Damit war dieses Problem dann auch gehoben.

Martin Hinshelwood bringt es in seinem Blogpost auf den Punkt:

Everyone makes this mistake once so please take note… never… ever… select “Stand-alone” install option.

 

Installation mit lokalen Benutzern


Damit SharePoint 2013 voll funktioniert benötigt es für die Installation Domänen-Accounts. Der AD-Controller darf aber nicht auf dem gleichen System laufen wie SharePoint. Für ein produktives System ist dies kein Problem. Will man aber eine Entwicklungs- oder Testumgebung in einer virtuellen Maschine erzeugen sieht es anders aus.

Man kann nun entweder eine zusätzliche VM fürs Active Directory aufbauen oder einen Account aus dem (Firmen-) AD benutzen. Wenn man auf einige Features wie die Volltext-Suche verzichten kann gibt es noch eine weitere Möglichkeit: PowerShell.

Dazu startet man die Management Shell von SharePoint 2013 als Administrator und führt diesen Befehl aus:

New-SPConfigurationDatabase

Es folgen einige Fragen die man beantworten muss und in wenigen Minuten wird die Konfigurationsdatenbank für SharePoint erzeugt. Nun muss noch einmal der Configuration Wizard ausgeführt werden und schon läuft ein (fast vollständiger) SharePoint 2013.

 

Fazit


Wählt man den falschen Server-Typ wird aus einer einfachen Sache wie der Installation von SharePoint schnell ein ausgedehntes Abenteuer. Aber selbst wenn man die richtige Option wählt warten weitere „Gefahren“. Für die erste Installation von SharePoint 2013 sollte man daher genügend Zeit einplanen.

Kategorien:.Net Schlagworte: ,

Buch-Rezension zu “Domain-Driven Design”

3. Februar 2013 1 Kommentar

Domain-Driven DesignWenn man sich mit Behavior Driven Development (BDD) und dem Schreiben von Akzeptanztests beschäftigt stösst man immer wieder auf ein Buch:
Domain-Driven Design: Tackling Complexity in the Heart of Software” von Eric Evans.

Dieses Buch gilt weit herum als Standardwerk das man unbedingt kennen muss. Beim Lesen merkt man schnell das Evans sehr viel Erfahrung hat und weiss wovon er schreibt. Leider macht er dies so ausführlich dass man kaum vorwärts kommt. “Man müsse die Informationen herausschürfen” ist eine Bemerkung über dieses Buch die man beim Lesen im Hinterkopf behalten sollte.

 

Kernpunkte

Von all den Themen die Evans behandelt stechen für mich diese Punkte besonders hervor:

Mit Hilfe einer Ubiquitous Language (einer einzigen gemeinsamen Sprache) sollen alle am Projekt beteiligten Personen kommunizieren. Dadurch das alle die gleichen Begriffe benutzen können Missverständnisse und Übersetzungsprobleme (im Sinne von Fachspezifisch zu Technisch) früh erkannt werden oder entfallen ganz. Auch ist es für Entwickler einfacher sich an die Spezifikationen zu halten wenn die Objekte im Code gleich heissen wie in den Anforderungen und den Testszenarios.

Bei Refactoring denkt man meistens an einen technischen Vorgang um Code besser zu strukturieren. Neben diesem technischen Aspekt gibt es aber auch einen fachlichen. Evens zeigt bei „Refactoring Toward Deeper Insight“ auf wie man nach und nach das Domänenmodell um neue Erkenntnisse verfeinern kann.

Entwickelt man nach Model Driven Design darf das Modell nicht in einem Vakuum erstellt werden. Ist dieses Modell technisch nicht umsetzbar wird in der Entwicklung gezwungenermassen eine Lösung gefunden die davon abweicht. Damit verliert man alle Vorteile und muss ständig zwischen mehreren Modellen hin und her wechseln. Neben höheren Kosten leidet dabei auch die Kommunikation.

Bounded Context: Das eigene Domänenmodell kann noch so gut sein, wenn man es nicht abgrenzt fliessen die unterschiedlichen Konzepte der Umsysteme hinein. Evens zeigt eine ganze Reihe von Ansätzen um dies zu verhindern (wie das Pattern “Anticorruption Layer”).

Software-Entwicklung ist mehr als das Schreiben von Code. Es geht um das Lösen von Problemen. Damit man die passende Lösung finden kann ist eine Zusammenarbeit mit allen beteiligten Parteien nötigt.

 

Kritik

Die gleichen Namen und Bezeichnungen zu verwenden ist ein grosser Schritt in die richtige Richtung. Nur ist es damit nicht getan. Mir fehlt wie man auch zu einer gemeinsamen Bedeutung kommt und überhaupt die Wiedersprüche aufdecken kann. (Wenn alle von Autos sprechen, wie merkt man das der eine einen Golf meint und der anderen einen Ferrari?)

Die ersten beiden Teile sind sehr schwerfällig geschrieben. Immer wieder springt Evans von einer Idee zur nächsten und wieder holt dieses hin und her mehrmals. Würde dies aus unterschiedlichen Perspektiven geschehen wäre dies ein Plus fürs Buch. Leider sucht man die ganze Zeit nach den Unterschieden zum bereits behandelten und findet meist keine. Dies bremst den Lesefluss und schlägt auf die Motivation.

Anstelle der vielen Wiederholungen wären Beispiele zur technischen Umsetzung hilfreich. Statt so viel über Code zu sprechen hätte Evens diesen zeigen können – dies ginge schneller und hätte einen Praxisnutzen. So bleibt zu viel eine schöne Idee ohne Hinweis auf deren Umsetzung.

 

Alternative

Abel Avram und Floyd Marinescu sahen ebenfalls einige Verbesserungsmöglichkeiten und schrieben 2006 das Mini-Book “Domain Driven Design Quickly“. Auf rund 100 Seiten gibt es all die Konzepte aus dem Buch von Evans, ein Interview mit ihm und es hat noch Platz für Ergänzungen aus “Applying DDD” von Jimmy Nilsson.

Wer ins Thema DDD einsteigen will sollte sich erst einmal das PDF bei InfoQ herunterladen.

 

Fazit

Mit Domain-Driven Design wurden viele wichtige Ideen erstmals in Buchform veröffentlicht. Die darin behandelten Themen sind auch heute noch aktuell und ein Umsetzen der von Evens vorgestellten Ansätze würde so manches aktuelle Problem lösen.

Leider verzettelt sich Evans mit seinen Erklärungen und macht es dem Leser äusserst schwer diese Konzepte zu verstehen. Als Einstiegslektüre ins Thema DDD kann ich dieses Buch daher nicht empfehlen. “Domain Driven Design Quickly” ist dafür die bessere Wahl, da die gleichen Konzepte viel besser auf den Punkt gebracht werden.
Kehrt man nach diesem Umweg zu Evens zurück versteht man seine Ideen viel besser und erkennt dann auch was sonst noch alles für Informationen in diesem Buch stecken.

 

Zum Buch

Domain-Driven Design: Tackling Complexity in the Heart of Software” von Eric Evans, 2003 Addison-Wesley, ISBN 978-0-3211-2521-7, 560 Seiten, Englisch

Kategorien:.Net, Bücher, Ruby, webRead Schlagworte: , , ,

3 Helfer für die SharePoint-Entwicklung

24. Januar 2013 1 Kommentar

SharePoint bietet als Entwicklungsplattform viele Möglichkeiten. Will man sich als Entwickler in dieses Gebiet einarbeiten kämpft man aber sehr bald mit einer Black Box. Was läuft nun eigentlich genau in meinem SharePoint? Wie bekomme ich das Paket an die richtige Stelle? Und wieso funktioniert mein Code nicht?

Einige dieser Fragen kann man mit den richtigen Werkzeugen beantworten. Mir haben die hier vorgestellten Tools in den letzten Monaten oft geholfen. Da ich nicht mehr auf diese Helfer verzichten möchte könnten diese auch für andere Entwickler interessant sein.

 

ULS Viewer


SharePoint schreibt viele Logmeldungen. So viele und vor allem so lange das man diese in einem Texteditor kaum vernünftig anschauen kann. Da auch Exceptions und deren Stacktrace in nur einer Zeile ausgegeben werden gilt es sich zudem an ein neues Ausgabenformat zu gewöhnen. Oder aber man nimmt ein dafür optimiertes Tool.

Der ULS Viewer hilft einem die Flut an Logmeldungen zu kontrollieren und bietet viele hilfreiche Funktionen:

  • Filtermöglichkeit nach Priorität
  • Tabellarische Darstellung mit der Möglichkeit die Spaltenbreite zu verändern
  • Anzeige von Exceptions und Stacktraces mit den bekannten Zeilenumbrüchen
  • Neue Meldungen werden ohne Unterbruch unten angefügt
  • Automatisches anzeigen der neusten Meldungen (AutoScroll)
  • Zusammengehörende Meldungen lassen sich gruppieren

ULS Viewer

Wichtig: Obwohl der ULS Viewer von Microsoft kommt gibt es dafür keinen Support.

 

CKS Plug-In für Visual Studio


Das Community Kit for SharePoint (oder kurz CKS) ist eine Sammlung von Best Practices, Vorlagen und Tools. Für Visual Studio gibt es mit CKSDev eine Erweiterung die dies alles installiert und an den richtigen Orten zur Verfügung stellt. Zur Installation genügt es über TOOLS / Extensions and Updates nach “CKSDev” zu suchen und das Paket zu installieren.

Neben den Vorlagen wird unter anderem auch eine Erweiterung für das Kontextmenü im Solution Explorer installiert. Klickt man nun auf ein SharePoint-Projekt erscheint der Punkt Quick Delploy (CKSDev):

CKSDev

Im obersten Teil dreht sich alles ums Installieren des Paketes. Mit einem Klick kann man nun sowohl ins SharePoint Root wie auch in den GAC deployen. Voraussetzung dafür ist das der SharePoint Server auf dem gleichen Gerät/VM läuft (für die Entwicklungsumgebung ist dies eh eine zwingende Voraussetzung).

Der mittlere Bereich liefert häufig verwendete Befehle rund um den IIS. Für ein iisreset muss man nicht mehr extra ein Konsolenfenster öffnen. Es genügt den entsprechenden Menüpunkt auszuwählen oder die Tastenkombination Alt+R, I zu verwenden.

Für mich war das Anhängen des Debuggers an die einzelnen Prozesse äusserst hilfreich. Diese Funktionen sind im untersten Teil untergebracht und fürs Aufspüren von Problemen Gold wert.

 

SharePoint Manager


Mit dem Deployment, den Möglichkeiten des Debuggers und dem anschauen der Logmeldungen kommt man weit. Hin und wieder genügt dies aber nicht. Wenn man wissen muss was im SharePoint für Objekte vorhanden sind muss man irgendwie hineinschauen können. Die Bordmittel helfen einem dabei leider nicht weiter.

Den Blick hinein ermöglicht der SharePoint Manager. In einem Baum werden alle Objekte die in einer SharePoint-Instanz vorhanden sind angezeigt. Beginnend bei der Farm kommt man über die Web-Applikation zu den Seiten und findet dort unter anderem die Listen, Felder und Content Types. Benötigt man eine GUID eines Feldes findet man diese neben allen anderen Angaben in den Eigenschaften.

SharePoint Manager 2010

Auch wenn ich eine Suchfunktion vermisse so liefert der SharePoint Manager doch eine Fülle von wichtigen Informationen.

 

Weitere Tools?


Soweit die Tools die mir schon oft geholfen haben. Wenn jemand weitere Werkzeuge empfehlen kann würde ich mich über einen entsprechenden Kommentar freuen.

 

Kategorien:.Net, webDotNet Schlagworte: ,
Follow

Bekomme jeden neuen Artikel in deinen Posteingang.

Schließe dich 175 Followern an