Я написав портал ASP.NET WebForms для клієнта. Проект розвивався, а не був належним чином спланований та структурований з самого початку. Отже, весь код з’єднується разом у межах одного проекту та без жодних шарів. Клієнт тепер задоволений функціоналом, тому я хотів би переробити код таким, що буду впевнено випускати проект. Оскільки, здається, існує багато різних способів проектування архітектури, я хотів би отримати декілька думок щодо найкращого підходу.
ФУНКЦІОНАЛЬНІСТЬ
Портал дозволяє адміністраторам налаштовувати шаблони HTML. Інші асоційовані "партнери" зможуть відображати ці шаблони, додавши на свій сайт код IFrame. У цих шаблонах клієнти можуть зареєструвати та придбати товари. API був реалізований за допомогою WCF, що дозволяє і зовнішнім компаніям взаємодіяти з системою. Розділ Адміністратор дозволяє адміністраторам налаштувати різні функціональні можливості та переглядати звіти для кожного партнера. Система розсилає клієнтам рахунки-фактури та повідомлення електронною поштою.
СУЧАСНА АРХІТЕКТУРА
В даний час використовується EF4 для читання / запису в базу даних. Об'єкти EF використовуються безпосередньо у файлах aspx. Це сприяло швидкому розвитку, поки я писав сайт, але, мабуть, неприйнятно тримати його таким, оскільки він щільно з’єднує db з інтерфейсом користувача. Конкретна бізнес-логіка додана до часткових класів об'єктів EF.
ЗАПИТАННЯ
Метою рефакторингу буде зробити сайт масштабованим, легкодоступним та безпечним.
Яка архітектура була б найкраща для цього? Опишіть, будь ласка, що має бути у кожному шарі, чи слід використовувати шаблон DTO / POCO / Active Record тощо.
Чи існує надійний спосіб автоматичної генерації DTO / BO, щоб будь-які майбутні удосконалення було легко здійснити, незважаючи на додаткові шари?
Чи було б вигідно перетворити проект з WebForms в MVC?