<?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.comments</id><updated>2011-09-21T15:08:37.365+03:00</updated><category term='SOLID'/><category term='LINQ'/><category term='Domain Driven Design'/><category term='jQuery'/><category term='Architecture'/><category term='REST'/><category term='OOD'/><category term='community'/><category term='IIS'/><category term='SOA'/><category term='Microsoft SQL Server'/><category term='ASP.NET'/><category term='TDD'/><category term='Agile'/><category term='WCF'/><category term='DSL'/><category term='Scrum'/><category term='Nemerle'/><category term='memcached'/><category term='NHibernate'/><category term='Patterns'/><category term='DDD'/><category term='ADO.NET Data Services'/><category term='distributed memory object caching system'/><category term='Defensive Programming'/><category term='kievaltnet'/><category term='Интеграция приложений'/><title type='text'>Систематизация автоматизации</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://igor.quatrocode.com/feeds/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/comments/default'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/comments/default?start-index=26&amp;max-results=25'/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>86</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1072007889853425039</id><published>2011-09-20T23:02:23.177+03:00</published><updated>2011-09-20T23:02:23.177+03:00</updated><title type='text'>Ну и YAGNI конечно</title><content type='html'>Ну и YAGNI конечно</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1072007889853425039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1072007889853425039'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1316548943177#c1072007889853425039' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1957938911982646253</id><published>2011-09-20T23:01:09.927+03:00</published><updated>2011-09-20T23:01:09.927+03:00</updated><title type='text'>Как учебный пример, может и нет. Но в качестве при...</title><content type='html'>Как учебный пример, может и нет. Но в качестве примера боевого коде - why not, вполне. Главное, не забывать про DRY и KISS при этом :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1957938911982646253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1957938911982646253'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1316548869927#c1957938911982646253' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4314589601216697018</id><published>2011-09-20T18:33:08.227+03:00</published><updated>2011-09-20T18:33:08.227+03:00</updated><title type='text'>Спасибо за ответ :)
Я понимаю, что нужно использов...</title><content type='html'>Спасибо за ответ :)&lt;br /&gt;Я понимаю, что нужно использовать эти принципы с самого начала проектирования системы. Я сейчас тренируюсь в agile-разработке, и, соответственно, применяю все этапы проектирования: диаграммы, потом тесты, а потом уже код. И это буквально &amp;quot;вынуждает&amp;quot; писать гибкий код, используя все эти архитектурные принципы.&lt;br /&gt;Это я к тому, что часто бывает так: спроектированная поначалу бизнес-сущность выглядит как один модуль, а на этапе кодирования приходится разделять ее на несколько более мелких. Опять же, следуя принципу SRP. &lt;br /&gt;Пример, который я приводил в комментарии выше, является хорошим приемом организации SRP на уровне кодирования?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/4314589601216697018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/4314589601216697018'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1316532788227#c4314589601216697018' title=''/><author><name>IFeelGood</name><uri>http://alekseev74.ru</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1645973403'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-5168115733749118561</id><published>2011-09-20T12:33:07.434+03:00</published><updated>2011-09-20T12:33:07.434+03:00</updated><title type='text'>IFeelGood,

