<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр:  Метки / .net 4.0</title>
	<link>http://habrahabr.ru/rss/tag/.net 4.0/</link>
	<description><![CDATA[]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 11:03:27 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
			
		<item>		
			<title><![CDATA[.NET / Быстрое создание и чтение документов MS Office 2007/2010 из 1С: Предприятие 8]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/137827/</guid>
			<link>http://habrahabr.ru/blogs/net/137827/</link>			
			<description><![CDATA[ Метод позволяет быстро создавать и читать документы Word, Excel и PowerPoint напрямую<br/>
 из 1С: Предприятие 8 без установленного Microsoft Office 2007/2010. Скорость создания<br/>
 документов в несколько раз выше, чем традиционное создание через COM/OLE. Статья<br/>
 продолжает серию примеров применения на практике <a href="http://www.1centerprise.com/dotnet/"> 1С.Net: Предприятие</a>. В статье используется разработка Open XML SDK. Для работы<br/>
 примера необходимы установленные .Net framework 4.0 и Elisy .Net Bridge 4.0.3 и<br/>
 выше. Пример, сопровождаемый статью, написан для 1С: Предприятие 8.2.13.<br/>
<br/>
<br/>
 <h4> Стандарт Office Open Xml</h4><br/>
<br/>
  Формат Office Open XML (Open Xml) – это формат XML-файлов, помещенных в zip-архив<br/>
 для представления текстовых документов и документов электронных таблиц, диаграмм,<br/>
 презентаций. Компания Microsoft выступила одним из спонсоров сертификации этого<br/>
 стандарта в 2005 году. Результирующий стандарт ISO/IEC 29500:2008 в четырех частях<br/>
 был опубликован в ноябре 2008 года.<br/>
<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/137827/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 08 Feb 2012 07:51:52 GMT</pubDate>
			<author>Elisy</author>
			<category>net framework</category><category>.net</category><category>.net 4.0</category><category>1c</category><category>1c:предприятие</category><category>1c 8.2</category><category>openxml</category><category>openxml sdk</category><category>open xml</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Веб-разработка / Необычно-экономное использование 1С: Предприятие 8 на Asp.Net-хостинге]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/webdev/136415/</guid>
			<link>http://habrahabr.ru/blogs/webdev/136415/</link>			
			<description><![CDATA[ Под словом «необычное» в заголовке понимается размещение информационной базы 1С: Предприятие<br/>
 удаленно на стороне Asp.Net-провайдера, тарифный план которого включает использование<br/>
 MSSQL. Экономия достигается за счет того, что компания не приобретает дорогостоящий<br/>
 MSSQL-сервер и лишние лицензии 1С: Предприятие, а ограничивается покупкой 1С-сервера,<br/>
 который во многих случаях уже имеется. На хостинг-провайдере может разместиться<br/>
 веб-сайт, работающий на данных 1С: Предприятие. За размещение, архивирование и бесперебойную<br/>
 работу базы данных и веб-сайта отвечает хостинг-провайдер.<br/>
<br/>
  Технология получила название Elisy Open Infobase (Открытая информационная база).<br/>
 Полученное решение с одной стороны поддерживает веб-интерфейс средствами Asp.Net,<br/>
 а с другой стороны 1С-интерфейс родными средствами 1С: Предприятие 8.2/8.1. Каждая<br/>
 из технологий добавляет свои преимущества и усиливает общий эффект. Данные, введенные<br/>
 в 1С: Предприятие, доступны в веб-интерфейсе моментально, а не с задержкой, как в<br/>
 других традиционных способах, через экспортно-импортные механизмы такие как COM,<br/>
 файлы обмена или явный/неявный запуск экспорта/импорта.<br/>
<br/>
 <img src="http://www.richmedia.us/image.axd?picture=2010%2f10%2fLinqTo1CMSSQLHostingProvider.jpg" alt="Общий смысл технологии Elisy Open InfoBase"/><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/webdev/136415/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Tue, 17 Jan 2012 07:25:36 GMT</pubDate>
			<author>Elisy</author>
			<category>asp.net</category><category>asp.net mvc</category><category>.net 4.0</category><category>1c:предприятие</category><category>1c.net</category><category>1с:предприятие</category><category>1с предприятие 8</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Блог компании CUBRID / Официальный релиз ADO.NET драйвера для CUBRID]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/company/cubrid/blog/136298/</guid>
			<link>http://habrahabr.ru/company/cubrid/blog/136298/</link>			
			<description><![CDATA[<img src="http://www.cubrid.org/files/attach/images/220547/135/263/dot-net-logo.png" alt="CUBRID ADO.NET Драйвер"/><br/>
<br/>
Мы рады сообщить, что сегодня мы официально выпустили первую стабильную версию ADO.NET драйвера для СУБД CUBRID.<br/>
<ul>
<li>Для драйвера, разработанного и поддерживаемого контрибьюторами сообщества, написано более 70 тестов.</li>
<li>Драйвер распространяется с полностью (100%) <a href="http://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4">управляемым кодом</a> под <a href="http://www.cubrid.org/bsd_license">лицензией BSD</a>.</li>
<li>Все основные классы ADO.NET модели разработаны.</li>
<li>Также разработаны расширенные классы SchemaProvider, CommandBuilder и т. д.</li>
<li>Драйвер работает на основе протокола передачи данных (сокет) последней версии CUBRID 8.4.0.</li>
<li>Дравйвер полностью поддверживет такие типы данных, как <a href="http://www.cubrid.org:8080/wiki_apis/entry/cubrid-lobs">BLOB/CLOB</a>, а также <a href="http://www.cubrid.org:8080/wiki_apis/entry/cubrid-collections">CUBRID Collections</a>.</li>
<li>Внедрена полная поддержка локализации. На данный момент доступна английская локализация.</li>
<li>На <a href="http://www.cubrid.org/wiki_apis/entry/cubrid-ado-net-driver">сайте проекта</a> приведены разные примеры с исходным кодом, а также демо программ с использованием UI, VB.NET, и NHibernate.</li>
</ul><br/>
<h4>Как скачать</h4><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/company/cubrid/blog/136298/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 16 Jan 2012 04:55:46 GMT</pubDate>
			<author>kadishmal</author>
			<category>.net</category><category>.net 4.0</category><category>драйвера</category><category>windows</category><category>программирование</category><category>cubrid</category><category>субд</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] Минималистичный скриншотер на .NET]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/136235/</guid>
			<link>http://habrahabr.ru/blogs/net/136235/</link>			
			<description><![CDATA[<b>Лучше один раз увидеть, чем 100 раз услышать.</b><br/>
Уверен, не я один часто делаю скриншоты.<br/>
Проиллюстрировать баг, отправить смешную картинку знакомому,<br/>
вставить в комментарий на каком-нибудь ресурсе, etc.<br/>
А началось всё с разочарования в некогда любимом Gyazo,<br/>
а именно сам скриншот уже трудно найти под кучей рекламных блоков.<br/>
Когда я пересмотрел аналоги, они мне показались чересчур громоздкими.<br/>
Пройти через несколько окон, чтобы просто сделать скриншот? Нет, спасибо.<br/>
<br/>
И вот, желая облегчить себе жизнь, а заодно ответить на <a href="http://habrahabr.ru/qa/15131/">вопрос</a><br/>
было решено сделать всё самому.<br/>
<br/>
<h5>Суть</h5><br/>
А хочется то предельно простого.<br/>
Один клик — запустить приложение, второй клик — выделить область на экране. <br/>
Всё — после этого видим скриншот уже в браузере (в PNG) и имеем ссылку на него в буфере обмена.<br/>
<br/>
Примерный алгоритм работы видится мне таким:<br/>
<ul>
<li>При запуске программа делает скриншот.</li>
<li>Устанавливает его фоном для окна, развёрнутого на весь экран.</li>
<li>Мышкой выделяем нужную область на экране.</li>
<li>Готово, картинка улетает на сервер.</li>
</ul><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/136235/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Sat, 14 Jan 2012 17:47:36 GMT</pubDate>
			<author>trolostasik</author>
			<category>.net 4.0</category><category>csharp</category><category>screenshot</category><category>скриншот</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[Веб-разработка / [Из песочницы] Многопоточный веб-сервер для 1С: Предприятие средствами .Net Framework]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/webdev/134217/</guid>
			<link>http://habrahabr.ru/blogs/webdev/134217/</link>			
			<description><![CDATA[ В процессе автоматизации деятельности предприятия при помощи 1С: Предприятие часто<br/>
 возникают задачи интеграции и обмена с оборудованием и другими сторонними информационными<br/>
 системами, например, банками, веб-сайтами, информационными системами партнеров.<br/>
 Традиционно 1С: Предприятие выступает в качестве потребителя услуг, и реже – в качестве<br/>
 поставщика. До этого момента у разработчиков популярными технологиями при получении<br/>
 информации от 1C были COM и веб-сервисы, которые появились только в версии 8.1.<br/>
<br/>
 У обеих технологий (COM и веб-сервисы) есть свои минусы. Главные недостатки заключаются<br/>
 в следующем. COM-технология позволяет в каждый момент времени выполнять только один<br/>
 запрос. Обращение возможно только внутри своей локальной сети. Обработка одновременных<br/>
 запросов для COM возможна, но требует затрат на организацию пула соединений и отладку<br/>
 многопоточного приложения. Веб-сервисы же сложны по настройке и негибкие для программирования:<br/>
 жестко привязаны к SOAP-стандартам. Подключение устройств, обменивающихся простыми<br/>
 пакетами, работающих по http-протоколу, невозможно.<br/>
<br/>
 Новая идея организации веб-сервера внутри 1С, предложенная в статье, опирается на<br/>
 проверенную временем богатую функциональность .Net Framework. Решение на основе<br/>
 идеи лишены недостатков COM и веб-сервисов 1С. По сравнению с COM http-сервер можно<br/>
 использовать вне локальной сети, поддерживается одновременная обработка нескольких<br/>
 запросов. По сравнению с веб-сервисами 1С решение на базе http-сервера обладает<br/>
 большей гибкостью, так как программист волен сам выбирать формат ответа сервера<br/>
 (в том числе HTML, JSON, графические изображения, RSS и т.д.), а также контролировать<br/>
 при ответе URL-адрес, идентификацию пользователей, коды ошибок, куки, кодировку,<br/>
 осуществлять кеширование. Настройка же http-сервера внутри 1С сводится к простому<br/>
 запуску внешней обработки.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/webdev/134217/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 08 Dec 2011 08:48:19 GMT</pubDate>
			<author>Elisy</author>
			<category>net framework</category><category>.net</category><category>.net 4.0</category><category>1c</category><category>1c:предприятие</category><category>1c 8.2</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[.NET / Кодоребус или паттерн «стратегия» на .Net 4.0]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/132974/</guid>
			<link>http://habrahabr.ru/blogs/net/132974/</link>			
			<description><![CDATA[Недавно при работе над одним проектом у нас родился интересный код. Мы сразу же принялись тестировать наших коллег на смекалку, с просьбой объяснить что это, как работает и что делает. Даже опытных разработчиков этот код вгоняет в ступор (после пары минут истерического смеха). Итак, встречаем:<br/>
<br/>
<pre><code class="cs">    Action&lt;Action&gt; action = (Action action) =&gt; { action(); };
</code></pre><br/>
Прежде чем заглянуть под хабракат, попробуйте ответить на несколько вопросов (сделаем вид, что заголовок поста Вы не видели):<br/>
<ul>
<li>На каком языке написан этот кусок кода?</li>
<li>Верен ли он синтаксически? Скомпилируется ли он?</li>
<li>Имеет ли данный код смысл? Что он делает?</li>
<li>Зачем такой код мог быть написан?</li>
<li>Как можно улучшить этот код? (Как бы его написали Вы?)</li>
<li>Приведите реальные варианты использования этого кода.</li>
<li>Какие потенциальные проблемы могут возникнуть при его применении?</li>
</ul><br/>
Ответили? Тогда ныряем под кат за предысторией и разъяснениями.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/132974/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Sat, 19 Nov 2011 17:54:04 GMT</pubDate>
			<author>shurman</author>
			<category>.Net 4.0</category><category>паттерн стратегия</category><category>Action delegate</category><category>кодоребус</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] И снова скриншоты в один клик (C#)]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/132541/</guid>
			<link>http://habrahabr.ru/blogs/net/132541/</link>			
			<description><![CDATA[<h4>Синопсис</h4><br/>
Не так давно начал изучать C# и очень скоро эксперименты переросли в желание написать какое-нибудь легкое, простое, но вместе с тем полезное и удобное приложение. Постепенно родилась идея программы, предназначенной для быстрого снятия скриншотов и автоматической загрузки их на хостинг. Удовлетворяющих моим требованиям аналогов я не нашел, поэтому я решил все же сделать её самостоятельно, а уже после этого один хороший человек подал идею написать статью об этом.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/132541/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 14 Nov 2011 10:05:26 GMT</pubDate>
			<author>AlexanderG</author>
			<category>csharp</category><category>screenpaste</category><category>screenshot</category><category>скриншот</category><category>.net 4.0</category><category>imgur</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] Делаем сами remote-desktop клиент для смартфона. Часть 1: серверная]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/128467/</guid>
			<link>http://habrahabr.ru/blogs/net/128467/</link>			
			<description><![CDATA[Я всегда хотел себе портативный удалённый рабочий стол на телефоне, чтобы, например, когда кто-то стучится в аську, а я на балкон покурить вышел, можно было не уходя с балкона посмотреть на телефоне, кто там. Ну или, например, переключить трек, принимая ванну. Да, я знаю, что всевозможные VNC-клиенты уже написаны, но я решил сделать такую программу сам.<br/>
<br/>
В первой части статьи я ограничусь только созданием несложного remote desktop приложения, в котором и сервер, и клиент будут работать на обычных настольных компьютерах. Во второй и третьей части я рассмотрю сжатие изображения и программирование собственно телефона. <br/>
<br/>
Конечную функциональность я представляю себе так: на дектопе (сервер) резидентно висит программка, которая, по пришедшему снаружи UDP-пакету начинает передавать фрагменты изображения на обратный адрес. На телефоне (клиент) отображаются присланные фрагменты. Пользователь может сдвинуть оконо отображения или кликнуть внутри него. Информация о сдвигах и кликах передаётся на сервер так же – по UDP.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/128467/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 15 Sep 2011 07:04:00 GMT</pubDate>
			<author>i_told_you_so</author>
			<category>с</category><category>.net 4.0</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] Доступ к базе данных Oracle средствами ADO.NET Entity Framework]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/127603/</guid>
			<link>http://habrahabr.ru/blogs/net/127603/</link>			
			<description><![CDATA[<br/>
Доброго времени суток. <br/>
<br/>
При разработке программного обеспечения всегда руководствовался простым правилом, чем меньше в развивающемся проекте используется сторонних компонентов, платформ, технологий, тем лучше. Почти все гениальное — просто. К сожалению, у разработчика не всегда есть возможность свободного выбора средств и систем, с которыми он работает. Вот и мне достался проект Windows Forms + ODAC + Oracle DB Server. <br/>
<br/>
С большой радостью узнал о выходе <a href="http://www.oracle.com/technetwork/topics/dotnet/downloads/oracleefbeta-302521.html">Oracle Data Access Components (ODAC) for Microsoft Entity Framework and LINQ to Entities (Beta2)</a>. Очень ждал этого момента и вот свершилось! Можно не использовать сторонние ORM — все под ключ.<br/>
<br/>
Как научить приложение использовать Entity Framework через установленный на конечных машинах клиент ODAC — описано в <a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/EntityFrameworkOBE/EntityFrameworkOBE.htm">пошаговой инструкции от Oracle</a>. Кому интересно, как избавиться от необходимости установки клиента Oracle на машинах пользователей, прошу под кат.<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/127603/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Fri, 02 Sep 2011 14:42:58 GMT</pubDate>
			<author>buhbot</author>
			<category>.net 4.0</category><category>entity framework 4.0</category><category>oracle database</category><category>linq</category><category>linqtosql</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[ASP.NET MVC / [Из песочницы] OAuth2 клиент для ASP.NET]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/aspnet_mvc/127039/</guid>
			<link>http://habrahabr.ru/blogs/aspnet_mvc/127039/</link>			
			<description><![CDATA[<i>OAuth2 – протокол авторизации, логическое развитие OAuth 1.0. Подробнее про него можно прочитать <a href="http://habrahabr.ru/company/mailru/blog/115163">здесь</a>.</i><br/>
<br/>
Блуждая по интернету в поисках нормальной библиотеки OAuth клиента для .net я не нашёл ничего подходящего и решил написать сам, благо ничего сложного в этом нет. От библиотеки требуется производить три действия: выдавать ссылку на запрос кода авторизации, после возврата от авторизатора перенаправлять приложение на страницу запроса токена и далее производить запросы используя полученный токен.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/aspnet_mvc/127039/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 25 Aug 2011 08:05:59 GMT</pubDate>
			<author>Antimony</author>
			<category>oauth 2.0</category><category>.net 4.0</category>
		</item>
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] Windows Workflow Foundation – для чего и в каких случаях применять]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/125008/</guid>
			<link>http://habrahabr.ru/blogs/net/125008/</link>			
			<description><![CDATA[<br/>
<a href="http://2.bp.blogspot.com/-nSEvI6p5hEo/TibjeuOu8vI/AAAAAAAAAGQ/MkOJsIiNxLk/s1600/workflow.jpg"><img src="http://2.bp.blogspot.com/-nSEvI6p5hEo/TibjeuOu8vI/AAAAAAAAAGQ/MkOJsIiNxLk/s320/workflow.jpg"/></a><br/>
<i><b>Базовое понимание</b></i><br/>
&nbsp; <br/>
Помню, еще в университете перед реализацией любого алгоритма мы описывали его в виде блок схемы, и только после этого переходили непосредственно к кодированию. <i>Workflow</i>, как одна из парадигм программирования, на ряду с процедурным и объектно ориентированным подходами, как раз и позволяет нам визуально реализовать любой процесс, используя набор предопределенных функциональных блоков (<i>Activity</i>), при этом, избавляя от его последующего кодирования. <br/>
<br/>
Библиотека <i>WF</i>, являясь одной из реализаций парадигмы <i>Workflow</i>, предоставляет следующие основные возможности: <br/>
<br/>
 — богатый набор функциональных блоков; <br/>
 — расширение набора стандартных функциональных блоков пользовательскими; <br/>
 — сохранение и возобновление экземпляров <i>Workflow</i> в процессе их исполнения; <br/>
 — использование <i>Workflow</i> дизайнера в вашем приложении; <br/>
 — интеграция с <i>WCF</i>; <br/>
 — пошаговая диагностика непосредственно в <i>Workflow</i> дизайнере; <br/>
 — и многое другое. <br/>
<br/>
<i><b>Критерии применения</b></i><br/>
<br/>
Как известно, каждой технологии своя область применения. Для определения необходимости использования <i>WF</i> при реализации конкретного алгоритма/процесса я применяю 3 критерия: <br/>
<br/>
<b>1. Реализация алгоритма/процесса постоянно меняется. </b><br/>
<br/>
В нашей компании мы разработали подсистему <i>Workflow</i>, которая является ядром всех продуктов. Имея, к примеру, десятки клиентов наших продуктов, у которых десятки процессов, получаем сотни разных изменяющихся процессов. <br/>
<br/>
<b>2. Процесс/алгоритм имеет длительный срок выполнения. </b><br/>
<br/>
В наших продуктах жизненный цикл процессов исчисляется днями и неделями. При этом, в случае сбоя или перегрузки сервера, процессы должны корректно возобновить и продолжить выполнение. <br/>
<br/>
<b>3. Нужно предоставить возможность изменения алгоритма/процесса конечному пользователю без вмешательства программиста. </b><br/>
<br/>
Мы разработали свой собственный дизайнер, чтобы максимально упростить и облегчить редактирование процессов конечному пользователю (бизнес-аналитику). Это позволяет снять нагрузку с разработчиков. А возможность видеть и самим с легкостью менять свои процессы очень привлекательна для клиентов. <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/125008/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 27 Jul 2011 10:09:17 GMT</pubDate>
			<author>alexn</author>
			<category>.net 4.0</category><category>windows workflow foundation</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[.NET / Сложно о простом или особенности Linq to objects]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/124231/</guid>
			<link>http://habrahabr.ru/blogs/net/124231/</link>			
			<description><![CDATA[LINQ to objects сейчас прочно вошел в нашу жизнь, победоносными шагами ступая по всему стеку .net приложений. В этой статье я бы хотел привести примеры нескольких не очевидных вещей, с которыми довелось столкнуться, работая с LINQ. Интересно — прошу под кат.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/124231/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Fri, 15 Jul 2011 13:29:07 GMT</pubDate>
			<author>sdramare</author>
			<category>.net 4.0</category><category>.net</category><category>c-sharp</category><category>linq</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[TDD / Assert DSL на примере .Net]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/tdd/124254/</guid>
			<link>http://habrahabr.ru/blogs/tdd/124254/</link>			
			<description><![CDATA[Никто уже не отрицает полезность тестов в любой сколько-нибудь сложной системе. Без тестов очень быстро можно скатиться в хаос и проводить большую часть времени в отладчике, занимаясь поиском и отловом косвенных эффектов от изменений той или иной части приложения. Тесты важны, нужны и так далее по тексту.<br/>
<br/>
По науке, тесты являются документированием системы. Грамотно написанные тесты дают понять, как работает система, как ведет себя, причем читаться все это должно как готовая спецификация на поведение системы. Т.е. в идеале должен получаться связный и понятный текст. Это идеал, к которому постепенно приближаются методы тестирования, начиная от юнит тестирования и наиболее явно проявляясь в поведенческом/приемочном тестировании, когда сами тесты уже пишутся на языке бизнеса (в этом моменте вспоминаем Fitnesse).<br/>
<br/>
При написании тестов не стоит скупиться на строчки кода и классы, важно только их правильно структурировать. Я считаю, что может быть вполне нормальной ситуация, когда у вас тестовый класс состоит только из одного тестового метода – не надо этого стесняться, это гораздо лучше, чем классы на 20 экранов. HD экранов.<br/>
<br/>
В общем, все должно быть направлено на максимальную ясность и четкость тестов, чтобы явно было видно все взаимосвязи. Чтобы можно было восстановить логику программы по одним лишь тестам. В дело читабельности пойдет не только Assert DSL (Domain Specific Language), но и именование файлов, подход <a href="http://www.arrangeactassert.com/why-and-what-is-arrange-act-assert/">Arrange Act Assert</a>. Все это <a href="http://www.gotdotnet.ru/blogs/ulu/5715/">не новые подходы</a> как оказывается, но широкой известности пока не получившие, судя по тому, что я вижу в окружающих меня проектах. Да и сам я натолкнулся на новые темы случайно, изучая <a href="https://github.com/structuremap/structuremap">исходные коды</a> StructureMap.<br/>
<br/>
Чтобы не томить, сразу расскажу какие основные шаги предлагаются для улучшения тестов:<br/>
<ul>
<li>Именовать тестовые файлы по основному методу, который тестируется.</li>
<li>Использовать DSL  для создания объектов, чтобы методы делать максимально лаконичными.</li>
<li>Стараться писать тесты в стиле «один тестовый метод – один assert».</li>
<li>Структурировать внутренности теста.</li>
<li>Создать и использовать Assert DSL.</li>
</ul><br/>
Думаю что для большинства многие перечисленные пункты не новость, и почти все они применяются в реальной разработке.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/tdd/124254/#habracut">Раскрытие темы с примерами и в картинках</a> </div>]]></description>
			
			<pubDate>Fri, 15 Jul 2011 13:00:25 GMT</pubDate>
			<author>VioletTape</author>
			<category>.net 4.0</category><category>tdd</category><category>dsl</category><category>extension methods</category><category>fluent interface</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[.NET / [Из песочницы] Создание динамического прокси-объекта с помощью dynamic типа]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/124078/</guid>
			<link>http://habrahabr.ru/blogs/net/124078/</link>			
			<description><![CDATA[Как и многие люди, перед которыми стоит задача написания очередного UI для своего приложения, я периодически сталкиваюсь с необходимостью создания для UI своей собственной модели, которая в какой-то мере повторяет модель предметной области, однако при этом расширяем и/или изменяет ее. И вот что из этого вышло.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/124078/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 13 Jul 2011 16:31:50 GMT</pubDate>
			<author>sdramare</author>
			<category>.net 4.0</category><category>dynamic proxy</category><category>mvvm</category><category>c-sharp</category>
		</item>
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[.NET / Как работает Thread Pool?]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/109705/</guid>
			<link>http://habrahabr.ru/blogs/net/109705/</link>			
			<description><![CDATA[<a href="http://lh6.ggpht.com/_v3Wh-CouMRc/TQDic7CW8qI/AAAAAAAAAVQ/kgc9uVJPK8s/s1600-h/clip_image001%5B4%5D.gif"><img title="clip_image001" alt="clip_image001" src="http://lh6.ggpht.com/_v3Wh-CouMRc/TQDid_P2rhI/AAAAAAAAAVU/tPaQdnSrBt0/clip_image001_thumb%5B1%5D.gif?imgmax=800"/></a><br/>
<br/>
<b>Пул потоков</b><br/>
<br/>
Известно, что создание, уничтожение, переключение между потоками – это дорогостоящая операция. Для того чтобы избежать накладных расходов связанных с этим, основной идеей пула потоков в .NET стало уменьшение числа задействованных потоков и увеличение выполненной ими работы. Поэтому в пуле нас всегда ждет определенное известное CLR количество потоков готовых на выполнение задач. И именно поэтому почти все книги про .NET говорят, что для быстрого создания и выполнения потока ThreadPool.QueueUserWorkItem годится, а метод Start класса Thread нет. <br/>
<br/>
В .NET 3.5 и ранее Thread Pool состоит из глобальной очереди, в которую попадают задачи на выполнение из потока нашего приложения и определенного числа рабочих потоков – worker threads, всегда готовых прийти на помощь. Именно рабочие потоки разбирают задачи из глобальной очереди на выполнение, и когда они выполнят задачу – они обращаются в глобальную очередь за новой порцией. Но так как потоки разбирают задачи одновременно, то для того чтобы два рабочих не взяли одну и ту же порцию – существует синхронизация между ними посредством блокировок. Блокировки же могут стать «бутылочным горлышком» этого механизма и производительность из-за этого упадет. <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/109705/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 09 Dec 2010 14:19:46 GMT</pubDate>
			<author>Regfor</author>
			<category>.net 4.0</category><category>.net</category><category>parallelism</category><category>tpl</category><category>task</category><category>threadpool</category><category>thread pool</category><category>потоки</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Open source / Composite C1 теперь OpenSource .NET CMS]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/open_source/105353/</guid>
			<link>http://habrahabr.ru/blogs/open_source/105353/</link>			
			<description><![CDATA[Датская компания Composite A/S объявила о переходе своей CMS в OpenSource.<br/>
Работает на IIS, .NET 4 и ASP.NET. Как базу данных может использовать как текствый XML так и MS SQL<br/>
Кратко об возможностях:<br/>
<ul>
<li> Ориентирована на использования XSLT для формирования HTML, но также позволят вставлять обычные ASP.NET контролы</li>
<li> Генерируемые дататипы</li>
<li> Древовидная структура страниц</li>
<li> Темплейты с разным количеством контент-блоков</li>
</ul><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/open_source/105353/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Fri, 01 Oct 2010 08:00:58 GMT</pubDate>
			<author>XAMelleOH</author>
			<category>.NET 4.0</category><category>XSLT</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[.NET / Распараллеливание задач. Случай «идеальной параллельности». Часть 2]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/104103/</guid>
			<link>http://habrahabr.ru/blogs/net/104103/</link>			
			<description><![CDATA[<h3>Предлагаемые решения&nbsp;в&nbsp;.NET 4</h3><br/>
Это&nbsp;вторая&nbsp;часть статьи, посвященной распараллеливанию идеальных циклов. В <a href="http://habrahabr.ru/blogs/net/104078/" title="Распараллеливание задач. Случай «идеальной параллельности». Часть 1">первой части</a> были&nbsp;рассмотрены проблемы, возникающие при&nbsp;этом, и&nbsp;общие подходы к&nbsp;их&nbsp;решению. В этой мы поговорим о&nbsp;конкретных библиотечных компонентах, предоставляемых .NET 4.0 для&nbsp;поддержки&nbsp;этих&nbsp;задач.<br/>
<br/>
Для&nbsp;распараллеливания&nbsp;«идеальных» циклов&nbsp;предоставляются&nbsp;следующие варианты: <br/>
<ul>
<li>класс&nbsp;System.Threading.Tasks.Parallel с&nbsp;методами&nbsp;For (), ForEach ()</li>
<li>Parallel LINQ с&nbsp;методом расширения&nbsp;AsParallel (). </li>
</ul><br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/104103/#habracut">Читать дальше</a> </div>]]></description>
			
			<pubDate>Mon, 13 Sep 2010 06:03:57 GMT</pubDate>
			<author>AndreyTS</author>
			<category>.net 4.0</category><category>parallel programming</category><category>plinq</category><category>parallel.for</category><category>parallel.foreach</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[.NET / Динамические вызовы: сравнение методов]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/103558/</guid>
			<link>http://habrahabr.ru/blogs/net/103558/</link>			
			<description><![CDATA[<img src="http://habrastorage.org/storage/9f944933/20d9c064/e1c22822/1042b663.png"/><br/>
 <h1>Динамические вызовы: что это и зачем?</h1><br/>
<br/>
Думаю, для каждого разработчика, работающим на статических языках программирования, иногда возникала необходимость прибегнуть к динамическим вызовам — вызвать метод чего-то, о чем пока еще ничего не известно. Или получить какое-то свойство у какого-то объекта, о котором будет известно только в run-time.<br/>
<br/>
Это иногда используется в алгоритмах, основанных на так называемой «утиной типизации» (duck typing): <blockquote>Если что-то выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть.</blockquote><br/>
<br/>
В данной статье я хотел бы рассмотреть основные доступные в Microsoft .NET 4.0 способы, сравнить их производительность и синтаксис.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/103558/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Sun, 05 Sep 2010 01:44:22 GMT</pubDate>
			<author>Olostan</author>
			<category>.net</category><category>.net 4.0</category><category>dynamic</category><category>benchmarking</category>
		</item>
		
		
		
		
		
		
		
		
	
		
		
		
			
		<item>		
			<title><![CDATA[.NET / [Перевод] Новая коллекция SortedSet&lt;Т&gt; в .NET 4.0]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/102697/</guid>
			<link>http://habrahabr.ru/blogs/net/102697/</link>
			<description><![CDATA[С новейшим выпуском .NET Framework версии 4.0, в библиотеке классов появилась новая коллекция в System.Collections.Generic — SortedSet&lt;T&gt;.<br/>
<br/>
Две главные особенности SortedSet&lt;T&gt;:<br/>
<br/>
<ul>
<li>Не позволено повторение элементов</li>
<li>поддерживается отсортированный порядок, когда элементы вставлены или удалены без воздействия на производительность.</li>
</ul><br/>
<br/>
Чтобы было понятнее, давайте пройдём тесты, которые я сделал.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/net/102697/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 26 Aug 2010 09:28:44 GMT</pubDate>
			<author>cL1Nk3r</author>
			<category>.net 4.0</category><category>collections</category><category>generic</category><category>обзор</category>
		</item>
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Персональные блоги / Алгоритмическая сложность итерирования по хэшсету в C#]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/personal/90217/</guid>
			<link>http://habrahabr.ru/blogs/personal/90217/</link>			
			<description><![CDATA[Исследуя <a href="http://www.red-gate.com/products/reflector/">Reflector</a>'ом внутренности классов .NET фреймворка, нередко можно узнать много любопытных вещей. Например, однажды (довольно давно) я узнал, что для дотнетовского QuickSort можно <i>очень</i> просто придумать такой класс входных данных, на которых сортировка будет осуществляться за квадратичное время. Так, на массивах-«пирамидках» (то есть на таких, в которых максимальный элемент находится посередине, второй и третий по величине — слева и справа от него, и так далее) быстрая сортировка была сравнима по времени с пузырьковой. Причина очевидна — в качестве медианы выбирался средний элемент массива. Как с этой проблемой дело обстоит сейчас, не знаю, но если она всё ещё имеет место — это заслуживает отдельного поста.<br/>
<br/>
Речь сейчас пойдёт о другом. Всем, кто знаком с дотнетом, полагаю, известен класс <a href="http://msdn.microsoft.com/en-us/library/bb359438(VS.100).aspx">System.Collections.Generic.<b>HashSet&lt;T&gt;</b></a>. Как гласит MSDN, класс HashSet предоставляет высокопроизводительные операции над множествами. Как вы думаете, за какое время ваш компьютер, скажем, двести раз пробежит по хэшсету из одного элемента? Сотая доля секунды? Меньше? Вовсе не факт! <div class="habracut"> <a class="habracut" href="http://DNNX.habrahabr.ru/blog/90217/#habracut">Об этом - дальше.</a> </div>]]></description>
			
			<pubDate>Fri, 23 Jul 2010 18:51:52 GMT</pubDate>
			<author>DNNX</author>
			<category>HashSet</category><category>алгоритм</category><category>эффективность</category><category>.net 4.0</category><category>производительность</category>
		</item>
		
		
		
		
		
		
		
		
	
	
	
	
	
	
	
	

	
</channel>
</rss>

