<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Форум 'Архитектура программного обеспечения' на RSDN.RU</title>
    <link>http://www.rsdn.ru/Forum/design/</link>
    <description>Форум "Архитектура программного обеспечения" предназначен для обсуждения вопросов, относящихся к стадии проектирования ПО.</description>
    <category>design</category>
    <language>ru-ru</language>
    <copyright>Copyright ©, RSDN.ru, 2001-2007</copyright>
    <webMaster>webmaster@rsdn.ru</webMaster>
    <generator>RSDN RSS Generator 1.3</generator>
    <image>
      <url>http://www.rsdn.ru/rsdn.gif</url>
      <title>RSDN.RU</title>
      <link>http://www.rsdn.ru</link>
    </image>
    <lastBuildDate>Sun, 12 Feb 2012 20:22:31 GMT</lastBuildDate>
    <ttl>5</ttl>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rsdn/design" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rsdn/design" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Enum + таблица справочник</title>
		<link>http://www.rsdn.ru/Forum/design/4614512.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4614512.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4614512.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4614512</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4614512.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4614512</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть таблица справочник [ID,NAME], ~100 записей, постоянно пополняемая.&lt;br /&gt;
&lt;br /&gt;
В коде использовать напрямую ID(int) не очень удобно, т.к. плохо читаемый код получается.&lt;br /&gt;
Удобнее сделать enum&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;public enum&lt;/span&gt; States
{
  sNew = 1,
  sDeleted = 2,
  ...
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Но в этом случае возникает проблема синхронизации ID таблицы и значений которые у Enum.&lt;br /&gt;
Как лучше делать чтоб отслеживать несоответствие или тут уже никаких вспомогательных вещей не придумать ?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/YDHF7wfaoOA" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Sun, 12 Feb 2012 16:06:18 GMT</pubDate>
		
		
			<slash:comments>2</slash:comments>
		
	</item>

	<item>
		<title>SQL в ArgoUML</title>
		<link>http://www.rsdn.ru/Forum/design/4611404.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4611404.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4611404.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4611404</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4611404.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4611404</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;хочу попробовать сделать генерацию SQL кода по UML диаграмме в ArgoUML,&lt;br /&gt;
используя проект dbuml (&lt;a href="http://argouml-db.tigris.org/" class="m" target="_blank"&gt;http://argouml-db.tigris.org/&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Делаю самую простую диаграмму и пробую сгенерить SQL код&lt;br /&gt;
вываливается ошибка&lt;br /&gt;
&lt;br /&gt;
Generate source failure. Database factory class {0} cannot be found.&lt;br /&gt;
&lt;br /&gt;
Я что-то не догоняю что ему не хватает ? В документации это не указывается&lt;br /&gt;
&lt;br /&gt;
Спасибо&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/q4JcjNbjIIU" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 09 Feb 2012 20:28:45 GMT</pubDate>
		
		
			<slash:comments>0</slash:comments>
		
	</item>

	<item>
		<title>Генерация клиентов на разных языках для HTTP API</title>
		<link>http://www.rsdn.ru/Forum/design/4610862.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4610862.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4610862.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4610862</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4610862.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4610862</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Имеется HTTP API. Примерно такое:&lt;br /&gt;
&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
# list
GET /objects/ -&amp;gt; [obj1, obj2, ...]

# create
POST /objects/ -&amp;gt; 201, Location: /objects/someid/

# details
GET /objects/some-id/ -&amp;gt; {'i': 'am some object'}

# update
PATCH {'foo': 'bar'} /objects/some-id/ -&amp;gt; 303, Location: /objects/some-id/&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Изобразил достаточно схематично, но, думаю, схему работы понять можно.&lt;br /&gt;
&lt;br /&gt;
Задача: минимальными усилиями создать и поддерживать клиентские библиотеки для множества языков, в первую очередь для Python, Haskell и Erlang, но вскоре потребуются и C#, и Java, и много других &lt;img border='0' width='15' height='15' src='http://www.rsdn.ru/Forum/images/frown.gif' /&gt;&lt;br /&gt;
&lt;br /&gt;
В голову пришли два варианта:&lt;br /&gt;
&lt;br /&gt;
1) Пишем работу с API на C, подключаем к другим языкам в виде библиотеки.&lt;br /&gt;
2) Генерируем «низкоуровневые» функции из EDSL на Haskell.&lt;br /&gt;
&lt;br /&gt;
После этого, само собой, пишем более «высокоуровневый» код, чтобы «вписать» библиотеку в язык (чтобы она не выглядела чужеродно).&lt;br /&gt;
&lt;br /&gt;
Кто-то наверняка уже делал подобное, поделитесь опытом. Может, есть какие-то подводные камни, которые я не заметил. Как вообще принято решать такие задачи?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/oRgVJfhmEGM" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 09 Feb 2012 13:35:46 GMT</pubDate>
		
			<author>gnusf &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>Организация логгирования</title>
		<link>http://www.rsdn.ru/Forum/design/4610550.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4610550.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4610550.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4610550</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4610550.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4610550</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Доброго времени суток всем!&lt;br /&gt;
