| 

.NET C# Java Javascript Exception

5
Hallo zusammen,

komme aus der Java Ecke, muss mich mit C# auseinandersetzen, da wollte ich mal fragen was so die populärsten Frameworks/APIs/libs/Tools sind, wenn möglich kostenlos.

Bereich automatisiertes Testen:
Hab schon von NUnit gehört, tendiere wegen meiner Vorgeschichte schon dazu ;)
Was gibt es da sonst noch?
Gibt es ein Tool dass mir die Code Coverage meiner Tests anzeigen kann?

Bereich DB/ORM:
IN Java habe ich viel mit iBatis/Hibernate/JPA gearbeitet, es gibt zwar NHibernate, aber auch ADO.NET, LINQ, etc. pp.
Welches davon nutzt ihr und warum? Oder nutzt ihr etwas ganz anderes?

Dependency Injection:
Hab in Java auch mit Spring gearbeitet, was haltet ihr von Spring.Net?

Build/IDE/CI:
Habe Visual Studio Pro 2008, würde aber unbedingt meine Builds Skripten (automatisieren) wollen, NAnt scheint da populär zu sein, andere empfehlen mir Powershell, letzteres scheint mir aber zu "general purpose" zu sein um es effizient zum Builden einzusetzen.
Habt jemand schon Erfahrung mit CI Server? Wnen ich mich recht entsinne, soll Hudson mit .Net Projekten und NAnt klarkommen, gibt es Meinungen dazu?

Was hab ich vergessen bzw. sollte ich mir unbedingt ansehen?

Wie macht ihr das?

Danke im Voraus,

maki
News:
13.08.2009
maki 494 2 8
3 Antworten
6
was so die populärsten Frameworks

Welch Überraschung - das .net Framework ;)

Bereich automatisiertes Testen

Ich würde dir auch NUnit empfehlen, nicht nur wegen deiner Vorkenntnis sondern weil ich auch damit arbeite und es für sehr praktisch halte.
Interessant ist auch ein Blick auf PEX. Das ist ein Framework von Microsoft-Research das mit PUTs (parametrisierte Unit-Tests) arbeitet. D.h. anhand des zu testenden Codes werden die Eingangsparameter für den Unit-Test automatisch ermittelt so dass die "Code-Coverage" möglichst hoch ist. Ich verwende PEX in Zusammenarbeit mit NUnit. Von PEX lass ich mir die Test erzeugen und mit NUnit teste ich dann bis es funktioniert (TDD - Test driven design).

Bereich DB/ORM

Da gibts wirklich jede Menge Auswahl - fast soviel wie Sand am Meer ;) Ich arbeite gerne mit Objekten und deshalb verwende ich O/R-Mapper. Für kleinere Anwendungen verwende ich LINQ to SQL, vor allem wegen der Einfachheit. Das heißt jedoch nicht dass es nichts kann. Eher meine ich damit dass sehr zielführend die Datenbankstruktur in Klassen gemappt werden kann. Ähnlich wie LINQ to SQL ist das ADO.net Entity Framework. Das ist auch ein O/R-Mapper von Microsoft (und somit Bestandteil von .net 3.5 SP1) jedoch kann damit "alles" gemacht werden. In den meisten Fällen ist es (meiner Meinung nach) Overkill mit dem ADO.net EF zu arbeiten. Außerdem vertrete ich die Meinung dass ein guter Datenbankentwurf nicht durch komplett anderes Mapping auf Klassen zerstört werden soll.
Ich würde die Verwendung von LINQ to SQL empfehlen - es wird von Microsoft noch weiterentwickelt aber nicht mehr im selben Ausmaß wie dies der Fall vor Einführung des MS-internen Konkurreten ADO.net EF war.

Dependency Injection

Spring.net kenn ich nur vom Namen. Ich hab mir mein eigenes "Framework" dafür gebaut. Das hört sich aufwändig an ist es aber ganz und gar nicht. Einen Start wie das gehen kann zeigt Golo Rodens Blog. Es sind also nur ein paar Zeilen Code notwendig - natürlich kann das noch ausgebaut werden (hab ich auch gemacht ;)
Ich sehe den Vorteil im Eigenbau darin dass ich genau weiß was wann passiert. Es ist zwar ein wenig Zeit zu investieren aber diese muss auch in die Einarbeitung in DI-Framework investiert werden. Diese sind auch leider meist schlecht dokumentiert oder einfach Overkill.

Build/IDE/CI...Was hab ich vergessen bzw. sollte ich mir unbedingt ansehen?

Es gibt noch eine Menge Tools die das Arbeiten erleichtern. Eine Übersicht wird hier gezeigt.
Als eines der praktischsten Tool finde ich den Reflector. Mit dem ist möglich den Code anzuschauen. Dies kann hilfreich beim Verständnis wie was in .net funktioniert. Auch kann so viel von den Klassen welche im Framework vorhanden sind lernen.
Weiters finde ich den CLR-Profiler sehr nützlich um die Anwendung zu "profilieren" können.

Solltest du konkrete Fragen zu irgend was haben stell sie einfach hier bei codekicker ;)
13.08.2009
gfoidl 9,4k 3 5
-1
Welch Überraschung - das .net Framework ;)

Klar :)

Ich würde dir auch NUnit empfehlen, nicht nur wegen deiner Vorkenntnis sondern weil ich auch damit arbeite und es für sehr praktisch halte.

