[Edit=gfoidl] Das Thema wurde von Silverlight ListBoxItem.Tag abgetrennt. [/Edit]
Hallo,
was Florian vorhin geschrieben hat will ich nochmal aufgreifen. V.a. da ich irgendwie das Gefühl hab dass die ehemalige Winforms-Anwendung nur nach Silverlight portiert werden soll. Davon würde ich abraten. Es wird eine neue andere Technologie verwendet und da wärs auch ein gute Chance das Ganz mit einem weißen Blatt zu beginnen
Ob du nun die Bücher liest od. nicht ist sicher dir überlassen. Ich lese für diese Thematik keine Bücher, denn es gibt im WWW so viel Themen dazu. Diese müssen gefiltert und aggregiert werden. Ein gutes Buch liefert die Info pädagogisch aufbereit. Das kommt halt auf den Typ der Person darauf an was einem lieber ist.
Zuerst würd ich mir überlegen was der Benutzer haben will bzw. wie ist es am bedienungsfreundlichsten für ihn (-> Use Cases, ...)
Hier könnte ich mir einen Assistenten vorstellen der mich als Benutzer durch die Auswahl und Berechnung begleitet. Am Ende kann ich die Konfiguraiton abspeichern und mit anderen bereits gespeicherten Konfigs. vergleichen.
Wenn ich also erstmals weiß wie die Anwendung ausschauen soll - dabei ist noch keine einzige Zeile Code geschrieben worden - überleg ich wie und wo die Daten gespeichert werden sollen. Hier würde einen SQL Server (Express) auf dem Server haben wollen und zum Client mit dem XAP nur soviel wie unbedingt notwendig übertragen -> alles andere wird nachgeladen. Zum Nachladen brauch ich dann einen WCF-Wrappen um den DAL damit SL darauf zugreifen kann. So hab ich schon mal die Schichten und grob die Dienste der Anwendung definiert, aber immer noch keine Zeile Code geschrieben.
Dann modularisiere ich die Anzeige in Views wo jede für sich ein Aufgabengebiet hat und keine einzige View eine EierlegendeWollmilchSau ist. Sonst wird übersichtlich. Die MainPage der Anwendung lässt sich ja wunderbar als Views (UserControls) zusammensetzen. Immer noch kein Code geschrieben.
So nun habe ich die View(s) und den Datenzugriff. Dann gilts noch zu überlegen was zwischen beiden passiert. Ein klassischer BLL oder ein Muster der Art MVC, MVP, MVVM (sind alle irgendwie gleich). Hier würde ich eine Mischung von MVC und MVVM nehmen. Wenn das Model (die Daten) 1:1 von der Datenbank in die View kommen sollen ist kein ViewModel notwendig -> MVC. Andernfalls das ViewModel implementieren -> MVVM. Der Controler beim MVC ist beim MVVM in das ViewModel integriert. Wenn dich das verwirrt schau dir die Muster mal an.
Wenn dann alles entworfen ist nochmal prüfen ob passt und ggf. nachbessern. Dann gehts an coden. Erstmals die Schnittstellen definieren und dann gleich entsprechend der Spezifikation die (Unit-) Tests schreiben. Damit vergisst man dann kein Detail der Spezifikation zu implementieren da der Test "nicht grün" wird.
Sind alle Schnittstellen definiert kann ich in beliebiger Reihenfolge und unabhängig voneinander die einzelnene Teile ausprogrammieren und testen. Wenn alle Teile fertig sind gibts einen Integrationstest, usw.
Dabei spricht nichts dagegen bestimmte Teile der alten Anwendung zu übernehmen. Voraussetzung hierfür ist halt dass diese Teile der alten Anwendung korrekt nach den OOP-Paradigmen entwickelt worden sind. Mit imperativen Dingen geht nicht - das wird dann eine Flickerei und da wärs besser das gleich gekapselt, wiederverwendbar, ... kurz OOP zu machen.
Jetzt hoffe ich nur noch dass ich nichts wesentliches vergessen habe, denn wenn man es mal gewöhnt ist und das "instiktiv" funktinoiert ist es schwer das in Worten zu fassen
mfG Gü
Hallo,
was Florian vorhin geschrieben hat will ich nochmal aufgreifen. V.a. da ich irgendwie das Gefühl hab dass die ehemalige Winforms-Anwendung nur nach Silverlight portiert werden soll. Davon würde ich abraten. Es wird eine neue andere Technologie verwendet und da wärs auch ein gute Chance das Ganz mit einem weißen Blatt zu beginnen
Ob du nun die Bücher liest od. nicht ist sicher dir überlassen. Ich lese für diese Thematik keine Bücher, denn es gibt im WWW so viel Themen dazu. Diese müssen gefiltert und aggregiert werden. Ein gutes Buch liefert die Info pädagogisch aufbereit. Das kommt halt auf den Typ der Person darauf an was einem lieber ist.
Zuerst würd ich mir überlegen was der Benutzer haben will bzw. wie ist es am bedienungsfreundlichsten für ihn (-> Use Cases, ...)
Hier könnte ich mir einen Assistenten vorstellen der mich als Benutzer durch die Auswahl und Berechnung begleitet. Am Ende kann ich die Konfiguraiton abspeichern und mit anderen bereits gespeicherten Konfigs. vergleichen.
Wenn ich also erstmals weiß wie die Anwendung ausschauen soll - dabei ist noch keine einzige Zeile Code geschrieben worden - überleg ich wie und wo die Daten gespeichert werden sollen. Hier würde einen SQL Server (Express) auf dem Server haben wollen und zum Client mit dem XAP nur soviel wie unbedingt notwendig übertragen -> alles andere wird nachgeladen. Zum Nachladen brauch ich dann einen WCF-Wrappen um den DAL damit SL darauf zugreifen kann. So hab ich schon mal die Schichten und grob die Dienste der Anwendung definiert, aber immer noch keine Zeile Code geschrieben.
Dann modularisiere ich die Anzeige in Views wo jede für sich ein Aufgabengebiet hat und keine einzige View eine EierlegendeWollmilchSau ist. Sonst wird übersichtlich. Die MainPage der Anwendung lässt sich ja wunderbar als Views (UserControls) zusammensetzen. Immer noch kein Code geschrieben.
So nun habe ich die View(s) und den Datenzugriff. Dann gilts noch zu überlegen was zwischen beiden passiert. Ein klassischer BLL oder ein Muster der Art MVC, MVP, MVVM (sind alle irgendwie gleich). Hier würde ich eine Mischung von MVC und MVVM nehmen. Wenn das Model (die Daten) 1:1 von der Datenbank in die View kommen sollen ist kein ViewModel notwendig -> MVC. Andernfalls das ViewModel implementieren -> MVVM. Der Controler beim MVC ist beim MVVM in das ViewModel integriert. Wenn dich das verwirrt schau dir die Muster mal an.
Wenn dann alles entworfen ist nochmal prüfen ob passt und ggf. nachbessern. Dann gehts an coden. Erstmals die Schnittstellen definieren und dann gleich entsprechend der Spezifikation die (Unit-) Tests schreiben. Damit vergisst man dann kein Detail der Spezifikation zu implementieren da der Test "nicht grün" wird.
Sind alle Schnittstellen definiert kann ich in beliebiger Reihenfolge und unabhängig voneinander die einzelnene Teile ausprogrammieren und testen. Wenn alle Teile fertig sind gibts einen Integrationstest, usw.
Dabei spricht nichts dagegen bestimmte Teile der alten Anwendung zu übernehmen. Voraussetzung hierfür ist halt dass diese Teile der alten Anwendung korrekt nach den OOP-Paradigmen entwickelt worden sind. Mit imperativen Dingen geht nicht - das wird dann eine Flickerei und da wärs besser das gleich gekapselt, wiederverwendbar, ... kurz OOP zu machen.
Jetzt hoffe ich nur noch dass ich nichts wesentliches vergessen habe, denn wenn man es mal gewöhnt ist und das "instiktiv" funktinoiert ist es schwer das in Worten zu fassen
mfG Gü
Comment