Повертаючись до веб-форм ASP.Net від ASP.Net MVC. Рекомендувати шаблони / архітектури?


12

Для багатьох з вас це буде звучати як смішне запитання, але я запитую, оскільки у мене мало досвіду роботи з веб-формами ASP.Net - я перейшов прямо до ASP.Net MVC.

Зараз я працюю над проектом, де ми обмежені .Net 2.0 та Visual Studio 2005.

Мені сподобалося чітке розділення проблем при роботі з ASP.Net MVC, і я шукаю щось, щоб зробити веб-форми менш нестерпними. Чи є рекомендовані зразки або практики для людей, які віддають перевагу asp.net MVC, але вони застрягли в .net 2.0 та візуальній студії 2005?


Дякую за всі поради, хлопці - хочете, щоб я міг вибрати більше, ніж одну відповідь.
jlnorsworthy

1
Я сподіваюся, що ваше нове завдання стосується лише існуючого проекту, а не чогось, починаючи з нуля. Існує багато основних речей, від яких ви будете залежати від того, чого буде бракувати, наприклад використання Linq для простих запитів у колекціях. Основне розчарування виникне через перегляд створеного HTML-коду і переконання, що він не схожий на те, що ви очікували. Удачі, і я сподіваюсь, що ви успішні.
Кріс

Відповіді:


7

Я рекомендую модель Presenter Presenter (MVP). Ми використовували це в недавньому додатку WebForms, і це підвищило нашу перевірку і дозволило нам застосувати розділення проблем.

http://msdn.microsoft.com/en-us/magazine/cc188690.aspx - чудова стаття Жана Пола Бодху про цю модель; завантаження коду також добре. Ви можете виявити, що вам не потрібні DTO та інтерфейси для DTO.

Ще одна хороша стаття - це ця на codeproject.com: http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx

Редагувати: є також фреймворк з назвою WebForms MVP, але я не знаю багато про це.


Webvorms MVP виглядає дуже круто, але проект, здається, затримався (останній реліз у 07/10). Доступно не багато документації, ні навчальних посібників
jlnorsworthy

Також, здається, потрібен .NET 3.5 SP1, тому може бути не надто корисним для вас. Однак зразки та джерело можуть допомогти оцінити схему MVP.
Ciaran

Добре, я навіть цього не помічав. Я буду стежити за цим проектом, якщо мені доведеться робити веб-форми з компанією, яка має сучасні технології :)
jlnorsworthy

4

Я рекомендую вам зрозуміти життєвий цикл сторінки .net 2.0

Ці відео, можливо, варто переглянути, хоча не всі є безкоштовними, але, принаймні, це буде гарним початком для вас .... Справа в тому, що це дасть вам уявлення про те, що подальше дослідження пізніше.


3

Як ви, можливо, вже зараз зрозуміли, що вам потрібно буде вивчити пару речей, які ви дізналися з ASP.NET MVC (btw - те ж саме відбувається, коли людина ASP.NET заїжджає на навчання ASP.NET MVC). Ви все ще можете реалізувати MVC-шаблон в ASP.NET, але розділення View і Model дуже розмиті в ASP.NET через архітектуру подій / сторінок повідомлення назад.

На мою думку, більшість вашого нового навчання буде стосуватися життєвого циклу сторінки та подій та контролю. Звичайні взаємодії Session, Cache, ViewState та DB залишаються однаковими.

HTH ...


2

Оформлення схеми переднього контролера та реалізація переднього контролера в Asp.Net. Робіть ці речі лише в тому випадку, якщо ваш проект буде хорошого розміру. Якщо це зробити для невеликого проекту, це не виправдає рентабельність інвестицій.

У невеликому проекті ви можете спробувати встановити деякі вказівки. Наприклад - відсутність бізнес-логіки, без використання сеансу тощо у коді.

Подивіться, що найкраще підходить у вашому випадку. У будь-якому випадку тримайте спокусу зайнятися над інженерією.


0

Ще в темні дні .NET 1.1 я створив (напевно, як і всі) своєрідну систему MVC для додатка, який пройшов так.

Сторінка була створена як "фальшивий" майстер. Це мало сантехніку, щоб показати меню, сценарії, стилі тощо.

"Перегляди" були індивідуальними елементами управління користувачами.

Була таблиця з інформацією про кожен вид. Наприклад, "Продукт" завантажується ~/Controls/Product.ascxв заповнювач. У таблиці також було поле, яке містило назву типу класу моделі (як би). Кожна модель реалізувала відомий інтерфейс. Цей клас був ініційований за допомогою Activator.CreateInstance()і викликався ініціалізацією, а потім був переданий до самого управління (інверсія управління?). Потім управління викликало різні методи отримання наборів даних чи чогось іншого. Сам інтерфейс був нормалізований, щоб мати звичні методи CRUD (Read / Write / List / Delete). Під цим також був шар DAL / ORM.

Це було не красиво, але добре працювало. Тестувати та розвивати його було легко, і більшість розробників, які прийшли на борт, досить швидко впораються. Найбільше створити було порівняно просто.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.