Я тут озадачился вопросом оптимизации процесса логгирования в своих программах.&lt;br /&gt;
Речь о логгировании работы, например, Win-сервиса.&lt;br /&gt;
В логе фиксируются факты запуска и остановки сервиса, получение и переход между этапами выполнения команд, получаемых от клиентов сервиса, ошибки само собой и т.п.&lt;br /&gt;
Допустим, средство логгирования выбрано log4net, "родной" System.Diagnostics.EventLog или любой другой (не важно).&lt;br /&gt;
&lt;br /&gt;
Вопрос в каком именно месте программы следует обращаться к логгеру? Непосредственно в месте возникновения события подлежащего логгированию или из этого самого места лучше генерировать событие, а где-нибудь вовне на это событие подписаться и в обработчике уже писать лог?&lt;br /&gt;
&lt;br /&gt;
Т.е. какой вариант из приведенных ниже более предпочтителен?&lt;br /&gt;
Этот (всякие не относящиеся к делу проверки, обработку исключений и пр. пропускаю):&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;class&lt;/span&gt; FirstService
{
  ILogger logger;
...
  &lt;span class='kw'&gt;void&lt;/span&gt; ParentMethod()
  {
    SecondService serv = &lt;span class='kw'&gt;new&lt;/span&gt; SecondService();
    serv.Logger = logger;
    ...
    serv.Method();
    ...
  }
}

