Napisałem portal ASP.NET WebForms dla klienta. Projekt ewoluował, a nie był właściwie planowany i konstruowany od samego początku. W rezultacie cały kod jest zgrupowany w ramach tego samego projektu i bez żadnych warstw. Klient jest teraz zadowolony z tej funkcjonalności, dlatego chciałbym zmienić kod tak, aby był pewny, że wydam projekt. Ponieważ wydaje się, że istnieje wiele różnych sposobów projektowania architektury, chciałbym uzyskać opinie na temat najlepszego podejścia.
FUNKCJONALNOŚĆ
Portal pozwala administratorom konfigurować szablony HTML. Inni powiązani „partnerzy” będą mogli wyświetlać te szablony, dodając kod IFrame do swojej witryny. W ramach tych szablonów klienci mogą rejestrować i kupować produkty. Interfejs API został zaimplementowany przy użyciu WCF, umożliwiając zewnętrznym firmom również komunikację z systemem. Sekcja administracyjna umożliwia administratorom konfigurowanie różnych funkcji i przeglądanie raportów dla każdego partnera. System wysyła faktury i powiadomienia e-mail do klientów.
AKTUALNA ARCHITEKTURA
Obecnie używa EF4 do odczytu / zapisu do bazy danych. Obiekty EF są używane bezpośrednio w plikach aspx. Ułatwiło to szybki rozwój podczas pisania strony, ale prawdopodobnie jest to niedopuszczalne, aby utrzymywać ją w ten sposób, ponieważ ściśle łączy ona db z interfejsem użytkownika. Do częściowych klas obiektów EF dodano określoną logikę biznesową.
PYTANIA
Celem refaktoryzacji będzie uczynienie witryny skalowalną, łatwą w utrzymaniu i bezpieczną.
Jaka architektura byłaby do tego najlepsza? Proszę opisać, co powinno znajdować się w każdej warstwie, czy powinienem użyć wzorca DTO / POCO / Active Record itp.
Czy istnieje solidny sposób na automatyczne generowanie DTO / BO, aby wszelkie przyszłe ulepszenia były łatwe do wdrożenia pomimo dodatkowych warstw?
Czy byłoby korzystne przekonwertowanie projektu z WebForms na MVC?