ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Статья:Правильный подход к проектированию ПО
  #1  
Старый 17.12.2009, 13:05
[NiGHT]DarkAngel
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме:
812087

Репутация: 129
По умолчанию Статья:Правильный подход к проектированию ПО

Правильный подход к проектированию ПО(часть 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. Рад буду слышать любую критику и пожелания. Посмотрел вроде такой статьи нет.
 
Ответить с цитированием

  #2  
Старый 17.12.2009, 13:45
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме:
3578578

Репутация: 275
Отправить сообщение для Forcer с помощью ICQ
По умолчанию

Слишком мало. Основная идея - четко разделять уровни приложения.

Цитата:
Переносить его с Web-приложения на Windows Forms
Может реально потребоваться такое? Есть примеры?

Цитата:
Она будет разбита на 4 проекта
именно проекты? просто уровни могут быть разделены четко и в одном проекте. Если все делать в разных проектах, то нужно тогда настраивать references между проектами, что, мне кажется, вызывает просто ненужные сложности.
Цитата:
Для примера возьмем самую простую функцию в программе «Регистрация пользователей»
Больше в статье не увидел ни одного обращения к этой "программе".

Цитата:
Стоит оговорить следующие зависимости(Reference):
Лучше показывать на диаграммах. http://yuml.me/

Я считаю, тебе самому нужно почитать больше литературы на тему проектирования. А вообще, тема интересная.
 
Ответить с цитированием

  #3  
Старый 17.12.2009, 13:53
[NiGHT]DarkAngel
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме:
812087

Репутация: 129
По умолчанию

Цитата:
Сообщение от Forcer  
Может реально потребоваться такое? Есть примеры?
WebMoney использование Windows приложения и Web-интерфейса

Цитата:
Сообщение от Forcer  
именно проекты? просто уровни могут быть разделены четко и в одном проекте. Если все делать в разных проектах, то нужно тогда настраивать references между проектами, что, мне кажется, вызывает просто ненужные сложности.
В одном проекте это не все так наглядно.
В чем сложность заключается? Добавить его в список?

Цитата:
Сообщение от Forcer  
Больше в статье не увидел ни одного обращения к этой "программе".
Сначало хотел пример привести с созданием такого приложения

Цитата:
Сообщение от Forcer  
Лучше показывать на диаграммах. http://yuml.me/
Спасибо,статья написана просто для примера,вдруг это никого не заинтересует ... исправлюсь в след. раз.


Цитата:
Сообщение от Forcer  
Я считаю, тебе самому нужно почитать больше литературы на тему проектирования.
Учиться никогда не поздно,принимаю как хорошую критику. Только в данном моменте, хотелось бы уточнить из-за чего такой вывод был сделал?


Цитата:
Сообщение от Forcer  
А вообще, тема интересная.
С этим согласен 100%
 
Ответить с цитированием

  #4  
Старый 17.12.2009, 14:29
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию

Цитата:
Сообщение от [NiGHT]DarkAngel  
Спасибо,статья написана просто для примера,вдруг это никого не заинтересует ... исправлюсь в след. раз.
Ну и зачем писать такие статьи "для примера" ?
Тем кто в этом разбирается - статья просто смешная. Для тех же кто не разбирается - слишком короткая и наивная ("Таким подходом мы смогли обеспечить легкую масштабируемость приложения").

Либо пиши действительно серьезные статьи (расмотрев например реализации MVC/MVP) либо пиши действительно примеры, с реальным кодом, модульностью, коментариями и т.д.
 
Ответить с цитированием

  #5  
Старый 17.12.2009, 14:38
[NiGHT]DarkAngel
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме:
812087

Репутация: 129
По умолчанию

Цитата:
Сообщение от Algol  
Ну и зачем писать такие статьи "для примера" ?
Тем кто в этом разбирается - статья просто смешная. Для тех же кто не разбирается - слишком короткая и наивная ("Таким подходом мы смогли обеспечить легкую масштабируемость приложения").

Либо пиши действительно серьезные статьи (расмотрев например реализации MVC/MVP) либо пиши действительно примеры, с реальным кодом, модульностью, коментариями и т.д.
Спасибо за критику, исправлюсь и дополню ее примером и диаграммами классов, Use Case диаграмм

Последний раз редактировалось [NiGHT]DarkAngel; 17.12.2009 в 14:56..
 
Ответить с цитированием

  #6  
Старый 17.12.2009, 14:57
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Блин, это не статья. Если ты пытался изобразить MVC, то вот посмотри примерно как выглядят статьи на эту тему:

http://www.rsdn.ru/article/patterns/...wPresenter.xml
http://www.rsdn.ru/article/patterns/generic-mvc.xml
http://www.rsdn.ru/article/patterns/generic-mvc2.xml
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 
Ответить с цитированием

  #7  
Старый 18.12.2009, 23:27
ss88
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме:
298300

Репутация: 128
Отправить сообщение для ss88 с помощью ICQ
По умолчанию

Очень интересная статья... Может кратость и сестра таланта, но не в этом случае.

Я не по-наслышке связан с архитектурой корпоративных информационных систем (КИС) и могу сказать лишь то, что такие статьи (что-то даже по объему на статью не тянет) лучше "убивать при рождении" или доводить до ХОТЬ КАКОГО-НИБУДЬ вида.

Цитата:
Поговорим о каждом из них в отдельности:
• Domain – В этом проекте хранится вся бизнес логика программы (Entity and Services)
• Infrastructure – В этом проекте хранятся все классы интерфейсов
• View – В этом проекте хранится тот вид отображения проекта который вы захотите (Windows Forms или Web Application)
• ViewModel – В этом проекте хранятся наши вспомогательные классы для связи Domain и View
1. В модель предметной области обычно входят ТОЛЬКО описания классов ПОНЯТИЙ и практически никакой бизнес-логики (например, в серьезных КИС в одних понятиях черт ногу сломит, что приводит к делению оных на отдельные пакеты и подпакеты).
2. Что-то типа мостового пакета Infrastructure.... Что за слово? Откуда оно? Кто здесь? Вы претендуете на роль законодателя мод? Спешу вас разочаровать, вы, по всей видимости, не Гамма, не Влиссидес, не Фаулер, не Бек и, в общем случае, не столп мирового масштаба в ОО-проектировании.

Цитата:
Domain видит Infrastructure
Отэта да... Карандаш знает все о всех бумажках в мире, на которых он может что-то написать....

В общем, можно продолжить и обхаять все до последней буквы в текущем варианте "статьи", но это утомительно. Можно сказать лишь то, что если вы придумали что-то, действительно стоящее, то опишите это как следует - с аргументацией, мотивацией, примерами, областью применения, известными применениями. Хорошим примером подобного оформления является классический фундаментальный труд Э. Гамма и Ко. "Приемы объектно-ориентированного проектирования...". Итого, ИМХО, пока УЖАСНО. Будем ждать продолжения.
 
Ответить с цитированием

  #8  
Старый 19.12.2009, 13:16
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

В институтах преподают целый предмет называемый "технология программирования". ИМХО прочтение курса лекций по нему гораздо полезнее чем прочтение этой статьи
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Телефонные шалости: хакерский подход к IP-телефонии [Dead]Demon Статьи 0 22.11.2009 16:03
Википедия меняет подход к редактированию статей AlexTheC0d3r Мировые новости 2 26.01.2009 20:24
Распаковка. Общий подход. taha Авторские статьи 0 22.11.2006 14:48
Faq по проектированию Cms k00p3r Обсуждение Ваших сайтов 0 09.08.2005 09:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