Многослойная (N-tiers) архитектура

Концептуальных слоев в автоматизированной информационной системе всегда три: хранения данных, их обработки и отображения. А вот физических, их реализующих, может быть от одного (настольное приложение с индексированным файловым хранилищем) до бесконечности...

Так вот, сложилось устойчивое мнение, что огород из нескольких физических уровней городится не потому, что это надо, а потому что какой-то "гуру" сказал. В итоге между экраном конечного пользователя и запрашиваемыми им данными образуется нехилая прослойка, которая на 90% занята перекачиванием исходной информации из одного формата представления в другой: бесконечные сериализации и десереализации, передача XML, дергание за веб-службы... С учетом, например, обновления части экрана по изменению каких-то данных в другой его части эти мытарства умножаются в разы. Растет время отклика системы. Пользователь нервничает и справедливо обвиняет в этом программистов.

Прежде чем городить огород честно задайте себе вопрос: для чего нужен вот этот данный конкретный слой. Скажем, слой WCF для доступа к объектам может быть нужен, если ваш клиент "умный" и "толстый", но работать нужно только по HTTP. А если это приложение ASP.Net, то поищите пути сократить путь (тавтология) информации от источника к пользователю и обратно.

В конце концов, архитектура служит для эффективной реализации системы, а не для вовлечения в команду очередной партии "троешников" на добавляемый слой для освоения бюджета.

И еще. Подход разработки "от модели" позволяет генерировать все эти слои бездельников без участия человека.

Комментарии

Изображение пользователя ipanshin.

Все мы когда-то

Все мы когда-то были бездельниками и, как из рога, изобилия писали именно эти слои. Сейчас сложность состоит в том, что в одном слое проработано одно, во втором - другое и нет единого слоя, где все правильно учтено. А хочется иметь все под рукой.:) Пишут софт молодые, а проект ведут еще моложе. Для них ХМЛ - это панацея, потому что понятно. А скажем, если я постулирую тезис, что все можно передавать одним числом, то сразу возникнут вопли. И потом, куда спрашивается денутся эти бездельники, о которых идет речь? Неужели пойдут пахать и сеять? Уже никогда. Лучше смерть.:)

Изображение пользователя Serguei_Tarassov.

Единый "слой"

Единый "слой" есть, называется "модель". От нее можно сгенерировать все эти слои: полностью или частично. Но тут возникают 2 проблемы:
1. Куда деть бездельников ? Ведь придет клиент с более-менее крупным заказом, увидит маленький штат разработчиков и подумает: несолидно и рискованно.
2. Для работы на уровне модели нужен более высокий же уровень знаний. Как у твердого "хорошиста". А такие работники встречаются реже, ими сложнее управлять и стимулировать.

Изображение пользователя ipanshin.

Завтра

Завтра появятся такие же "бездельники" на уровне "модели", которые были "хорошисты". И потом утверждение, что "модель" включает в себя "все" вызывает сомнение. Само по себе слово "модель" - это нечто приблизительно описывающее то, что мы исследуем. На данном уровне она удовлетворяет, но завтра будет тесна и усложнена. Зачем называть единый или более толстый слой моделью?

Изображение пользователя Serguei_Tarassov.

Массово не появятся

Массово не появятся, это уровень ведущего инженера. "Хорошист" бывшим не бывает, пропорция распределения от "двоешников" до "отличников" не меняется. Модель(и) - не слой, а надстоящий, более высокий уровень абстракции. Позволяюший этими слоями управлять.

Изображение пользователя ipanshin.

Прошу дать

Прошу дать определение модели. То есть, чем более ты абстрагируешься, тем получаешь более длинную цепочку "модель модели модели модели ..."
Боюсь, что понятие "модель" программисты украли у физиков.

Изображение пользователя Serguei_Tarassov.

Модель

"А" является моделью "Б" если "А" отвечает на вопросы о "Б"

Изображение пользователя ipanshin.

То есть, если Я

То есть, если Я отвечаю на вопросы о "Б", то я являюсь моделью "Б"?
Не согласен.
Для того, чтобы говорить о модели необходимо ввести критерий оценки точности или приближения или точности соответствия.

Изображение пользователя Serguei_Tarassov.

Не являешься

Не являешься. "А" и "Б" - объекты, а "Я" - субъект. Хотя если из тебя субьектность вынуть, то получится, например, неплохая анатомическая модель ;)

Точность - вопрос десятый, зависящий от области применения модели, то есть от круга вопросов, которые можно задать "А" о "Б". Например, пустая консервная банка является моделью корабля тяжелее воды, обьясняющая, почему же он все-таки не тонет, а плавает.

Изображение пользователя ipanshin.

Разве может

Разве может кто-то вынуть из меня субъектность, если он ее туда не вкладывал?:)
Я же просто просил дать определение модели. Из вышесказанного определением не является следующее утверждение: "если А отвечает на вопросы о Б, то она модель".

Изображение пользователя Serguei_Tarassov.

Все верно

Все верно, только "А" - обьект. Он отвечает, не внося субьективности. Иначе получается неадекватная модель, которой вынуждены пользоваться психотерапевты за неимением ;)

Изображение пользователя ipanshin.

НОСИТЕЛЬ

НОСИТЕЛЬ ЗНАНИЙ - ЭТО СУБЪЕКТ.
Ты дал определение субъекта, который может построить любую модель. В этом то весь фокус. Применительно к проектированию баз данных или знаний к ним необходимо относиться как к субъекту. Точнее к СУБДъекту.:)

Изображение пользователя Serguei_Tarassov.

Обьект - не носитель знаний

Обьект - не носитель знаний в означенном тобой смысле (в другом, переносном смысле - носитель, но информации, как книга, например). В определении речь идет об обьектах. Может обьект "А" ответить субьекту на вопрос о "Б" - значит это модель. Не может - не модель.