ich bin zur Zeit mit der Aufgabe betreut, ein uraltes Delphi-Programm "in die neue Welt" zu portieren, sprich komplett neu zu schreiben.
Dabei handelt es sich um eine spezielle Kundenlösung die sich aus einer Standard-Software heraus über ein Jahrzehnt entwickelt hat (Delphi 3, Paradox-Datenbank). Es ist eine Art ERP-System mit dem alle Prozesse eines Reiseunternehmens unterstützt. Wir reden insgesamt über 500.000 Datensätze aller Art und bis zu 10 Usern.
Seit Jahren verfolge ich die Entwicklung unter .Net aus der Ferne und habe viel über WPF, MVVM, IOC, NHibernate, Prism, MEF, usw... gelesen und auch schon probiert. Vieles hat Vorteile, manches auch Nachteile
Die Frage die mich schon seit Wochen quält: Wie schreibt man eine solche Anwendung am Besten. Wir Komplex baut man die Anwendung ohne zu übertreiben und sich ins Akademische zu verlieren. Gerade WPF im Rahmen einer reinen Client-Anwendung (kein Browser) und MEF/Prism bei einer NICHT verteilten und wenigen Änderungen unterworfenen Anwendung erscheinen mir wie "mit Kanonen auf Spatzen zu schiessen...".
Könnt ihr mir "echte", ausgereifte Standard-Software nennen, die wirklich auf Bassis dieser Frameworks erstellt worden sind und sich am Markt durchgesetzt haben? Einfach nur um ein Gefühl zu bekommen wie sich diese dann am Ende anfühlen? (Usability, Geschwindigkeit, Wartbarkeit, ...)
Ich stand vor dem gleichen Problem und habe vieles ausprobiert. Für eine sinnvolle Lösung muss man die bisherige Anwendung analysieren und benötigt eine Roadmap für die neue Software. Irgendwann kam ich zu dem Entschluss, dass professionelle Hilfe von außen sinnvoll ist. Dafür gibt es auch einen Beruf und nennt sich Technologieberater ;o) Aus meiner Erfahrung kann ich nur sagen, dass dieser Entschluss sehr viel Zeit, Nerven und damit auch Geld gespart hat. Dieser Berater ist auch hier bei codekicker aktiv. Falls ich Werbung machen darf, nenne ich gerne seinen Namen.
Zum zweiten Teil deiner Frage verstehe ich nicht genau, was du mit "Standard"-Lösungen meinst.
Zu MEF kann ich noch sagen, dass nicht mit Kanonen auf Spatzen geschossen wird. MEF ist leicht zu erlernen, komfortabel im Einsatz und abstrahiert z.B. den BusinessLayer vom DataAccessLayer. Somit ist ein einfacher Austausch des Datenzugriffs gegeben.
Edit: Den SharePoint-Part habe ich aus meiner Antwort rausgenommen. Passt beim erneuten Durchlesen nicht hier rein.
"Standard"-Software: Eine Software die ohne Änderung an vielen Kunden der gleichen Branche (Reisebüros, Taxi-Betriebe, Bibiotheken, wasauchimmer...) ausgeliefert wird und die durch Customizing dann ggf. noch angepasst wird.
Sharepoint ist in WPF geschrieben? ok... Schauen wir mal wie's so aussieht.
Ja, MEF ist wahrscheinlich wirklich als OR-Mapper gesetzt.
Aber MVVM? IOC-Container? WPF?
Wie hast Du denn das letztendlich gelöst? Welche Frameworks hast Du eingesetzt?
Sharepoint ist soweit mir bekannt ist komplett in .NET geschrieben, welche UI-Technologie dahintersteckt weiß ich nicht. Da haben wir uns missverstanden. MEF ist KEIN OR-Mapper! http://msdn.microsoft.com/en-us/library/dd460648.aspx Ich setze folgendes von "oben" nach "unten" ein: Silverlight mit MVVM -> WCF -> BusinessLayer mit MEF -> DataAccessLayer mit EntityFramework. Das ergab sich aus den Produktanforderungen und kann auch ganz anders aussehen. Da spielen z.B. öffentliche Schnittstellen eine Rolle usw.
Als ich das letzte Mal mit Sharepoint zu tun hatte, basierte der UI-technisch auf ASP.NET. Ich glaube, grundsätzlich hat sich daran seitdem nichts geändert, auch wenn inzwischen wohl Unterstützung für Silverlight hinzugekommen ist. Was prinzipiell auch geht: eine eigene WPF-GUI auf die Sharepoint-APIs (-> Webservices) draufsetzen. Aber das ist hier ja nicht gemeint.
Andere Idee die auch nicht deine Frage beantwortet: Muss es denn wirklich .NET sein? Wenn sowieso schon viel Code in ObjectPascal vorliegt würde ich lieber diesen verbessern und auf neueren Stand bringen, als noch einmal von vorne anzufangen.
Habe ich natürlich auch schon in Erwägung gezogen und mir Delpxi XE2 angeschaut, aber ich wollte auch das Ganze nutzen um meine Fähigkeiten in C# deutlich zu erweitern...