Слово &amp;quot;макстимально&amp;quot; тут лиш...</title><content type='html'>IFeelGood,&lt;br /&gt;&lt;br /&gt;Слово &amp;quot;макстимально&amp;quot; тут лишнее. Что чрезмерно - то не здраво, и использование принципов ради принципов не дает хорошего результата. Добавление вороха лишних абстракций разделит обязанности, но привнесет дополнительную сложность, с которой вам придется бороться с куда большим усердием, чем с, о боже, реализацией active record :)&lt;br /&gt;&lt;br /&gt;Для оценки качества исполнения принципа SRP могу порекомендовать попытаться сформулировать обязанности класса обычным человеческим языком. Если если получается средних размеров повесть, значит все плохо :) В идеале все должно вписываться в одном предложение.&lt;br /&gt;&lt;br /&gt;Кроме того, никоим образом эти принципы не рулят правилами организации приватных внутренностей классов. Тут уже каждый сам для себя решает что и как делать, главное, чтобы снаружи все вело себя предсказуемо, а зависимая логика может быть и спрятана, и заведена снаружи в виде неких дополнительных компонентов. Подумайте о том, как бы будете тестировать эту логику - это тоже поможет все грамотно раздедить.&lt;br /&gt;&lt;br /&gt;Ну и последнее: штука в том, что сами по себе синтаксические конструкции со словом class в начале не всегда соответствуют логическому понятию класса объектов. Код - это достаточно низкий уровень дизайна системы из за бедности современных языков программирования. Классический пример - понятия agregate roots и entities в сравнениии  с value objects в паттернах DDD: единственная точка входа в логику - это корень агрегата, который за собой может прятать с десяток других классов, но вместе образовывать тот самый единый класс в терминах теории ООП. Или взять тот же aggregate root, но реализованый в виде event source-а. Т.е. к этому агрегату добавляется еще пачка связанных событий и какой-то странный код по их обработке. В квадратиках все выглядит очень просто, но в коде получается куча синтаксического мусора. Кроме того, даже такие высокоуровневые логические понятия, как агрегаты тоже могут составлять конструкции еще более высоких уровней - домены логики, модули систем и т.д.&lt;br /&gt;&lt;br /&gt;Все это к тому, что не стоит рассматривать эти архитектурные принципы исключительно на уровне правил кодирования некой логики в виде каких-то конкретных языковых конструкций какого-то конкретного языка программирования, которые по странному стечению обстоятельств поддерживают понятие интерфейсов и прочих приватных методов. Пользуйтесь ими на всех уровнях дизайна вашей системы, и тогда в этом действительно будет смысл.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/5168115733749118561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/5168115733749118561'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1316511187434#c5168115733749118561' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-3121369336740356601</id><published>2011-09-20T11:33:29.842+03:00</published><updated>2011-09-20T11:33:29.842+03:00</updated><title type='text'>Вопрос по принципу SRP (хочется уточнить, правильн...</title><content type='html'>Вопрос по принципу SRP (хочется уточнить, правильно ли я понимаю принцип?):&lt;br /&gt;Нужно максимально стремиться специализировать класс, например, отделить бизнес-логику от сохранения данных в БД.&lt;br /&gt;Также следует специализировать все открытые методы класса, которые составляют его интерфейс. Например, метод: int CalculateDiscount(int price) - вычисляет скидку и ничего более.&lt;br /&gt;Если же для успешной реализации такого метода требуется дополнительная бизнес-логика, то ее нужно вынести в отдельные вспомогательные private-методы, которые не являются открытым интерфейсом класса.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/3121369336740356601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/3121369336740356601'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1316507609842#c3121369336740356601' title=''/><author><name>IFeelGood</name><uri>http://alekseev74.ru</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1135359056'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4798563214701603729</id><published>2011-01-09T21:15:22.848+02:00</published><updated>2011-01-09T21:15:22.848+02:00</updated><title type='text'>&amp;quot;Но откуда-то из вашего кода начинает нести о...</title><content type='html'>&amp;quot;Но откуда-то из вашего кода начинает нести отборным code smell&amp;quot; класс, поржал, спасибо :)))</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/6257099153777787324/comments/default/4798563214701603729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/6257099153777787324/comments/default/4798563214701603729'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/10/command-query-separation.html?showComment=1294600522848#c4798563214701603729' title=''/><author><name>Вов4ик</name><uri>http://www.blogger.com/profile/06244183836973191364</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06677947658358846888'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://4.bp.blogspot.com/_Jf9NA2Jcb1M/TOb2B6z0AQI/AAAAAAAABmQ/bg1atBhF14I/S220/IMG_2872_2.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/10/command-query-separation.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-6257099153777787324' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/6257099153777787324' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1561360180'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-8826024115977595234</id><published>2010-12-21T15:46:59.095+02:00</published><updated>2010-12-21T15:46:59.095+02:00</updated><title type='text'>В Nemerle есть implicit match , можно писать так:
...</title><content type='html'>В Nemerle есть implicit match , можно писать так:&lt;br /&gt;def qs(l)&lt;br /&gt;{&lt;br /&gt; | [] &amp;gt; []&lt;br /&gt; | x :: xs =&amp;gt; ...&lt;br /&gt;}</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/2583215847849218680/comments/default/8826024115977595234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/2583215847849218680/comments/default/8826024115977595234'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2007/03/nemerle.html?showComment=1292939219095#c8826024115977595234' title=''/><author><name>NN</name><uri>http://nn1234.wordpress.com/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2007/03/nemerle.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-2583215847849218680' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/2583215847849218680' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1301523071'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-5828524532031543556</id><published>2010-12-01T11:33:36.471+02:00</published><updated>2010-12-01T11:33:36.471+02:00</updated><title type='text'>Спасибо за статью.</title><content type='html'>Спасибо за статью.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/5828524532031543556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/5828524532031543556'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1291196016471#c5828524532031543556' title=''/><author><name>Макс</name><uri>http://www.blogger.com/profile/05019676306636366465</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_beg7LplsYfo/S6pOtAMNywI/AAAAAAAAAAs/1BXrDy9pQs0/S220/DSC_7827_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82_%D1%82%D0%BE%D0%BD_very_small.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1543727553'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2408018745227499607</id><published>2010-11-24T18:24:06.265+02:00</published><updated>2010-11-24T18:24:06.265+02:00</updated><title type='text'>Странная у Вас на сайте дата:
Latest update: 27.10...</title><content type='html'>Странная у Вас на сайте дата:&lt;br /&gt;Latest update: 27.10.2008</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/714155291523962503/comments/default/2408018745227499607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/714155291523962503/comments/default/2408018745227499607'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/01/blog-post.html?showComment=1290615846265#c2408018745227499607' title=''/><author><name>Excelan</name><uri>http://www.blogger.com/profile/14480173435418146715</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/01/blog-post.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-714155291523962503' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/714155291523962503' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2009908389'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1887258566677349425</id><published>2010-08-31T20:53:28.256+03:00</published><updated>2010-08-31T20:53:28.256+03:00</updated><title type='text'>Прочитал с огромным интересом почти весь блог, а в...</title><content type='html'>Прочитал с огромным интересом почти весь блог, а в этой серии, ещё не дочитав первый пост, понял, что в эту архитектуру идеально вписывается CoushDB. Она хранит все данные в общей куче (одна база данных - одно B-дерево) в виде (по крайней мере внешне, со стороны потребителя) пар &amp;quot;идентификатор&amp;quot;-&amp;gt;&amp;quot;JSON сериализация объекта, включая вложенные (списки и т. п., в общем дерево целиком, а не только его корень)&amp;quot;, при этом эту сериализацию она понимает и позволяет искать по значению свойств. Основной механизм получения данных - или &amp;quot;GetById&amp;quot;, или так называемые View (JavaScript функции с активным использованием map/reduce функций, индексы для которых обновляются при каждой операции). &amp;quot;Бесплатные плюшки&amp;quot; - встроенная по дефолту версионность, репликации, вертикальная масштабируемость, простой REST интерфейс. Кого заинтересовалo CQS - настоятельно рекомендую попробовать CouchDB.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1887258566677349425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1887258566677349425'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1283277208256#c1887258566677349425' title=''/><author><name>VolCh</name><uri>http://www.blogger.com/profile/14720723091591171804</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15095931755943638080'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-777530450'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-6800925725221083346</id><published>2010-07-16T15:48:03.712+03:00</published><updated>2010-07-16T15:48:03.712+03:00</updated><title type='text'>Statji super! Avtor Molodez! nu ochenj interessno....</title><content type='html'>Statji super! Avtor Molodez! nu ochenj interessno.&lt;br /&gt;no! ne izabretaete li Vi velosiped? zachem tak slogno? moget validation ne ochne horoshij primer dlja primenenija DSL? nu ne budu ja vremja tratitj chtobi delatj vse tak universalno. dumaju eto prosto lishnee. privedite pogalusta drugie primeri oblasti primenenija DSL. nikogda s etim ne rabotal i ne znaju kak i s chego nachatj i nugno li mne eto v moih projektah. Ogromnoe Spasibo za statji i za otveti! Vsego Vam nailuchego!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/671594879807124430/comments/default/6800925725221083346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/671594879807124430/comments/default/6800925725221083346'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/12/dsl-jquery.html?showComment=1279284483712#c6800925725221083346' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/12/dsl-jquery.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-671594879807124430' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/671594879807124430' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-935818796'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4840684248234147040</id><published>2010-04-20T16:11:13.880+03:00</published><updated>2010-04-20T16:11:13.880+03:00</updated><title type='text'>Thanks! Good job.</title><content type='html'>Thanks! Good job.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/4840684248234147040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/4840684248234147040'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1271769073880#c4840684248234147040' title=''/><author><name>Denis</name><uri>http://www.blogger.com/profile/12932490740723886910</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_O9n7PKwY_2o/S6M3xIzuy-I/AAAAAAAAFQ8/GZOyWVxHyIU/s1600-R/image%3Fid%3D128341'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-307633747'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1311577682521545105</id><published>2010-04-12T13:27:59.999+03:00</published><updated>2010-04-12T13:27:59.999+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/1670039962737219947/comments/default/1311577682521545105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1311577682521545105'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1271068079999#c1311577682521545105' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1185835611860940609</id><published>2010-04-12T13:11:54.155+03:00</published><updated>2010-04-12T13:11:54.155+03:00</updated><title type='text'>Поправьте, пожалуйста:
Принцип замещения Лисков:
....</title><content type='html'>Поправьте, пожалуйста:&lt;br /&gt;Принцип замещения Лисков:&lt;br /&gt;...поведение P не будет меняться, если o1 заменить на o2.&lt;br /&gt;вы перепутали о1 и о2 местами, &lt;br /&gt;и для понимания будет лучше, если, как в Википедии, объекты типа (Type) и подтипа (Subtype) обозначить oT и oS соответственно.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1185835611860940609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/1185835611860940609'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1271067114155#c1185835611860940609' title=''/><author><name>Anatoly R.</name><uri>http://www.blogger.com/profile/13910100045749886568</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1021479550'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1600994960937971715</id><published>2009-12-21T09:50:02.749+02:00</published><updated>2009-12-21T09:50:02.749+02:00</updated><title type='text'>Не работает на Guid, DateTime</title><content type='html'>Не работает на Guid, DateTime</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3519748017927946430/comments/default/1600994960937971715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3519748017927946430/comments/default/1600994960937971715'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/expression-tree-reflection.html?showComment=1261381802749#c1600994960937971715' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/expression-tree-reflection.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3519748017927946430' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3519748017927946430' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1417551001'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1999508786152770127</id><published>2009-12-01T12:12:24.430+02:00</published><updated>2009-12-01T12:12:24.430+02:00</updated><title type='text'>Вот еще встретилось и может быть полезно http://my...</title><content type='html'>Вот еще встретилось и может быть полезно http://myshop.codeplex.com/&lt;br /&gt;&lt;br /&gt;Семпл по мотивам CQS</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1999508786152770127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1999508786152770127'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1259662344430#c1999508786152770127' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-191255641'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4190939258753667507</id><published>2009-11-20T01:04:21.928+02:00</published><updated>2009-11-20T01:04:21.928+02:00</updated><title type='text'>К какому именно случаю вы попытались все это приме...</title><content type='html'>К какому именно случаю вы попытались все это применить? Возможно, проблема была именно в не совсем подходящем примере.&lt;br /&gt;&lt;br /&gt;Еще, возможно вы найдете ответы на некоторые вопросы &lt;a href="http://elegantcode.com/2009/11/19/recording-of-my-e-van-presentation-about-cqrs/" rel="nofollow"&gt;здесь&lt;/a&gt;. Ну и пройдитесь еще раз по указанным ссылкам.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4190939258753667507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4190939258753667507'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258671861928#c4190939258753667507' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4710354881689671470</id><published>2009-11-17T14:40:08.676+02:00</published><updated>2009-11-17T14:40:08.676+02:00</updated><title type='text'>Пораскинув мозгами, и попробовав наструячить пару ...</title><content type='html'>Пораскинув мозгами, и попробовав наструячить пару тестовых примеров по вашему предложению, мне стало уже 100% понятно, что кроме геморроя предложенный вами(или не вами) способ, больше ничего не приносит.&lt;br /&gt;То есть если мы даже хоть какой, то мнимый плюс при работе с моделью. То этот плюс превращается в огромный минус, когда дело касается реализации данных методов.&lt;br /&gt;И в целом мне непонятна ситуация, зачем такой огород городить. Например, выделение OLAP служит для увеличения скорости построения отчетов, и основной костыль с которым все мирятся – что OLAP база может содержать устаревшую информацию.&lt;br /&gt;Но в вашем случае вы делает 2 базы и еще Notify между ними, что бы их держать в одинаковом состоянии, но зачем это надо, когда можно используя  инструменты базы данных, такие как View и StoreProc реализовать точно такую, же систему, то есть у вас структура базы одна, но для приложения она совершенно другая.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4710354881689671470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4710354881689671470'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258461608676#c4710354881689671470' title=''/><author><name>C...R...a...S...H</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1106091377'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2364910065438484879</id><published>2009-11-12T16:43:15.550+02:00</published><updated>2009-11-12T16:43:15.550+02:00</updated><title type='text'>например, так. хотя, все зависит от случая.

class...</title><content type='html'>например, так. хотя, все зависит от случая.&lt;br /&gt;&lt;br /&gt;class QuarterDiscount : Entity&lt;br /&gt;{&lt;br /&gt;    Percentage Percentage { get; set; }&lt;br /&gt;&lt;br /&gt;    public UpdatePercentage(Percentage newValue)&lt;br /&gt;    {&lt;br /&gt;        Percentage = newValue;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Amount Apply(Amount amount)&lt;br /&gt;    {&lt;br /&gt;        return amount * percentage;&lt;br /&gt;    }&lt;br /&gt;}</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/2364910065438484879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/2364910065438484879'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258036995550#c2364910065438484879' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-3556539585807330931</id><published>2009-11-12T16:35:58.045+02:00</published><updated>2009-11-12T16:35:58.045+02:00</updated><title type='text'>Игорь, можете поподробнее описать QuarterDiscount....</title><content type='html'>Игорь, можете поподробнее описать QuarterDiscount.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/3556539585807330931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/3556539585807330931'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258036558045#c3556539585807330931' title=''/><author><name>C...R...a...S...H</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1106091377'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2349692227994893849</id><published>2009-11-12T13:34:17.198+02:00</published><updated>2009-11-12T13:34:17.198+02:00</updated><title type='text'>To C...R...a...S...H

Тут следует отличать действи...</title><content type='html'>To C...R...a...S...H&lt;br /&gt;&lt;br /&gt;Тут следует отличать действительно отчетные данные, которые никак не влияют на логику домена, и данные, которые домену нужны.&lt;br /&gt;&lt;br /&gt;Исходя из этого, скажем, в модели бы появилась сущность типа какой-нибудь QuarterDiscount и любой новый заказ бы влиял на ее состояние. И даже больше - изменения ее состояния регистрировались в каких-нибудь отчетах :)&lt;br /&gt;&lt;br /&gt;А вообще, вы затронули интересную тему, о которой я умышлено не написал.&lt;br /&gt;&lt;br /&gt;Вся эта система работает хорошо, когда она, скажем так, не развивается. Когда вы запускаете механизм, все данные куда-то ходят, все где-то аккумулируется и таким образом поддерживается актуальное состояние системы.&lt;br /&gt;&lt;br /&gt;А как быть, если, скажем на любом из уровней, добавляются новые типы &amp;quot;аккумуляторов&amp;quot;, которые должны работать так, как если бы они были в системе последние лет 10...&lt;br /&gt;&lt;br /&gt;Вот тут есть о чем поговорить :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/2349692227994893849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/2349692227994893849'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258025657198#c2349692227994893849' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-3455383340531090470</id><published>2009-11-12T13:23:17.327+02:00</published><updated>2009-11-12T13:23:17.327+02:00</updated><title type='text'>2Meowth:

А никто и не говорит об абсолютной новиз...</title><content type='html'>2Meowth:&lt;br /&gt;&lt;br /&gt;А никто и не говорит об абсолютной новизне подхода. Тут все дело лишь в точке приложения этого подхода: если приложение сильно data-centric, то все будет делаться на основе Master/Subscriber. Если же приложение behaviour-centric, то это будет называться CQS.&lt;br /&gt;&lt;br /&gt;Нужно отметить, что схема Master/Subscriber вполне себе может сочетаться и с CQS на уровне кода. Оно все и так сильно оторвано друг от друга. Никаких догм здесь нет - во всем следует быть прагматиком :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/3455383340531090470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/3455383340531090470'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258024997327#c3455383340531090470' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-2465254699152489562</id><published>2009-11-12T13:15:12.235+02:00</published><updated>2009-11-12T13:15:12.235+02:00</updated><title type='text'>Well, I can&amp;#39;t fully agree with this opinion. I...</title><content type='html'>Well, I can&amp;#39;t fully agree with this opinion. I.e. modern languages like C# can&amp;#39;t check the behaviour aspects of the inheritance. Thats why the Design by contract approach with automated theormes proving is still on the very early stages of implementation.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/2465254699152489562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/1670039962737219947/comments/default/2465254699152489562'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2008/09/solid-top-5.html?showComment=1258024512235#c2465254699152489562' title=''/><author><name>Igor</name><uri>http://www.blogger.com/profile/10232785741897411593</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_rMuuPtfsjzE/SQs3w9oK1ZI/AAAAAAAAFfU/m08xMedZGFU/S220/avatar.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2008/09/solid-top-5.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-1670039962737219947' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/1670039962737219947' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-619904363'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-4614982456181130232</id><published>2009-11-12T13:02:02.404+02:00</published><updated>2009-11-12T13:02:02.404+02:00</updated><title type='text'>Игорь, а как ваша архитектура будет обслуживать та...</title><content type='html'>Игорь, а как ваша архитектура будет обслуживать такие требования бизнеса, которые строятся на отчетной информации.&lt;br /&gt;Наприме: Клиент автоматически получает скидку, равную 3% от средней стоимости заказов за последний год(месяц, квартал, эру...).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4614982456181130232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/4614982456181130232'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1258023722404#c4614982456181130232' title=''/><author><name>C...R...a...S...H</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1106091377'/></entry><entry><id>tag:blogger.com,1999:blog-8864435396524375431.post-1257254541078294190</id><published>2009-11-11T16:39:25.124+02:00</published><updated>2009-11-11T16:39:25.124+02:00</updated><title type='text'>На самом деле, схема репликации Master(RW) - Subsc...</title><content type='html'>На самом деле, схема репликации Master(RW) - Subscriber(RO) (для снижения нагрузки) организует что-то подобное, только там по прагматическим причинам используются RDB и для того звена, что у вас названо ReportingDB.&lt;br /&gt;Подход в данном случае интересный, но спорный.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1257254541078294190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8864435396524375431/3925136110560869041/comments/default/1257254541078294190'/><link rel='alternate' type='text/html' href='http://igor.quatrocode.com/2009/11/cqs_09.html?showComment=1257950365124#c1257254541078294190' title=''/><author><name>Meowth</name><uri>http://www.blogger.com/profile/04318396551435056923</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_QXLQoy2iAY4/SNi5BzZtRgI/AAAAAAAAAFs/1KzbqePi1s8/S220/Meowth_.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://igor.quatrocode.com/2009/11/cqs_09.html' ref='tag:blogger.com,1999:blog-8864435396524375431.post-3925136110560869041' source='http://www.blogger.com/feeds/8864435396524375431/posts/default/3925136110560869041' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-657711930'/></entry></feed>
