Sonntag, 8. Dezember 2013

Modulare Anwendung mit Prism?

Da meine nächste Anwendung wieder in WPF entwickelt werden soll und diese diesmal in viele verschiedene Module aufgeteilt wird, habe ich mich auf die Suche nach Patterns und Frameworks gemacht. Schnell bin ich wieder einmal auf Prism gestoßen. Schon vor einiger Zeit habe ich mich mit dem Framework befasst, es damals allerdings als nicht passend für meine damalige Anwendung gehalten. Mit dem neuen Projekt sieht das nun anders aus!

Verschiedene Module sollen von verschiedenen Entwicklern entwickelt werden. Wichtig dabei ist mir, dass die Abhängigkeiten zwischen den Modulen bis auf's Minimum reduziert werden. Die Anwendung soll wie immer Test Driven entwickelt werden können und außerdem soll es möglich sein, dass wenn ein Modul nicht geladen werden kann, nicht die ganze Anwendung nicht benutzt werden kann, sondern alle anderen Module zur Verfügung stehen!

Die letzten Projekte wurden mit Cinch, das auf MEFedMVVM aufsetzt, entwickelt. Auf die vielen Features, die diese Frameworks mit sich bringen, möchte ich natürlich auch in den nächsten Projekten nicht verzichten müssen. Aber Sacha Barber hat sich (wie immer) auch darum bemüht und evaluiert, wie diese Frameworks miteinander harmonieren. Einen Beitrag dazu hat er auf Codeproject verfasst.

Prism legt viel Wert auf unabhängige Module und Dependency Injection, was das Testen der Software Komponenten vereinfacht. Es können verschiedene Dependency Injection Manager, wie Unity oder das im .NET Framework integrierte MEF genutzt werden. Die Entscheidung viel schnell und leicht, da ich ja weiterhin Cinch bzw. MEFedMVVM nutzen möchte.

Prism selbst ist in der Version 4 sehr gut Dokumentiert. Ich bin derzeit fleißig am Lesen und Evaluieren, ob alle meine Anforderungen erfüllt werden. Momentan sieht es aber so aus, als ob Prism genau das richtige wäre!

Samstag, 7. Dezember 2013

Fazit für Feedly

Am 1. Juli 2013 hatte google den google reader aus dem Chrome Web Store genommen und feedly übernahm die meisten User.

Fazit: Die Übernahme von vorhandenen Blog Abos hatte ohne Probleme funktioniert. Kategorien können eingerichtet werden und es kann zwischen verschiedenen Themes ausgewählt werden. Außerdem und wie ich finde das wichtigste ist, dass die verschiedenesten Plattformen unterstützt werden. So kann ich nicht nur auf dem PC News lesen, sondern auch auf meinem IPhone!

Freitag, 6. Dezember 2013

Nokia verleiht Entwicklergeräte

Wer gerne mal eine App entwickeln möchte, aber leider kein passendes Smartphone zur Hand hat, kann sich bei Nokia diese nun leihen. Da möchte Nokia die Entwicklerwelt mal wieder ein bisschen nach vorne bringen!

http://developer.nokia.com/forms/Entwicklergeraet.xhtml

Freitag, 13. September 2013

Das neue iOS 7 kommt

Endlich ist es soweit!
Das neue iOS von Apple kommt und ich bin schon wahnsinnig gespannt drauf. Es kommt in einem neuen Design mit einer ganz neuen Farbpalette und steht für iPhones ab der Version 4 zur Verfügung. Das Video zur siebten Version vom iOS kann man sich hier anschauen und verspricht so einiges.
Ich zumindest freu mich jetzt schon auf den 18. September :)

Die ApplicationException im .NET Framework

Wozu wurde eigentlich die ApplicationException im .NET Framework eingeführt und wer sollte diese nutzen?
Sinn und Zweck dieser Exception war urspünglich alle selbst geschriebenen Exceptions von der ApplicationException ableiten zu lassen. So konnte man in einem try-catch Block einfach unterscheiden, ob eine Ausnahme aus der eigenen Anwendung oder aus dem .NET Framework geschmissen wurde.
Leider wurde dieses Konzept schnell wieder von Microsoft selbst über den Haufen geworfen, indem direkt aus dem Framework heraus schon ApplicationExceptions geworfen werden. So ist es zum Beispiel möglich beim Nutzen des Namespaces Reflection oder auch beim Laden eines FixedDocuments eine ApplicationException zu bekommen.

Donnerstag, 20. Juni 2013

Mit MEFedMVVM zur WPF Anwendung

Ich nutze nun schon seit geraumer Zeit das Framework Cinch von Sacha Barber um meine Anwendungen zu entwickeln. Cinch selber macht sich MEFedMVVM zu nutze um die Bindung zwischen View und ViewModel zu erstellen.

Mit dem Framework ist es leicht für die Design Zeit die gebundenen Klassen auszutauschen und das Testen wird durch die Schnitstellen sehr vereinfacht.

Hier die Links:

Dienstag, 18. Juni 2013

Command Line Args mit MEFedMVVM

Wie bekommt man eigentlich Command Line Argumente mit MEFedMVVM in sein ViewModel? Die Argumente kommen ja wie üblich in WPF der StartUp Methode der App Klasse mit.

Es gibt zwei Wege:
  1. Entweder man nutzt die Argumente der StartUp Methode und weißt diese einem Service des Containers zu.
     ICommandLineArgs service = ViewModelRepository.Instance.Resolver.Container.GetExport<ICommandLineArgs>().Value;  
    
  2. Oder man greift ganz einfach auf die Methode System.Environment.GetCommandLineArgs() zu. Das hat den Vorteil, das es nicht nötig ist, in der StartUp Methode die Argumente zuzuweisen.
    Nutzt man aber trotzdem einen eigenen Service, der intern die System.Environment.GetCommandLineArgs() nutzt, kann man diesen Service, wie gewohnt, seinem ViewModel übergeben. Für die Tests kann dann ganz einfach ein Test Service geschrieben werden, um die Argumente für die Testfälle vorzugeben.