&lt;span class='kw'&gt;class&lt;/span&gt; SecondService
{
  &lt;span class='kw'&gt;public&lt;/span&gt; ILogger Logger { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }
...
  &lt;span class='kw'&gt;void&lt;/span&gt; Method()
  {
    SqlConnection cn;
    ...
    cn.Open(); &lt;span class='com'&gt;// действие, выполнение которого надо залоггировать&lt;/span&gt;
    Logger.Info(&lt;span class='str'&gt;"Соединение с базой данных прошло успешно"&lt;/span&gt;); &lt;span class='com'&gt;// можно обратиться к логгеру прямо здесь...&lt;/span&gt;
    ...
  }
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
или этот:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;class&lt;/span&gt; FirstService
{
  ILogger logger;
...
  &lt;span class='kw'&gt;void&lt;/span&gt; ParentMethod()
  {
    SecondService serv = &lt;span class='kw'&gt;new&lt;/span&gt; SecondService();
    serv.ConnectionSuccess += &lt;span class='kw'&gt;new&lt;/span&gt; EventHandler(OnConnectionSuccess);
    ...
    serv.Method();
    ...
  }
  &lt;span class='kw'&gt;void&lt;/span&gt; OnConnectionSuccess(&lt;span class='kw'&gt;object&lt;/span&gt; sender, EventArgs e)
  {
     Logger.Info(&lt;span class='str'&gt;"Соединение с базой данных прошло успешно"&lt;/span&gt;);
  }
}

&lt;span class='kw'&gt;class&lt;/span&gt; SecondService
{
  &lt;span class='kw'&gt;public&lt;/span&gt; ILogger Logger { &lt;span class='kw'&gt;get&lt;/span&gt;; &lt;span class='kw'&gt;set&lt;/span&gt;; }
...
  &lt;span class='kw'&gt;void&lt;/span&gt; Method()
  {
    SqlConnection cn;
    ...
    cn.Open(); &lt;span class='com'&gt;// действие, выполнение которого надо залоггировать&lt;/span&gt;
    ConnectionSuccess(&lt;span class='kw'&gt;this&lt;/span&gt;, EventArgs.Empty); &lt;span class='com'&gt;// ... а можно отсюда сгенерировать событие и вызывающий пусть сам решает логгировать или нет...&lt;/span&gt;
    ...
  }
...
  &lt;span class='kw'&gt;public event&lt;/span&gt; EventHandler ConnectionSuccess;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
А может какой-нибудь другой?&lt;br /&gt;
Первый вариант, вроде менее многословный, зато во втором процесс логгирования более централизован...&lt;br /&gt;
Как лучше?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/27ElsP7a5iY" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 09 Feb 2012 09:57:19 GMT</pubDate>
		
			<author>stomsky &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>ORM и пакетные операции</title>
		<link>http://www.rsdn.ru/Forum/design/4605884.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4605884.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4605884.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4605884</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4605884.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4605884</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте.&lt;br /&gt;
Суть такова: допустим пишется проект в стиле DDD. Есть класс MyObject, с помощью ОРМ он отображается на таблицу, и у этого класса есть, скажем, какое-то вычисляемое свойство, которое обновляется при вызове метода.&lt;br /&gt;
А этот метод таков, что он обращается к БД.&lt;br /&gt;
&lt;br /&gt;
И вот объекты класса MyObject обрабатываются обычно по нескольку десятков штук.&lt;br /&gt;
Вот мы получили из базы список этих объектов, и в цикле вызываем этот метод, чтобы он установил это свойство. Итого, получается множество запросов к базе.&lt;br /&gt;
&lt;br /&gt;
Можно это оптимизировать и внешним кодом извлечь целую табличку значений и из нее уже обновить значения свойств у всего списка объектов.&lt;br /&gt;
&lt;br /&gt;
Вопрос &amp;mdash; как совместить хорошую производительность и хороший дизайн. С точки зрения дизайна, мне кажется, что данный класс должен иметь у себя такой метод, там ему самое место. Но с другой стороны, если каждый экземпляр полезет в базу, будут тормоза. Как быть? Есть какой-то типовой прием?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/woHpMIQlhHk" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Mon, 06 Feb 2012 13:07:32 GMT</pubDate>
		
			<author>dmitry_npi &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>11</slash:comments>
		
	</item>

	<item>
		<title>Архитектура приложения с GUI и очередь нотификаций</title>
		<link>http://www.rsdn.ru/Forum/design/4603607.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4603607.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4603607.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4603607</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4603607.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4603607</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Всем привет.&lt;br /&gt;
Не знал куда запостить вопрос, сюда или в С++.&lt;br /&gt;
&lt;br /&gt;
Пишу прикладную утилиту на С++\МФЦ под Вин. Утилита выполняет определенные действия(долгие) над выбранным участком жесткого диска. Возник вопрос по архитектуре такого ПО.&lt;br /&gt;
&lt;br /&gt;
Итак, у меня есть GUI thread, в котором крутится обычный виндовый цикл выборки сообщений и работает само GUI. Чтобы GUI не тормозило, я обычно делаю еще один поток &amp;mdash; Core thread, который собственно управляет логикой самой задачи (и зачастую запускает уже конкретные задачи в других потоках). Core thread обменивается с GUI thread нотификациями (сообщениями, но не виндовыми а своими собственными).  &lt;br /&gt;
Выглядит это примерно так&lt;br /&gt;
GUI --&amp;gt; посылает команду--&amp;gt; *потокобезопасная очередь сообщений* --&amp;gt; ядро вычитывает команду --&amp;gt; Core thread&lt;br /&gt;
В другую сторону есть другая сходная очередь.&lt;br /&gt;
&lt;br /&gt;
Базовый вопрос:&lt;br /&gt;
Есть сообщения(команды) с данными. К разным сообщениям прикреплены совершенно разные данные. Типа:&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
struct Msg
{
 int id;
 void* pData;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
Но мне не нравится void* . Как (не используя сторонние библиотеки) написать сообщения, которые были более безопасны по типу (не надо было бы привозить void* в зависимости от id а использовать какую-то другую структуру сообщений)? Или и так нормально? Дата может быть большим объемом данных, который надо аллоцировать при отсылке и уничтожать после чтения &amp;mdash; сейчас это делается "вручную".&lt;br /&gt;
&lt;br /&gt;
Второй вопрос &amp;mdash; все ли нормально с общей архитектурой или есть какие-то паттерны, которые лучше подходят к таким приложениям?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/E6CM72BBkAA" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Sat, 04 Feb 2012 15:51:32 GMT</pubDate>
		
			<author>v-kir &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>DAL: распределенные транзакции или групповые операции?</title>
		<link>http://www.rsdn.ru/Forum/design/4602571.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4602571.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4602571.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4602571</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4602571.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4602571</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Привет.&lt;br /&gt;
&lt;br /&gt;
Проектирую слой служб доступа к данным (вебсервис). &lt;br /&gt;
&lt;br /&gt;
Вопрос в следующем: операции над сущностями делать изначально групповыми (2) или штучными используя распределенные транзакции (1)?&lt;br /&gt;
&lt;br /&gt;
1. &lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
BeginDistributeTransaction();
  &lt;span class='kw'&gt;foreach&lt;/span&gt; (contracts)
    DeleteContract(Contract contract)
CommitDistributeTransaction();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
2. &lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
DeleteContracts(Contract[] contracts)&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/Fus2YoYA6jU" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Fri, 03 Feb 2012 13:23:35 GMT</pubDate>
		
		
			<slash:comments>19</slash:comments>
		
	</item>

	<item>
		<title>Выбор архитектуры для CRUD-подобного приложения на WPF</title>
		<link>http://www.rsdn.ru/Forum/design/4600539.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4600539.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4600539.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4600539</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4600539.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4600539</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Сейчас написано клиент-серверное (двухзвенное) приложение на WPF и Entity Framework для редактирования автобусных расписаний. Все устраивает, кроме проблемы одновременного доступа, например, если кто-то редактирует расписание, а кто-то другой его в это время удаляет. Поскольку пользователей немного, и, как правило, каждый отвечает за свой набор расписаний, сделал простую блокировку &amp;mdash; при открытии расписания следующий пользователь может открыть только для просмотра. Работает не идеально, но просто в реализации и особых проблем не доставляет (в худшем случае &amp;mdash; падает клиентское приложение).&lt;br /&gt;
&lt;br /&gt;
В ближайшем будущем нужно написать другое приложение (либо встраивать новый функционал в текущее), там пользователей уже будет больше. Хочется решить проблему одновременного доступа более надежным способом. Более того, хочется, чтобы изменения одного пользователя в реальном времени отображались в интерфейсах других пользователей (как, например, в Google Docs, только без редактирования текста в реальном времени). Кроме того, нужно автоматически обрабатывать новые данные, поступающие извне. Заталкивать эту обработку в хранимые процедуры как-то совсем не хочется.&lt;br /&gt;
&lt;br /&gt;
Сразу подумал о трехзвенной архитектуре: клиентские приложения на WPF почти без логики, которые через WCF подключаются к среднему звену на сервере (через двухстороннюю связь, чтобы транслировать клиентам обновления данных), в котором сосредоточена вся логика, а среднее звено через EF работает с базой данных. Обмен данными между клиентом и сервером приложений &amp;mdash; через Self-Tracking Entities (клиенты пишутся только на .net).&lt;br /&gt;
&lt;br /&gt;
Теперь вопросы:&lt;br /&gt;
&lt;br /&gt;
1) Жизнеспособна ли такая архитектура, или я упускаю что-то важное (посмотрел отдельно примеры по WCF, STE, вроде то, что нужно, но описания решения в целом нигде не видел).&lt;br /&gt;
2) Не променяю ли я сложность синхронизации клиентов в двухзвенной архитектуре на сложность реализации трехзвенной архитектуры, и если променяю, стоит ли оно того (классические преимущества трехзвенки, типа масштабируемости и легкой возможности замены клиента для меня малоприменимы).&lt;br /&gt;
&lt;br /&gt;
3) Как вообще ведется разработка серверной части?&lt;br /&gt;
&lt;br /&gt;
Вот я сейчас как пишу клиентское приложение: &lt;br /&gt;
&lt;br /&gt;
&amp;mdash; реализую кусочек функционала, &lt;br /&gt;
&amp;mdash; запускаю, проверяю,&lt;br /&gt;
&amp;mdash; если все ок, делаю commit и push в меркуриале&lt;br /&gt;
&amp;mdash; делаю паблиш через ClickOnce&lt;br /&gt;
&amp;mdash; пользователи сами загружают новую версию при старте программы&lt;br /&gt;
&amp;mdash; время от времени смотрю логи пользователей/тестировщиков, все ли ок&lt;br /&gt;
&lt;br /&gt;
А если я пишу сервер приложений (среднее звено, сервис WCF, как это вообще правильно называть), допустим, я хочу, чтобы он в итоге работал как служба Windows на сервере и сам перезагружался после падения (а падения будут, особенно много поначалу), то вот что меня отпугивает: я же не смогу так просто запустить из студии серверную часть, проверить, что-то поменять, снова проверить. Мне придется каждый раз куда-то устанваливать эту службу и перезапускать. Не потрачу ли я на это слишком много времени (по сравнению со старым добрым клиент-серверным подходом, где сервер БД живет своей жизнью, а отладка клиента тривиальна)? Или делать поначалу как консольное приложение? Его не надо никуда устанваливать, запустил и все.&lt;br /&gt;
&lt;br /&gt;
В общем, стоит ли менять простую в понимании клиент-серверную архитектуру на заманчивую и более современную трехзвенную? &lt;br /&gt;
&lt;br /&gt;
(Если честно, хочется поменять, хотя бы ради опыта, вопрос в том, чего мне это будет стоить, у начальства терпение тоже не безграничное, у них денег на крутых специалистов нет, но результат-то нужен, в связи с этим они готовы пожертвовать 100% качеством ПО, то есть, "можно делать как попало, потом разберемся, лишь бы уже работало". Но по срокам сильно не давят, определенное пространство для маневра есть. Так, например, Entity Framework уже сэкономил мне прорву времени, хотя я и изучал его прямо по ходу дела. Сэкономит ли мое время WCF?)&lt;br /&gt;
&lt;br /&gt;
Пока что думаю написать простой прототип, но и сейчас любая информация лишней не будет.&lt;br /&gt;
&lt;br /&gt;
Если кто-то поделится опытом или ссылками на классные источники (вдруг есть в закладках, да и просто "видел там-то у того-то"), буду весьма благодарен.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/lsXPshaYdx0" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 02 Feb 2012 10:31:40 GMT</pubDate>
		
			<author>alesterre &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>Гарантированная обработка сообщений</title>
		<link>http://www.rsdn.ru/Forum/design/4599820.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4599820.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4599820.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4599820</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4599820.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4599820</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Уже не в первый раз в своей жизни столкнулся с следующей задачей:&lt;br /&gt;
