© best_vector/Shutterstock.com
Windows Developer
Diese Frameworks bzw. Tools dürfen in Ihren Projekten nicht fehlen

Top-5-Frameworks in ASP.NET MVC

In Anbetracht der Vielzahl an Projekten, die ich in den letzten Jahren implementiert habe, sind stabile und performante Frameworks eine willkommene Erleichterung für einen erfolgreichen Projektabschluss. Mittlerweile ist das Entwickeln ohne Frameworks in einigen Bereichen, wie z. B. in JavaScript, undenkbar, doch zum Teil auch sehr kurzlebig und in der Qualität nicht immer hervorragend. Aus der Menge unzähliger Frameworks haben sich für mich fünf herauskristallisiert, die ich im ASP.NET-MVC-Umfeld einsetze und als essenzielle Komponenten in meine Softwarearchitektur integriere.

Oğuzhan Açıkgöz


Komplexe Enterprise-Softwarelösungen sollten auf einer soliden Architektur aufgebaut sein, damit Qualitätsmerkmale wie Funktionalität, Zuverlässigkeit oder Änderbarkeit in hohem Maß gewährleistet werden können. Unter Softwarearchitekten ist es oft sehr schwierig, einen Konsens zu finden, weil jeder seine eigenen Erfahrungen und Vorlieben hat. Mein Favorit ist beispielsweise das Domain-driven Design von Eric Evans. Die Gemeinsamkeit aller architektonischen Konzepte in ASP.NET MVC ist die Verwendung von so genannten Data Transfer Objects (DTO), manchmal fälschlicherweise Plain Old Class Objects (POCO) genannt. Ohne in die Tiefe gehen zu wollen, ein kleines Beispiel: Angenommen wir haben eine Klasse Role und eine weitere Klasse RoleDto, die wie in Listing 1 implementiert sind.

Listing 1public class Role{ //Relations public virtual ICollection Users { get; set; }  //Properties public string Id { get; set; } public string Name { get; set; }}  public class RoleDto{ //Relations public List Users { get; set; }  //Properties public string Id { get; set; } public string Name { get; set; }}

Nehmen wir weiter an, dass wir aus der Datenbank Role-Objekte ermittelt haben, die in RoleDto-Objekte übertragen werden sollen. Im Worst Case würde das wie in Listing 2 aussehen.

Listing 2var listOfRoleDto = new List(); foreach (Role role in listOfRoles){ listOfRoleDto.Add( new RoleDto() { Id = role.Id, Name = role.Name, Users = role.Users.Select(x => x.Name).ToList() });}

Wir müssten also manuell alle Eigenschaften von Role zu RoleDto zuweisen. In Anbetracht realer Szenarien mit etlichen Klassen und sehr viel mehr Eigenschaften, kostet eine so primitive Aktion enorm Zeit. Das veranschaulichte Problem führt uns zu meinem Lieblingsframework AutoMapper [1].

AutoMapper

Das Framework AutoMapper ist ein einfach zu verwendender Object-to-object Mapper. Im Grunde werden die Attributnamen des Quelltyps mit den Attributnamen des Zieltyps verglichen, um ein Objekt des Zieltyps zu generieren, der die Werte des Quelltyps besitzt. Im Code lässt sich das wie in Listing 3 ausdrücken.

Listing 3Mapper.Initialize(cfg => { cfg.CreateMap();}); List listOfRoleDto = Mapper.Map,List>(listOfRoles);

Mit Mapper wird die statische AutoMapper-Klasse aufgerufen und per Initialize ein Typenpaar, bestehend aus Quell- und Zieltypen, konfiguriert. Ist das einmal initialisiert, vorzugsweise im Application_Start in Global.asax, kan...

Windows Developer
Diese Frameworks bzw. Tools dürfen in Ihren Projekten nicht fehlen

Top-5-Frameworks in ASP.NET MVC

In Anbetracht der Vielzahl an Projekten, die ich in den letzten Jahren implementiert habe, sind stabile und performante Frameworks eine willkommene Erleichterung für einen erfolgreichen Projektabschluss. Mittlerweile ist das Entwickeln ohne Frameworks in einigen Bereichen, wie z. B. in JavaScript, undenkbar, doch zum Teil auch sehr kurzlebig und in der Qualität nicht immer hervorragend. Aus der Menge unzähliger Frameworks haben sich für mich fünf herauskristallisiert, die ich im ASP.NET-MVC-Umfeld einsetze und als essenzielle Komponenten in meine Softwarearchitektur integriere.

Oğuzhan Açıkgöz


Komplexe Enterprise-Softwarelösungen sollten auf einer soliden Architektur aufgebaut sein, damit Qualitätsmerkmale wie Funktionalität, Zuverlässigkeit oder Änderbarkeit in hohem Maß gewährleistet werden können. Unter Softwarearchitekten ist es oft sehr schwierig, einen Konsens zu finden, weil jeder seine eigenen Erfahrungen und Vorlieben hat. Mein Favorit ist beispielsweise das Domain-driven Design von Eric Evans. Die Gemeinsamkeit aller architektonischen Konzepte in ASP.NET MVC ist die Verwendung von so genannten Data Transfer Objects (DTO), manchmal fälschlicherweise Plain Old Class Objects (POCO) genannt. Ohne in die Tiefe gehen zu wollen, ein kleines Beispiel: Angenommen wir haben eine Klasse Role und eine weitere Klasse RoleDto, die wie in Listing 1 implementiert sind.

Listing 1public class Role{ //Relations public virtual ICollection Users { get; set; }  //Properties public string Id { get; set; } public string Name { get; set; }}  public class RoleDto{ //Relations public List Users { get; set; }  //Properties public string Id { get; set; } public string Name { get; set; }}

Nehmen wir weiter an, dass wir aus der Datenbank Role-Objekte ermittelt haben, die in RoleDto-Objekte übertragen werden sollen. Im Worst Case würde das wie in Listing 2 aussehen.

Listing 2var listOfRoleDto = new List(); foreach (Role role in listOfRoles){ listOfRoleDto.Add( new RoleDto() { Id = role.Id, Name = role.Name, Users = role.Users.Select(x => x.Name).ToList() });}

Wir müssten also manuell alle Eigenschaften von Role zu RoleDto zuweisen. In Anbetracht realer Szenarien mit etlichen Klassen und sehr viel mehr Eigenschaften, kostet eine so primitive Aktion enorm Zeit. Das veranschaulichte Problem führt uns zu meinem Lieblingsframework AutoMapper [1].

AutoMapper

Das Framework AutoMapper ist ein einfach zu verwendender Object-to-object Mapper. Im Grunde werden die Attributnamen des Quelltyps mit den Attributnamen des Zieltyps verglichen, um ein Objekt des Zieltyps zu generieren, der die Werte des Quelltyps besitzt. Im Code lässt sich das wie in Listing 3 ausdrücken.

Listing 3Mapper.Initialize(cfg => { cfg.CreateMap();}); List listOfRoleDto = Mapper.Map,List>(listOfRoles);

Mit Mapper wird die statische AutoMapper-Klasse aufgerufen und per Initialize ein Typenpaar, bestehend aus Quell- und Zieltypen, konfiguriert. Ist das einmal initialisiert, vorzugsweise im Application_Start in Global.asax, kan...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang