<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-8864435396524375431.post5019734577216984188..comments</id><updated>2009-08-12T19:31:37.550+03:00</updated><title type='text'>Comments on Систематизация автоматизации: Hexagonal/Onion Architecture - слоим приложения</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://igor.quatrocode.com/feeds/5019734577216984188/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html'/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-6225815156389240647</id><published>2009-08-12T19:31:37.550+03:00</published><updated>2009-08-12T19:31:37.550+03:00</updated><title type='text'>Угу, текущий проект и использует эту архитектуру. ...</title><content type='html'>Угу, текущий проект и использует эту архитектуру. Ессно что иземенненное. Но суть именно такая.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/6225815156389240647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/6225815156389240647'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250094697550#c6225815156389240647' title=''/><author><name>Mike Chaliy</name><uri>http://chaliy.name/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4556812026267615953</id><published>2009-08-12T18:31:13.468+03:00</published><updated>2009-08-12T18:31:13.468+03:00</updated><title type='text'>Перечитал статьи по onion. Ок, теперь я понял смыс...</title><content type='html'>Перечитал статьи по onion. Ок, теперь я понял смысл и разобрался в том, что мне не очень нравилось. Автор говорит о физических зависоимостях, а не о логических.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Key tenets of Onion Architecture:&lt;br /&gt;&lt;br /&gt;    * The application is built around an independent object model&lt;br /&gt;    * Inner layers define interfaces.  Outer layers implement interfaces&lt;br /&gt;    * Direction of coupling is toward the center&lt;br /&gt;    * All application core code can be compiled and run separate from infrastructure&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ну, и стрелочек наружу в его диаграммах тоже нет, это сбивало с толку.&lt;br /&gt;&lt;br /&gt;Уже пробовали реализовать такую архитектуру в реальности?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4556812026267615953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4556812026267615953'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250091073468#c4556812026267615953' title=''/><author><name>Александр Кондуфоров</name><uri>http://www.blogger.com/profile/03000892844767433158</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4709572814149122848</id><published>2009-08-12T18:06:18.118+03:00</published><updated>2009-08-12T18:06:18.118+03:00</updated><title type='text'>Игорь: Что такое инфраструктура сохранения - не зн...</title><content type='html'>Игорь: Что такое инфраструктура сохранения - не знаю, я вроде бы такое не писал... Слой сохранения можно понимать как обычный DAL. В терминах DDD он же является инфраструктурой. В принципе, Миша внизу правильно расписал: реализацию репозитория можно отнести в эту самую инфраструктуру, контракты - выше, в BL/ядре. А вот места вызовов Add()/Get() у репозитория - это как раз то, о чем я спрашиваю.&lt;br /&gt;&lt;br /&gt;Когда BL использует DAL (обычная многослойная архитектура) - все понятно. Классы BL (те же Мишины MembershipService, ProductPublisher, StoreManager) вызывают через контракты заинжекченных репозиториев методы Add/Get у конкретных реализаций. Но как в случае с Onion? Согласно приведенной диаграмме и вашему описанию &lt;i&gt;&amp;quot;Другие модули выстраиваются вокруг ядра таким образом, чтобы их зависимости были направлены вовнутрь к ядру&amp;quot;&lt;/i&gt; и &lt;i&gt;&amp;quot;Зависимости в противоположную торону от ядра недопустимы&amp;quot;&lt;/i&gt;. Вот я и пытаюсь понять, каким образом мои репозитории вдруг будут зависеть от моего ядра? Скорее всего, подразумевается то, что написал Миша: &lt;i&gt;&amp;quot;Далее есть слой приложения (IMembershipService, IProductPublisher, IStoreManager). В него инжектяться репозитраии&amp;quot;&lt;/i&gt;. Но тогда диаграмма с Database и UI явно либо неверна, либо символична, потому что объективно UI (хотя бы в виде его контроллера) имеет зависимость на ядро, а вот Database, изображенный аналогично - нет.&lt;br /&gt;&lt;br /&gt;Миш, спасибо за описание. В принципе, я тоже это все именно так и понимаю, но тогда где-то в диаграмме и ее описание есть ошибка... Или, возможно, я просто чего-то недопонял :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4709572814149122848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4709572814149122848'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250089578118#c4709572814149122848' title=''/><author><name>Александр Кондуфоров</name><uri>http://www.blogger.com/profile/03000892844767433158</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2236337469479220754</id><published>2009-08-12T16:41:03.248+03:00</published><updated>2009-08-12T16:41:03.248+03:00</updated><title type='text'>Убрать слой сохранения. И все упрощаеться. 

Смотр...</title><content type='html'>Убрать слой сохранения. И все упрощаеться. &lt;br /&gt;&lt;br /&gt;Смотри по Игоря схеме есть модель(Domain Logic - шо за фигня?). В нее же входят и репозитраии. Точнее контракты репозитариев.&lt;br /&gt;&lt;br /&gt;Далее есть инфраструктура в ней есть реалзиации этих репозитариев.&lt;br /&gt;&lt;br /&gt;Далее есть слой приложения (IMembershipService, IProductPublisher, IStoreManager). В него инжектяться репозитраии.&lt;br /&gt;&lt;br /&gt;Тоесть фактически получаеться что нема слоев. Есть один большой модуль бизнеслогики (и небольшой хак ввиде заинжекченых реальных репозитареив да внешних сервисов).&lt;br /&gt;&lt;br /&gt;Как то плутано получилось ;(. Это проще кодом расказать.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/2236337469479220754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/2236337469479220754'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250084463248#c2236337469479220754' title=''/><author><name>Mike Chaliy</name><uri>http://chaliy.name/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-6193969699922762179</id><published>2009-08-12T16:26:44.980+03:00</published><updated>2009-08-12T16:26:44.980+03:00</updated><title type='text'>Что такое инфраструктура сохранения? Вызов методов...</title><content type='html'>Что такое инфраструктура сохранения? Вызов методов Add(...)/Get(...) у репозитория - это BL или инфраструктура в заданном вопросе?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/6193969699922762179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/6193969699922762179'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250083604980#c6193969699922762179' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17428314672741021655'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2276021325997911371</id><published>2009-08-12T13:17:05.212+03:00</published><updated>2009-08-12T13:17:05.212+03:00</updated><title type='text'>Миш, поправка принимается. В некотгорых местах, де...</title><content type='html'>Миш, поправка принимается. В некотгорых местах, де я писал про модель,  я понимал слойбизнес логики в целом. Надо быть точнее с терминами, но судя по твоему ответу мы поняли друг друга :)&lt;br /&gt;&lt;br /&gt;Согласно твоим словам, команду прочитать/сохранить данные отдает какой-то код отдельного слоя или контроллера MVC. По сути, это почти то же самое, что я писал, хотя и напутал, где модель, где BL/ядро :)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;quot;Логика подсказывает что здесь тоже может быть какой-нибудь &amp;quot;контроллер&amp;quot;, который позволит отделить данные от модели, так чтобы они ничего не знали друг о друге. Или, возможно, нужно реализовать какую-нибудь &amp;quot;логику приложения&amp;quot;, которая будет связывать модель с инфраструктурой. Кстати, здесь очень часто используются все те же контроллеры UI (MVC), но не уверен, что это правильно.&amp;quot;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;С контроллерами MVC все понятно, за исключением того, почему они вдруг что-то знают про сохранение модели. По идее, это не их дело, что там BL (ядро) делает с целью сохранения своего состояния. Мне кажется, что инфраструктурные вопросы ядра должно решать само ядро, которое должно быть сконфигурировано для этого соответствующим образом. Так вот интересно, как правильно реализовать вот это взаимодействие между BL/ядром и слоем сохранения. В терминах Onion, Hexagonal, DDD или чего угодно еще :) Спасибо!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/2276021325997911371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/2276021325997911371'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250072225212#c2276021325997911371' title=''/><author><name>Александр Кондуфоров</name><uri>http://www.blogger.com/profile/03000892844767433158</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-695483917537631539</id><published>2009-08-12T12:58:54.337+03:00</published><updated>2009-08-12T12:58:54.337+03:00</updated><title type='text'>Саша, привет.

Модель это набор сущностей, это не ...</title><content type='html'>Саша, привет.&lt;br /&gt;&lt;br /&gt;Модель это набор сущностей, это не набор оперций над сущностями. Поэтому не может модель управлять сохранением/чтением. &lt;br /&gt;&lt;br /&gt;Модель позволяет коду твоего приложения моделировать ситуации. Так например есть продукт и есть склад. Код приложения должен взять обьекты модели(тока приложение знает где их взять) и добавить продукт в склад. И после этого их сохранить.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В зависимости от потребностей код приложения может быть в отдельном слое(слой приложения) или в простых случая контроллер МВЦ.&lt;br /&gt;&lt;br /&gt;По идее так.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/695483917537631539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/695483917537631539'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250071134337#c695483917537631539' title=''/><author><name>Mike Chaliy</name><uri>http://chaliy.name/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-5895937846443131007</id><published>2009-08-12T12:09:57.350+03:00</published><updated>2009-08-12T12:09:57.350+03:00</updated><title type='text'>Игорь, спасибо за пост. Есть пара мыслей по этому ...</title><content type='html'>Игорь, спасибо за пост. Есть пара мыслей по этому поводу.&lt;br /&gt;&lt;br /&gt;Мне тоже нравится идея первоочередности доменной модели, а не базы данных. База данных, файловая система, внешние источники данных - это всего лишь слой сохранения, по сути, инфраструктура. И эта инфраструктура нужна нам лишь для того, чтобы где-то сохранять состояние нашей модели между запусками приложения или с целью обеспечения восстановления данных после возможного сбоя, а также оптимизировать использование памяти. В идеальной среде наше приложение могло бы вечно крутиться в памяти и держать свое состояние в памяти, но среда не идеальна...&lt;br /&gt;&lt;br /&gt;Так вот, к чему это я. UI зависит от состояния модели и вляет на него - это понятно. Сюда можно положить MVC или что-то другое. Контроллеры знают, что есть модель, UI не знает - все замечательно. Но как насчет инфраструктуры? Управляет ли модель своим сохранением или нет? Согласно Onion architecture - нет, потому что зависимости направлены внутрь ядра. В то же время очень часто ситуация обратная - как раз модель знает, что нужно пойти и сохранить свое состояние куда-нибудь, или пойти и получить его, материализовав объекты в памяти.&lt;br /&gt;&lt;br /&gt;Логика подсказывает что здесь тоже может быть какой-нибудь &amp;quot;контроллер&amp;quot;, который позволит отделить данные от модели, так чтобы они ничего не знали друг о друге. Или, возможно, нужно реализовать какую-нибудь &amp;quot;логику приложения&amp;quot;, которая будет связывать модель с инфраструктурой. Кстати, здесь очень часто используются все те же контроллеры UI, но не уверен, что это правильно. Так все же как это лучше реализовать?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/5895937846443131007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/5895937846443131007'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1250068197350#c5895937846443131007' title=''/><author><name>Александр Кондуфоров</name><uri>http://www.blogger.com/profile/03000892844767433158</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-795918898189426718</id><published>2009-07-18T09:15:19.098+03:00</published><updated>2009-07-18T09:15:19.098+03:00</updated><title type='text'>Можно. Но так было бы скучно резюмировать каждый в...</title><content type='html'>Можно. Но так было бы скучно резюмировать каждый второй пост :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/795918898189426718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/795918898189426718'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1247897719098#c795918898189426718' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17428314672741021655'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4741218069021247245</id><published>2009-07-18T09:06:45.172+03:00</published><updated>2009-07-18T09:06:45.172+03:00</updated><title type='text'>все эти мысли можно было резюмировать в low coupli...</title><content type='html'>все эти мысли можно было резюмировать в low coupling, high cohesion, не? :-)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4741218069021247245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/4741218069021247245'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1247897205172#c4741218069021247245' title=''/><author><name>Igor Katkov</name><uri>http://www.katkovonline.com/</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-3263409537621724561</id><published>2009-07-17T08:30:16.200+03:00</published><updated>2009-07-17T08:30:16.200+03:00</updated><title type='text'>DataMapper как бы ортогонален к рассматриваемой пр...</title><content type='html'>DataMapper как бы ортогонален к рассматриваемой проблеме. Например, на втором рисунке он &lt;i&gt;может&lt;/i&gt; использоваться (а может и нет) в классах SqlServerRepository. Точно так же в классах WebFormsController паттерн DataMapper может использоваться для преобразования данных из формата модели домена в формат, удобный для отображения.&lt;br /&gt;&lt;br /&gt;DataMapper - это всего лишь утилитка, которая знает, как данные в двух форматах соответствуют друг другу. Не более того. Не нужно его переоценивать.&lt;br /&gt; &lt;br /&gt;Но. Использование этого паттерна, условно говоря, там не обязательно. И его наличие либо отсутствие сути описанной проблемы не меняет.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/3263409537621724561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/3263409537621724561'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1247808616200#c3263409537621724561' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17428314672741021655'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-7447363830002821431</id><published>2009-07-16T01:06:35.417+03:00</published><updated>2009-07-16T01:06:35.417+03:00</updated><title type='text'>Спасибо, интересно.

Вообще говоря не согласен с п...</title><content type='html'>Спасибо, интересно.&lt;br /&gt;&lt;br /&gt;Вообще говоря не согласен с постанвкой вопроса&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Все бы хорошо, но данная схема подразумевает первичность базы данных. Ее разработка влияет на все остальные уровни. И в случае, если мы хотим смоделировать бизнес-логику, используя Domain Driven Design, это влияние будет столь значительным, что рано или поздно все попытки разработать полноценную модель скатятся в использование Active Record или Table Module, похоронив все дальнейшие попытки использования преимуществ возможностей богатой модели. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Как насчёт Data Mapper?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/7447363830002821431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/5019734577216984188/comments/default/7447363830002821431'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html?showComment=1247695595417#c7447363830002821431' title=''/><author><name>RedMacG</name><uri>http://www.blogger.com/profile/01207522829685056098</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/07/hexagonalonion-architecture.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-5019734577216984188' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/5019734577216984188' type='text/html'/></entry></feed>