Gut, dann wird es wohl NUnit.

Interessant ist auch ein Blick auf PEX. Das ist ein Framework von Microsoft-Research das mit PUTs (parametrisierte Unit-Tests) arbeitet.

Werde mir PEX mal ansehen, hab immer noch das Problem dass ich die Site nicht geöffnet bekomme, muss ich das mit dem IE machen? ;)

D.h. anhand des zu testenden Codes werden die Eingangsparameter für den Unit-Test automatisch ermittelt so dass die "Code-Coverage" möglichst hoch ist. Ich verwende PEX in Zusammenarbeit mit NUnit. Von PEX lass ich mir die Test erzeugen und mit NUnit teste ich dann bis es funktioniert (TDD - Test driven design).

TDD ist 'ne super sache, allerdings bbin ich mir nicht ob du da TDD beschreibst ;)
In TDD werden die Tests vor den eigentlichen Klassen erstellt, u.a. auch für die sog. "Interface Discovery" (TDD is an design activity), wenn ich dich richtig verstanden habe generiert PEX Testfälle aus Klassen.
Da wir gerade bei TDD sind, gibt es ein gutes "Mock" Framework dass du empfehlen kannst?

Da gibts wirklich jede Menge Auswahl - fast soviel wie Sand am Meer ;) Ich arbeite gerne mit Objekten und deshalb verwende ich O/R-Mapper. Für kleinere Anwendungen verwende ich LINQ to SQL, vor allem wegen der Einfachheit. Das heißt jedoch nicht dass es nichts kann. Eher meine ich damit dass sehr zielführend die Datenbankstruktur in Klassen gemappt werden kann. Ähnlich wie LINQ to SQL ist das ADO.net Entity Framework. Das ist auch ein O/R-Mapper von Microsoft (und somit Bestandteil von .net 3.5 SP1) jedoch kann damit "alles" gemacht werden. In den meisten Fällen ist es (meiner Meinung nach) Overkill mit dem ADO.net EF zu arbeiten. Außerdem vertrete ich die Meinung dass ein guter Datenbankentwurf nicht durch komplett anderes Mapping auf Klassen zerstört werden soll.
Ich würde die Verwendung von LINQ to SQL empfehlen - es wird von Microsoft noch weiterentwickelt aber nicht mehr im selben Ausmaß wie dies der Fall vor Einführung des MS-internen Konkurreten ADO.net EF war.

Ok, dann setze ich Linq-to-Sql auf meine Liste, hab schon gelesen dass es in das ADO.NET EF eingegliedert werden sollte (bzw. wurde). Natürlich werde das ADO.NET EF auch unter die Lupe nehmen, scheint in Zukunft sehr wichtig zu sein.

Spring.net kenn ich nur vom Namen. Ich hab mir mein eigenes "Framework" dafür gebaut. Das hört sich aufwändig an ist es aber ganz und gar nicht. Einen Start wie das gehen kann zeigt Golo Rodens Blog. Es sind also nur ein paar Zeilen Code notwendig - natürlich kann das noch ausgebaut werden (hab ich auch gemacht ;)
Ich sehe den Vorteil im Eigenbau darin dass ich genau weiß was wann passiert. Es ist zwar ein wenig Zeit zu investieren aber diese muss auch in die Einarbeitung in DI-Framework investiert werden. Diese sind auch leider meist schlecht dokumentiert oder einfach Overkill.

Ok, werde mir den Blog mal reinziehen.

Es gibt noch eine Menge Tools die das Arbeiten erleichtern. Eine Übersicht wird hier gezeigt.
Als eines der praktischsten Tool finde ich den Reflector. Mit dem ist möglich den Code anzuschauen. Dies kann hilfreich beim Verständnis wie was in .net funktioniert. Auch kann so viel von den Klassen welche im Framework vorhanden sind lernen.
Weiters finde ich den CLR-Profiler sehr nützlich um die Anwendung zu "profilieren" können.

Solltest du konkrete Fragen zu irgend was haben stell sie einfach hier bei codekicker ;)

Danke für deine ausführliche & umfassende Antwort, werde sicherlich noch mehr Fragen zum Thema .NET haben :)

Ps: Wenn ich die Frage als gelöst markiere, bekomme ich dann noch weitere Antworten?
14.08.2009
maki 494 2 8
1
Klar. Falls du allerdings mehrere Fragen "aufsplitten" kannst, bietet es sich an eine neue Frage zu stellen.
Felix 14.08.2009
1
Die PEX-Site kann auch mit FireFox geöffnet werden. Dauerst nur lange - vermutlich hat MS kein Geld dem Research Center eine gute Verbindung zu gönnen ;)

Mocks sind bei NUnit dabei und auch bei PEX (dort gibt es mit Sutbs ein interessante Alternative).

TDD und PEX: PEX (bzw. der Wizard) braucht die Schnittstelle der Klasse (die Signaturen) um die Test erstellen zu können. Insofern hab ich TDD ein wenig anders interpretiert um mir die Vorteile von PEX nutzen zu können.
gfoidl 14.08.2009
-1
Danke und bis bald! :)
14.08.2009
maki 494 2 8
1
Viel Vergnügen - wenn du Fragen hast weißt du ja wo du die Antworten bekommst ;)
gfoidl 14.08.2009
1
Bitte Danksagungen das nächste Mal als Kommentar posten.
Sonst ausgezeichnetes Frage und Antwort. :)
Felix 15.08.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH