[NiGHT]DarkAngel
17.12.2009, 13:05
Правильный подход к проектированию ПО(часть 1)
Введение
При разработке программного обеспечения мы не задумываемся о дальнейшей его судьбе. А что если:
• Придется масштабировать приложение
• Переносить его с Web-приложения на Windows Forms
Придется его полностью переписывать, заново строить архитектуру приложения, все это лишние трудозатраты. А ведь можно было просто изначально подумать над этим?
Вот отсюда и приходит тема этой статьи.
Начинаем проектировать
Для примера возьмем самую простую функцию в программе «Регистрация пользователей»
Она будет разбита на 4 проекта: Domain, Infrastructure,View и ViewModel
Поговорим о каждом из них в отдельности:
• Domain – В этом проекте хранится вся бизнес логика программы (Entity and Services)
• Infrastructure – В этом проекте хранятся все классы интерфейсов
• View – В этом проекте хранится тот вид отображения проекта который вы захотите (Windows Forms или Web Application)
• ViewModel – В этом проекте хранятся наши вспомогательные классы для связи Domain и View
Стоит оговорить следующие зависимости(Reference):
• Domain видит Infrastructure
• ViewModel видит Domain
• View видит ViewModel, Infrastructure
В Domain существуют две папки Entity и Service
Теперь можно писать приложения все сущности складываются в Entity, все необходимые операции с ними в Service.
Во ViewModel складываются классы-прослойки, которые получают на вход данные, передают их на обработку сервисам, сервисы возвращают какой-то результат во ViewModel, а она возвращает View что сервис отработан успешно или нет и View выводит только результатирующие сообщение.
Вывод
Таким подходом мы смогли обеспечить легкую масштабируемость приложения, легкое внедрение новых сервисов для вашего приложения и безболезненный переход от Web Application на Windows Forms и обратно.
От автора
Это моя первая статья, если эта тема интересна, могу продолжить развития цикла статей, с подключением репозиториев при разработке,O/R NHibernate, и примерами подкрепленными кодом.
Пример ориентирован на C# и ASP.NET
P.S. Рад буду слышать любую критику и пожелания. Посмотрел вроде такой статьи нет.
Введение
При разработке программного обеспечения мы не задумываемся о дальнейшей его судьбе. А что если:
• Придется масштабировать приложение
• Переносить его с Web-приложения на Windows Forms
Придется его полностью переписывать, заново строить архитектуру приложения, все это лишние трудозатраты. А ведь можно было просто изначально подумать над этим?
Вот отсюда и приходит тема этой статьи.
Начинаем проектировать
Для примера возьмем самую простую функцию в программе «Регистрация пользователей»
Она будет разбита на 4 проекта: Domain, Infrastructure,View и ViewModel
Поговорим о каждом из них в отдельности:
• Domain – В этом проекте хранится вся бизнес логика программы (Entity and Services)
• Infrastructure – В этом проекте хранятся все классы интерфейсов
• View – В этом проекте хранится тот вид отображения проекта который вы захотите (Windows Forms или Web Application)
• ViewModel – В этом проекте хранятся наши вспомогательные классы для связи Domain и View
Стоит оговорить следующие зависимости(Reference):
• Domain видит Infrastructure
• ViewModel видит Domain
• View видит ViewModel, Infrastructure
В Domain существуют две папки Entity и Service
Теперь можно писать приложения все сущности складываются в Entity, все необходимые операции с ними в Service.
Во ViewModel складываются классы-прослойки, которые получают на вход данные, передают их на обработку сервисам, сервисы возвращают какой-то результат во ViewModel, а она возвращает View что сервис отработан успешно или нет и View выводит только результатирующие сообщение.
Вывод
Таким подходом мы смогли обеспечить легкую масштабируемость приложения, легкое внедрение новых сервисов для вашего приложения и безболезненный переход от Web Application на Windows Forms и обратно.
От автора
Это моя первая статья, если эта тема интересна, могу продолжить развития цикла статей, с подключением репозиториев при разработке,O/R NHibernate, и примерами подкрепленными кодом.
Пример ориентирован на C# и ASP.NET
P.S. Рад буду слышать любую критику и пожелания. Посмотрел вроде такой статьи нет.