yudjin
|
|
« : 14-01-2011 10:58 » |
|
Пишу записку для диплома, подошел к архитектуре ПО. Только вот я очень далек от этого. Раньше архитектуру описывали как набор файлов в проекте (в курсовых, к примеру), но тут уже посерьезнее работа. В общем, наклепал вот такую вот схемку, и описываю ее как трехзввенную... А щас до меня доходит, что слои уровня "Сервисы" в общем-то могут быть разнесены, да и вообще могут выступать как промежуточные уровни. Значит ли это, что данную структуру нельзя назвать трехзвенной? На рисунке 4.1.1 представлена архитектура проектируемого приложения на высоком уровне, четко разделяющая ответственности (выявленные на этапе анализа задачи) между следующими компонентами: • слой доступа к данным - занимается только получением данных из БД, преобразованием в структуры данных, использующиеся в логике и службах, а также обновлением данных в БД; • слой логики сайта - взаимодействует со слоем доступа к данным, обрабатывает запросы; • WCF службы - обрабатывают запросы Silverlight-приложения, взаимодействуя со слоем доступа к данным; • silverlight-приложение – предоставляет пользователю картографическую и атрибутивную информацию о ресурсе с помощью REST API и SOAP API сервера ArcGIS Server.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #1 : 14-01-2011 11:42 » |
|
Классические трехуровневые архитектуры включают в себя уровень данных, уровень бизнес-логики и уровень представления. Клиенты в них не рассматриваются как отдельный уровень.
Если преподаватель начитался таких книжек, то может и придраться. Лучше уточнить у него, что он хотел бы видеть.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
RXL
|
|
« Ответ #2 : 14-01-2011 13:47 » |
|
Если представление реализуется на клиенте, то для этого случая схема верна.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dale
|
|
« Ответ #3 : 14-01-2011 23:06 » |
|
В заумных книжках принято уровень представления реализовывать на веб-сервере. Тонкий клиент не в счет, он в архитектуре приложения слоем не считается. Поэтому и рекомендую проконсультироваться с преподавателем при первой возможности. Всегда есть вероятность нарваться на такого, который будет побуквенно сравнивать с учебником. Причем чем дальше, тем эта вероятность выше.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Sla
|
|
« Ответ #4 : 15-01-2011 08:21 » |
|
А я бы не искал ответа. Если ты сам определил, что это трехзвенная структура, то строй под нее теорию. Диплом ведь твой. Кроме того можно построить теорию, что все можно свести к трехзвенной архитектуре.
Проект: Клиент - Сервис - Данные
Сервис:
Логика Доступ к БД WCF
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Chaa
|
|
« Ответ #5 : 21-01-2011 06:26 » |
|
В многозвенной архитектуре обычно подразумевается, что каждый слой может работать на отдельном компьютере. Если "слой доступа к данным" - это просто набор классов, который сам по себе не может работать, а только вместе с использующими его другими классами, то это не будет отдельным звеном.
А вообще у вас классическая трехзвенная архитектура. Сервер БД - сервер приложений - клиент. Причем на клиенте выполняется как минимум код Silverlight-приложения, так что он уже не совсем и тонкий.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #6 : 21-01-2011 07:32 » |
|
В многозвенной архитектуре обычно подразумевается, что каждый слой может работать на отдельном компьютере. Если "слой доступа к данным" - это просто набор классов, который сам по себе не может работать, а только вместе с использующими его другими классами, то это не будет отдельным звеном. Ни в коем разе. Отдельное звено - это не то, что работает на отдельной машине, а то, что достаточно инкапсулировано. Т.е. если набор классов можно очень просто превратить в, допустим, веб-сервис, и вынести на отдельную машину - это звено или слой (layer). Но это вовсе не означает, что оно обязано быть отдельным сервисом на отдельной машине. Речь скорее про логическую архитектуру, нежели про физическую.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Chaa
|
|
« Ответ #7 : 21-01-2011 07:51 » |
|
Речь скорее про логическую архитектуру, нежели про физическую.
В Visual C++ в MFC есть такая архитектура "документ/вид". В ней есть два логических слоя, один хранит и обрабатывает данные, другой их отображает. Но если написать на MFC калькулятор, то это не значит что он будет двухзвенным приложением. Под двухзвенным приложением обычно понимаются связка сервер БД - клиент. Звенья совершенно не обязательно должны работать на разных компьютерах, важно что они могут это делать.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #8 : 21-01-2011 09:10 » |
|
Chaa, не очень понимаю, ты пробуешь описать облако смыслов слова "архитектура"? Если да, то к фразам "обычно подразумевается" хорошо бы добавлять, кем подразумевается. Потому что в разных прикладных областях смыслы, конечно, разные.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
yudjin
|
|
« Ответ #9 : 21-01-2011 14:17 » |
|
Вот что я вложил в слово "Архитектура" (отчасти содрано у С. Макконнелла) "Архитектура - это высокоуровневая часть проекта приложения, каркас, состоящий из деталей проекта ... Продуманная архитектура предоставляет структуру, нужную для поддержания концептуальной целостности в масштабе системы. Она позволяет разделить работу на части, над которыми отдельные разработчики и группы могут трудиться независимо. Хорошая архитектура облегчает конструирование. Плохая архитектура делает его почти невозможным. " А вот структура, которую одобрил руководитель. Стрелки - потоки управления. Что интересно - руководитель наверное ни в жизни ничего не писал (всмысле кода), да и на всей кафедре (САПР) у нас только один дедушка читает С++ (зато очень недурно)... Это я к чему - восхищаюсь эрудированностью уходящего поколения преподователей...
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #10 : 21-01-2011 15:03 » |
|
yudjin, ну в общем с твоим пониманием слова "архитектура" я более-менее согласен.
Единственно что в моём представлении твоя "Логика сайта" это такая штука, которая в других местах называется Presentation Layer. В том смысле, что так называемой бизнес-логики (в общем случае независимой от представления логики или модели предметной области) там нету. Если же такая логика есть, то её разумно поместить между Data Layer и Presentation Layer, и вот тут возникает интересный вопрос о WCF-службах.
WCF-служба в Silverlight-приложении - это лишь серверная часть Presentation Layer (с учётом того, что именно они готовят данные в форматах, пригодных для binding во всякие элементы пользовательского интерфейса). И зачем так придумала Microsoft - не знаю. А по сути веб-сервисы по большей части относятся к модели предметной области. И я бы задачи форматирования данных для ввода/вывода возложил бы целиком на Silverlight-приложение. Microsoft так сделала видимо из-за того, что весь тот красивый GUI стал бы сильно тормозить.
При этом мне не очень понятна разница между WCF-службами и SOAP API, поскольку SOAP - это как раз кроссплатформенный протокол для веб-сервисов, который в том числе можно использовать внутри WCF-служб. По-моему в данном случае SOAP API - неадекватное название. Что такое REST API, ArcGIS и ArcSDE - не знаю, наверно что-нибудь с картами связанное.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
|