Archive for the ‘Java’ Category

Video.Show

Судя по всему это приложение писалось от силы неделю. Тем не менее здесь очень наглядный и простой дизайн.
BLL — обертка вокруг Data. Попытка фасада, но больше как просто обертка
Data — общается с базой, возвращает объекты из Model (автор и не называет это DAL-ом)
Model — объекты предметной области. Пустышки с одними свойствами и linq2sql классы.
VideoProcessingService — отдельный сервис по обработке видео
Web — веб-морда приложения

mojoportal

Довольно большая система. Чувствуется добротный old school.
mojoPortal.Business — объекты предметной области. Общаются с объектами из mojoPortal.Data.xxx, которые по сути являются репозиториями возвращающими IDataReader (в простонародье DAL). Здесь IDataReader последовательно считывается и возвращаются соответсвующие объекты.
mojoPortal.Business.WebHelpers — no comment
mojoPortal.Data.xxx — DAL. Интересно, что все проекты для разных баз имеют одни и те же namespace, в следствии чего из можно подменять просто меняя dll.
mojoPortal.Features.Business — то же что и mojoPortal.Business, только для блогов, календарей, форумов…
mojoPortal.Features.Data.xxx — здесь тоже понятно
mojoPortal.Features.UI — aspx блогов, форумов…
mojoPortal.Net — несколько классов для инфраструктурных вопросов по работе почты
mojoPortal.Web — веб-морда приложения

CommonLibrary.CMS

Чисто индусская CMS с огромный количеством кода. Зиждется на небезызвестном CommonLibrary.NET
CommonLibrary.CMS — веб-морда приложения. Все фичи/плагины/модули а-ля форумы, блоги… находятся здесь
CommonLibrary.CMS.Console — генерация классов для встроенного ORM-а
CommonLibrary.Web.Lib — контроллеры, ViewModel…
CommonLibrary.Web.Modules — объекты предметной области, конроллеры, сервисы, хелперы о_0
CommonLibrary — виновник торжества. Об этой библиотеке я писал ранее. Если коротко, то это огромное сборище велосипедов начиная от классов для работы с RSS и заканчивая почти настоящим ORM-ом. Просто куча классов, которые умеют что-то делать (здесь акцент идет именно на поведение, а не хранение данных).
В общем не самая образцовая архитектура, хотя почитать исходники было довольно интересно. Не понятно, почему дизайн такой сумбурный, потому что в блоге создателя CommonLibrary.CMS я нашел две типовые архитектуры

Typical Multi-Layer
Structure 1

  • Application.Core
  • Application.Data
  • Application.Service
  • Application.WebServices
  • Application.UI
  • Utilities
  • Utilities.Providers
  • Utilities.UnitTests
  • Appication.UnitTests

Modular ( Forums, Articles )
Structure 2

  • Application.Core
  • Application.Common
  • Application.Forums
  • Application.Articles
  • Application.CalendarEvents
  • Utilities
  • Utilities.Providers
  • Utilities.UnitTests
  • Application.UnitTests

Одну прикольную структуру я недавно рассматривал — это был MUD Designer. Там автор интуитивно хорошо все разделил на полезные абстракции, не зная терминов DDD. Почему интуитивно? Потому что зная хотя бы набор слов, который используется в предметной области самого DDD, можно смело выделять сущности, объекты, сервисы, репозитории, спецификации, иметь ограниченные контексты…

SmartCA

Автор так был впечатлен книгой Нильссона по DDD, что решил слабать прогу на эту тему и под шумок выпустить свою книгу, где больше половины занимает распечатанный код этой проги.
SmartCA.Application — содержит только UserSession
SmartCA.DataContracts — DTO
SmartCA.DataContracts.Helpers — no comment
SmartCA.Infrastructure — интерфейсы, транзакции, unit of work
SmartCA.Infrastructure.Membership
SmartCA.Infrastructure.Membership.Providers
SmartCA.Infrastructure.Repositories — репозитории
SmartCA.Infrastructure.Specifications — спецификации
SmartCA.Infrastructure.Synchronization — no comment
SmartCA.Infrastructure.UI — немного ViewModel и DelegateCommand
SmartCA.Model — святая святых, бизнес модель, правда некоторые классы засорены методами валидации. здесь же находятся сервисы, частично дублирующие API соотвествующих репозиториев.
SmartCA.Presentation — WPF
В общем все эти примеры DDD довольно наивные, но взглянуть на них конечно же стоит.

jforum

actions — что-то наподобии контроллеров из MVC. Что-то делают, а затем redirectToAction.
api — Used to execute code inside JForum environment (даже не разбирался)
core — несколько базовых классов: события, ошибки… Здесь же располагаются DAO классы реализующие соответствующие интерфейсы репозиториев (wtf).
entities — pojo-сущности. Правда являются отображение таблиц с соответствующей разметкой.
events — события, которые происходят с сущностями в различные моменты работы с БД
extensions
formatters — классы для BBCode
plugins — плагины, например, для поддержки тегов. Классы находятся полным набором: entity, dao, service, repository…
repository — интерфейсы репозиториев
security — правила доступа, разновидность спецификации
services — различные domain сервисы. Опять же частично дублируют API репозиториев
sso — классы для поддержки технологии Single Sign On
util — no comment
Код довольно добротный и использует целую плеяду технологий. Вообще Java программисты более искушенные в плане различных шаблонов и фреймворков.