Привет Всем!
Коллеги, помогите разобраться!
Я немного запутался в понятиях layer (слой) и tier (уровень) в представлении системной архитектуры.
Расскажу свое понимание этих терминов, а вы меня исправьте или дополните.
Оба подхода, как "расслоение" (layering) так и разделение по уровням (tiers) используется для декомпозиции системной архитектуры, но, как я понял, с разных точек зрения.
Слои применяются для группировки компонентов по некоторой функциональности (представление, бизнес-логика, доступ к данным).
Уровни используются при физической реализации (клиент - сервер - хранилище).
Получается, что часть слоя представления, например, может располагаться как на клиенте, так и на сервере.
1. Если мы реализуем "толстого" клиента, то представление на клиенте, если "тонкого", то на сервере.
2. Если это desktop приложение, то все слои реализованы на клиенте.
3. Часть логики слоя "доступ к данным" может быть реализована на сервере (например, Hibernate) или в хранилище (СУБД).
В дополнении ко всему, хочется заметить, что каждый уровень (tier) - это не обязательно один компьютер. Например, уровень сервер может быть развернут на одном и более компьютерах, хранилище тоже на нескольких.
+ Хотелось бы услышать какие диаграммы UML используются для представления данных концепций. Мне кажется, что это Component Diagram, Composite Structure Diagram, Deployment Diagram.