&lt;br /&gt;
Есть очередь задач, которую необходимо обработать. Обработка идет несколькими worker, параллельно. &lt;br /&gt;
В очередь задачи также укладываются несколькими producers.&lt;br /&gt;
Очередность выполнения не важна.&lt;br /&gt;
Вроде бы &amp;mdash; обычный Message Queue, все стандартно. &lt;br /&gt;
&lt;br /&gt;
Но хочется иметь еще и "гарантированную обработку сообщений". Т.е. если воркер взял себе задачу &amp;mdash; то он или ее выполнит &amp;mdash; или вернет в очередь "на повторную попытку".&lt;br /&gt;
&lt;br /&gt;
В свое время (2008 год) мы с Яшей Сироткиным ее решали через хранение очереди в БД и некоторые хитрые фишки в SQL (типа 'skip locked'). Как быстрое наколеночное решение оно вполне устроило, даже доклад сочинился (&lt;a href="http://www.jug.ru/servlets/images/meeting_2008_09_20/query.ppt" class="m" target="_blank"&gt;http://www.jug.ru/servlets/images/meeting_2008_09_20/query.ppt&lt;/a&gt;, ну и обсуждение на &lt;a href="http://yakov-sirotkin.livejournal.com/103083.html" class="m" target="_blank"&gt;http://yakov-sirotkin.livejournal.com/103083.html&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Но как-то хочется стандартного решения.&lt;br /&gt;
Обычные MQ-решения не спасают, там есть только гарантированная доставка сообщений, а тут ее безусловно мало. &lt;br /&gt;
Костылей то придумывается много, но удовлетворения нет.&lt;br /&gt;
&lt;br /&gt;
Какие есть решения, какие идеи?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/6mkVSewhY1M" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Wed, 01 Feb 2012 23:10:08 GMT</pubDate>
		
			<author>Дельгядо Филипп &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>5</slash:comments>
		
	</item>

	<item>
		<title>Статистика использования сервисов</title>
		<link>http://www.rsdn.ru/Forum/design/4599486.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4599486.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4599486.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4599486</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4599486.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4599486</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Здравствуйте.&lt;br /&gt;
&lt;br /&gt;
Есть примерно следующая задача:&lt;br /&gt;
&lt;br /&gt;
Есть несколько служб реализующих некоторый функционал.&lt;br /&gt;
Нужно собирать статистику по использованию этих служб &amp;mdash; результат аутентификации пользователя, вызовы методов служб и параметры с которыми вызывался метод конкретным пользователем. Цель &amp;mdash; возможность иметь информацию по использованию данных на любой момент времени, включая такую информацию как: сколько пользователей обращалось за последнюю минуту/час/сутки, какие параметры предпочитал пользователь (например, используемый договор) и т.д.&lt;br /&gt;
&lt;br /&gt;
Вариантов реализации вижу два (три):&lt;br /&gt;
1. Парсинг логов. Да, логи ведутся, достаточно подробные.&lt;br /&gt;
2. "Велосипед" на тему записи только нужной части информации в некоторое "хранилище" в подходящем виде (структурированном?).&lt;br /&gt;
3. Служба (MSMQ) регистрации такой статистики. Дергается в нужном месте.&lt;br /&gt;
4. ?&lt;br /&gt;
&lt;br /&gt;
Еще вопрос касательно хранения такой информации в структурированном виде для последующей обработки. Тут пока даже не представляю как. Контракты служб могут в будущем меняться.&lt;br /&gt;
&lt;br /&gt;
Возникала ли у вас подобная задача, как вы ее решали? Что я не учел? Или задача тупо надумана?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/AX1tL0UPPqE" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Wed, 01 Feb 2012 16:51:23 GMT</pubDate>
		
			<author>AK107 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Как правильнее сделать адаптер</title>
		<link>http://www.rsdn.ru/Forum/design/4594542.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4594542.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4594542.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4594542</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4594542.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4594542</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть множество серверов различных провайдеров данных, каждый сервер принимает http запрос и на выход выдает XML данные.&lt;br /&gt;
В чем-то данные подобны, но есть и различия, иногда достаточно существенные в структуре данных.&lt;br /&gt;
&lt;br /&gt;
Например один провайдер возвращает&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&amp;lt;?xml version=&lt;span class='str'&gt;"1.0"&lt;/span&gt;&amp;gt;
&amp;lt;root&amp;gt;
  &amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;
  &amp;lt;c&amp;gt;&amp;lt;/c&amp;gt;
&amp;lt;/root&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Другой может возвращать следующим образом&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&amp;lt;root&amp;gt;
  &amp;lt;lista&amp;gt;
    &amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;
  &amp;lt;/lista&amp;gt;
  &amp;lt;b/&amp;gt;
  &amp;lt;d/&amp;gt;
&amp;lt;/root&amp;gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
У второго свойство &amp;lt;a/&amp;gt; завернуто в список, данный провайдер поддерживает множественный запрос ( чтобы не вызывать по одному запросу ) и в ответ может вывести сразу множество a. &lt;br /&gt;
Как лучше организовать структуру данных в БД и объектов для хранения данных ?&lt;br /&gt;
&lt;br /&gt;
Допустим также появится 3й провайдер у которого будет свойство &amp;lt;e/&amp;gt; чтобы это приводило к минимуму изменений кода.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пока думаю сделать следующий объект&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
&lt;span class='kw'&gt;public class&lt;/span&gt; Result
{
   &lt;span class='kw'&gt;string&lt;/span&gt; a;
   &lt;span class='kw'&gt;string&lt;/span&gt; b;
   &lt;span class='kw'&gt;string&lt;/span&gt; c;
   &lt;span class='kw'&gt;string&lt;/span&gt; d;
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
Адаптер для каждого провайдера будет содержать свой класс совпадающий по структуре с XML провайдера, который будет инициализироваться через XmlSerialization, и потом с помощью в основном Linq преобразовываться в  IEnumerable&amp;lt;Result&amp;gt; , т.е. провайдеры которые поддерживают только 1 запрос за раз &amp;mdash; будут возвращать IEnumerable с одним элементом.&lt;br /&gt;
&lt;br /&gt;
И аналогично хранить в базе таблица с колонками a,b,c,d. Когда появится свойство e, то добавить колонку и поле в Result.&lt;br /&gt;
&lt;br /&gt;
Насколько такая реализация будет правильной ? Возможно есть более интересные варианты реализации.&lt;br /&gt;
(.net 4.0 )&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/W0Naq6c2R20" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Sun, 29 Jan 2012 11:54:07 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Three-tier acrhitecture и firewall</title>
		<link>http://www.rsdn.ru/Forum/design/4592163.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4592163.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4592163.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4592163</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4592163.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4592163</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Извиняюсь за глупый вопрос.&lt;br /&gt;
Допустим есть фаерволл в виде виндового сервиса. Есть консоль к нему, где можно задать некие настройки, посмотреть какую-то информацию статусы и т.д.&lt;br /&gt;
Можно ли говорить об этом приложении в терминах трехуровневой архитектуры (three-tier architecture) и почему? А если нет, то воплощает ли такой фаерволл какой-то другой паттерн аналогичный 3-tier architecture?&lt;br /&gt;
И консоль в данном случае вроде на presentation tier не тянет, ведь результат работы приложения отображается не в ней, а в действиях самого фаерволла.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/GdF-qFzu5BM" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 26 Jan 2012 19:30:44 GMT</pubDate>
		
		
			<slash:comments>1</slash:comments>
		
	</item>

	<item>
		<title>Cqrs</title>
		<link>http://www.rsdn.ru/Forum/design/4592158.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4592158.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4592158.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4592158</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4592158.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4592158</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Подскажите как правильно, при обработке команды обратиться к read-модели. Например пришла команда на изменение баланса, и если это уже более чем десятое снятие со счета должны начислить определенную комиссию.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/eY42p0mbs3A" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 26 Jan 2012 19:22:17 GMT</pubDate>
		
		
			<slash:comments>15</slash:comments>
		
	</item>

	<item>
		<title>[design patterns] Factory Method and Template Method</title>
		<link>http://www.rsdn.ru/Forum/design/4591795.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4591795.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4591795.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4591795</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4591795.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4591795</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;можете на пальцах объяснить &amp;mdash; чем subj отличаются друг от друга?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/15Jlrr-Iao0" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 26 Jan 2012 14:19:22 GMT</pubDate>
		
			<author>зиг &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>23</slash:comments>
		
	</item>

	<item>
		<title>подскажите паттерны</title>
		<link>http://www.rsdn.ru/Forum/design/4588968.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4588968.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4588968.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4588968</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4588968.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4588968</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть некие связанные между собой объекты, к примеру, удаленные офисы, компьютеры, пользователи&lt;br /&gt;
предлагается показывать их с список в окне с деревом, с возможным фильтром по типу объектов (или с группировкой по ним &amp;mdash; это уже не суть важно), в окне конечно есть кнопочки панели инструментов (естественно у каждого типа должен быть свой набор)&lt;br /&gt;
Действия пользователя такие &amp;mdash; зашел получил дерево вида офис -&amp;gt; компьютеры офиса -&amp;gt; пользователи компьютера&lt;br /&gt;
выбрал другой фильтр получил пользователь -&amp;gt; офисы где пользователь работает -&amp;gt; компьютеры офиса на которых пользователь работает&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вот думаю-думаю и все какие то громоздкие схемы на ум приходят &amp;mdash; типа каждый тип &amp;mdash; отдельный объект у которого есть поля связь с другим типом, плюс своя панель инструментов, плюс свой обработчик ее, плюс popup меню для дерева и т.д.&lt;br /&gt;
&lt;br /&gt;
Дайте правильное направление, что посмотреть, почитать.&lt;br /&gt;
Спасибо.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/OBFwfvgrLAY" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Tue, 24 Jan 2012 18:24:43 GMT</pubDate>
		
			<author>Alex Dav &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>6</slash:comments>
		
	</item>

	<item>
		<title>Как лучше делать Observer?</title>
		<link>http://www.rsdn.ru/Forum/design/4586410.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4586410.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4586410.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4586410</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4586410.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4586410</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Сейчас прижилась структура приложений на WPF с использованием MVVM и Composite. При этом связь между уровнями MVVM оказывается удобнее один ко многим, т. е. на уровне model по одному экземпляру сущности, на уровне view их столько, в скольких видах нужно представить пользователю, а view model по соображениям удобства. Так вот если связь view &amp;mdash; view model один ко многим делается стандартными средствами, то относительно связи model &amp;mdash; view model всё очень неоднозначно, а копировать стандартные средства &amp;mdash; не всегда самый удобный вариант.&lt;br /&gt;
&lt;br /&gt;
На wikipedia пример Observer совсем незатейливый, в качестве наброски его можно использовать, но обновлять все свойства при изменении одного &amp;mdash; не лучшее решение. Есть варианты использования enum или событий на логические группы свойств &amp;mdash; это под вопросом. Особая ситуация, если следующий уровень по Composite представлен коллекцией. Здесь есть вариант и пользоваться интерфейсом INotifyCollectionChanged, есть вариант возвращать всегда ReadOnlyCollection, а обновление делать методами Add, Remove и т. п., но удобство тоже под вопросом.&lt;br /&gt;
&lt;br /&gt;
Ещё один существенный момент &amp;mdash; дублировать как можно меньше строк, т. е. вынести как можно больший кусок в собственный стандартный набор инструментов, а в конкретных приложениях писать как можно меньше и обеспечить минимум возможностей сделать ошибку в конкретном приложении, т. е. как б отладить один раз и дальше использовать везде.&lt;br /&gt;
&lt;br /&gt;
Расскажите, пожалуйста, кто как делает Observer, какие есть лучшие решения по этому вопросу и как лучше сделать reusable-фрагменты.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/xaOtXe4uWSU" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Mon, 23 Jan 2012 04:46:28 GMT</pubDate>
		
			<author>Ilya81 &lt;forum@rsdn.ru&gt;</author>
		
		
			<slash:comments>4</slash:comments>
		
	</item>

	<item>
		<title>С чего начинать?</title>
		<link>http://www.rsdn.ru/Forum/design/4585453.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4585453.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4585453.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4585453</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4585453.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4585453</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Получили в наследство проект без документации.&lt;br /&gt;
ASP.NET (web forms) + MSSQL 2005.&lt;br /&gt;
Работа с базой идет через ADO.NET. &lt;br /&gt;
В базе порядка 1000 процедур и 600 таблиц. &lt;br /&gt;
Процедуры &amp;mdash; непростые &amp;mdash; везде работа идет через динамические запросы.&lt;br /&gt;
&lt;br /&gt;
Вопроса 2.&lt;br /&gt;
1. Если наадо что-то добавить, как не накасячить, чтобы где-то что-то внезапно не перестало работать?&lt;br /&gt;
2. Если времени на глобальный рефакторинг нет, но в задачах сильно на сроки не давят, как потихоньку делать рефакторинг?&lt;br /&gt;
&lt;br /&gt;
2.1. Есть ли смысл не делать рефакторинг, а просто потихоньку начинать делать на MVC новый проект? правда не уверен, что это будет по силам, т.к. проект несколько человеколет&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/NYs6B9Wb_xc" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Sat, 21 Jan 2012 13:47:01 GMT</pubDate>
		
		
			<slash:comments>9</slash:comments>
		
	</item>

	<item>
		<title>Что должен уметь класс изображения?</title>
		<link>http://www.rsdn.ru/Forum/design/4584653.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4584653.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4584653.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4584653</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4584653.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4584653</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Собственно вопрос в названии темы. Как вы думаете, должен ли этот класс иметь методы для изменения себя или он должен быть только для чтения, а для его изменения сделать отдельные функции?&lt;br /&gt;
И какую лучше архитектуру использовать для него:&lt;br /&gt;
Например хотим создать изображение в формате RGB:&lt;br /&gt;
Image&amp;lt;RGB&amp;gt; img1(width,height); //ок&lt;br /&gt;
хотим создать изображение в формате YUV(YCbCr):&lt;br /&gt;
Image&amp;lt;YUV&amp;gt; img2(img1); //ок&lt;br /&gt;
хотим использовать изображение в формате YV12(подвид YUV, где элементы U и V одни на каждый квадрат 4x4 пикселя)&lt;br /&gt;
Image&amp;lt;YV12&amp;gt; img3(width,height); //а может лучше использовать img2, но если нужен будет буфер с изображением в формате YV12 сделать так:&lt;br /&gt;
std::vector&amp;lt;uint8_t&amp;gt; buf_yv12;&lt;br /&gt;
get_buf_in&amp;lt;YV12&amp;gt;(buf_yv12,img2);&lt;br /&gt;
&lt;br /&gt;
Хочу услышать ваше мнение...&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/y_lmx0edj6g" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Fri, 20 Jan 2012 15:22:23 GMT</pubDate>
		
		
			<slash:comments>11</slash:comments>
		
	</item>

	<item>
		<title>Помогите с реализацией класса Pair&lt;TFirst, TSecond&gt;</title>
		<link>http://www.rsdn.ru/Forum/design/4582705.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4582705.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4582705.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4582705</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4582705.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4582705</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Извините, за глупый вопрос. Но может можно реализовать такое?&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
 &lt;span class='kw'&gt;public class&lt;/span&gt; Pair&amp;lt;TFirst, TSecond&amp;gt; 
    { 
        &lt;span class='kw'&gt;public&lt;/span&gt; Pair(TFirst first, TSecond second) 
        { 
            First = first; 
            Second = second; 
        }

        &lt;span class='kw'&gt;public&lt;/span&gt; Pair&amp;lt;TFirst&amp;gt;(TFirst first, TFirst second) : Pair&amp;lt;TFirst, TFirst&amp;gt;(first, second)
        {
        }

        &lt;span class='kw'&gt;public readonly&lt;/span&gt; TFirst First;
        &lt;span class='kw'&gt;public readonly&lt;/span&gt; TSecond Second;
    };&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/C1BqOT9oqAg" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 19 Jan 2012 10:55:36 GMT</pubDate>
		
		
			<slash:comments>3</slash:comments>
		
	</item>

	<item>
		<title>Как правильно связать объекты граф интерфейса и DomainModel</title>
		<link>http://www.rsdn.ru/Forum/design/4582665.1.aspx</link>
		<guid isPermaLink="true">http://www.rsdn.ru/Forum/design/4582665.aspx</guid>
		<comments>http://www.rsdn.ru/Forum/design/4582665.aspx</comments>
		<wfw:comment>http://www.rsdn.ru/Forum/PostRssComment.aspx?mid=4582665</wfw:comment>
		<wfw:commentRss>http://www.rsdn.ru/Forum/RSS/4582665.aspx</wfw:commentRss>
		<trackback:ping>http://www.rsdn.ru/Forum/Trackback.aspx?mid=4582665</trackback:ping>
		<description>&lt;div style="@import url(http://www.rsdn.ru/Forum/Forum.css);"&gt;Есть у меня DomainModel и там сложное переплетение классов. И несколько должны создаваться за 1 раз, типа транзакции. И вот нужно упростить пользователю процесс ввода. Я делаю так.&lt;br /&gt;
&lt;br /&gt;
Есть у меня как бы основной для группы классов DomainModel класс и в нём конструктор&lt;br /&gt;
&lt;table width='96%'&gt;&lt;tr&gt;&lt;td nowrap='nowrap' class='c'&gt;&lt;pre&gt;
 &lt;span class='kw'&gt;public&lt;/span&gt; MainDomainModel(UserComplexObject complexObject)&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Т.е. я пользователю вывожу форму и там заполняю экземпляр класса UserComplexObject  а потом передаю его в конструктор. А сам конструктор создаёт вспомогательные объекты. Правильно ли такое решенеи? Или в контреллер перенести логику создания DomainModel объектов на основе вспомогательного класса? Или вообще городить вспомог классы преобразования. Но вроже бы они и не нужны больше нигде, да и в иерархию их не получится организовать (общего будет мало)&lt;br /&gt;
&lt;br /&gt;
Гуру, подскажите, кто как делает?&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rsdn/design/~4/AaUiDFHFFYU" height="1" width="1"/&gt;</description>
		
		<category>design</category>
		<pubDate>Thu, 19 Jan 2012 10:24:51 GMT</pubDate>
		
		
			<slash:comments>0</slash:comments>
		
	</item>
</channel>
</rss>

