Windows Store Apps: Vorsicht beim Einsatz von WeakReference

Bei der Entwicklung unserer Net Factory Windows Store App auf .NET-Basis sind wir auf ein interessantes Detail im Zusammenhang mit der Windows Runtime gestoßen. Obwohl sich die .NET-Welt mit den neuen WinRT-APIs bei der Entwicklung sehr gut kombinieren lässt, funktioniert die Zusammenarbeit der CLR und der WinRT bei der Speicherverwaltung nicht ganz so reibungslos. Eine Beispiel-Projektmappe zur Reproduktion eines Problems mit WeakReferences steht zum Download bereit.

Windows Phone 8: Native Code Support

Entwicklung für Windows Phone hieß bisher auch immer Entwicklung von Managed Code. Egal ob man traditionelle Anwendungen in Silverlight erstellte oder das auf Spieleentwicklung spezialisierte XNA Framework verwendete, man verließ nie das sichere und komfortable Territorium der darunterliegenden Managed Runtime. Obwohl dies für gewöhnlich mehr Vor- als Nachteile bietet, gibt es doch Situationen, in denen…

Neu in .NET 4.5: Vereinfachungen im Managed Extensibility Framework (MEF)

Mithilfe des Managed Extensibility Frameworks lassen sich aus einzelnen Komponenten flexibel Anwendungen zusammenstellen. Der Dependency Injection Manager basiert dabei auf den Attributen Import, Export sowie einem Katalog.

Über das Attribut Export stellt eine Klasse eine Funktionalität zur Verfügung.

   1: [Export(typeof(IReportingService))]

   2: [PartCreationPolicy(CreationPolicy.Shared)]

   3: public class ReportingService : IReportingService

   4: {

   5:     // IReportingService Members

   6: } 

Durch Angabe eines Import Attributs kann auf diese von einer anderen Klasse zugegriffen werden.

   1: [Export(typeof(ReportViewModel))]

   2: public class ReportViewModel

   3: {

   4:     [Import (typeof(IReportingService)]

   5:     private IReportingService ReportingService { get; set; }

   6: }

Ein Katalog stellt alle Informationen über verfügbare Exporte und angeforderte Importe zur Verfügung.

MEF

Über die Komposition der Katalogbestandteile werden die Komponenten zu einer Anwendung verknüpft. Durch die Aufnahme von unterschiedlichen Komponenten in den Katalog kann die Funktionalität einer Anwendung flexibel konfiguriert werden.

MEF wurde als Bestandteil des .NET Frameworks 4.0 veröffentlicht und hat inzwischen eine starke Verbreitung gefunden. Im .NET Framework 4.5 wurden Erweiterungen ergänzt, die die tägliche Entwicklungsarbeit vereinfachen.

Besser spät als früh: Architekturentscheidungen auf dem Prüfstand

In den meisten Softwareprojekten wird angestrebt, die Architektur möglichst vollständig vorab zu spezifizieren. Doch eine einmal gefällte fundamentale Architekturentscheidung kann ein Korsett sein, aus dem man sich später nur noch mit großer Anstrengung oder gar nicht mehr befreien kann. Alternative Ansätze versuchen daher, architektonische Entscheidungen ganz bewusst zu verzögern und möglichst spät im Verlauf der…