Как стать автором
Поиск
Написать публикацию
Обновить
133.82

.NET *

Хаб со знаниями про .NET

Сначала показывать
Период
Уровень сложности

PowerShell 3 – Finally on the DLR!

Время на прочтение4 мин
Количество просмотров4.1K
Для тех кто в танке сообщаем: PowerShell 3 будет официально выпущен вместе с Windows 8. CTP появился вместе с релизом Windows 8 Developer Preview (на конференции //Build/ от Microsoft в сентябре 2011). Второй CTP релиз появился аккурат под Рождество.
В течение нескольких месяцев я имел возможность поиграться с PowerShell 3 и теперь хочу рассказать Вам о своих впечатлениях.
Читать дальше →

The Art of Unit Testing

Время на прочтение4 мин
Количество просмотров58K


Есть некоторые категории знаний, которые профессиональный разработчик познает в процессе своей работы, не прилагая к этому особенных дополнительных усилий. Вот, например, мало кто из нас читал замечательную книгу по регулярным выражениям Джеффри Фирддла, чтобы познакомиться с одноименной темой. Безусловно, есть масса людей, для которых «регвыры» стали смыслом жизни и без подобных фундаментальных знаний никак не обойтись. Но в большинстве случаев пары мелких статей и справки в соответствующем разделе документации будет достаточно для более или менее комфортной работы с регулярными выражениями (если такое понятие, как «комфортная работа» с регулярными выражениями вообще существуетJ).

Аналогичным образом мы обычно относимся и к изучению юнит тестирования. Ведь юнит-тесты – это же не rocket science; для их изучения не требуется многолетняя подготовка и множество бессонных ночей проведенных за изучением толстенных «талмудов» от гуру юнит-тестирования. Концепцию автоматизированного тестирования кода можно объяснить за 10 минут, а познакомившись с одним из тестовых фреймворков семейства xUnit (еще 15 минут), вы сможете работать с любым другим фреймворком практически сразу же. Затем нужно будет потратить еще 20 минут на изучение какого-нибудь изоляционного фреймворка, типа Rhino Mocks, и, вуаля, у нас есть еще один профессионал в области юнит-тестов.

Читать дальше →

Observable.Generate и перечисление списков

Время на прочтение4 мин
Количество просмотров5.1K
В библиотеке реактивных расширений (a.k.a. Rx – Reactive Extensions) существует вспомогательный метод Observable.Generate, который позволяет генерировать простые observable-последовательности.

IObservable<string> xs = Observable.Generate<int, string>(
    initialState: 0, // начальное значение
    condition: x => x < 10, // условие завершения генерации
    iterate: x => x + 1, // изменение значения
    resultSelector: x => x.ToString() // преобразование текущего значения в результат
    );
 
xs.Subscribe(x => Console.WriteLine("x: {0}", x));

Читать дальше →

Создание Push Notification сервиса на основе WCF REST

Время на прочтение5 мин
Количество просмотров13K
В качестве вступления

Модель push-нотификаций является распространённой моделью для обмена сообщениями. Она подразумевает не получение информации по запросу, а немедленную её передачу отправителю при появлении этой информации на сервере.

Стандартный подход с ипользованием wsDualHttpBinding

Возможность создания push-механизма предоставляет и WCF. Этот фреймворк позволяет создать push-сервис с использованием wsDualHttpBinding контракта. Такой контракт позволяет для каждого запроса определить метод обратного вызова, который будет вызван при наступлении какого-либо события.
Если применить этот механизм к системе обмена сообщениями, то получим следующий алгоритм:
Читать дальше →

Windows Workflow Foundation – для чего и в каких случаях применять

Время на прочтение8 мин
Количество просмотров23K

Базовое понимание
 
Помню, еще в университете перед реализацией любого алгоритма мы описывали его в виде блок схемы, и только после этого переходили непосредственно к кодированию. Workflow, как одна из парадигм программирования, на ряду с процедурным и объектно ориентированным подходами, как раз и позволяет нам визуально реализовать любой процесс, используя набор предопределенных функциональных блоков (Activity), при этом, избавляя от его последующего кодирования.

Библиотека WF, являясь одной из реализаций парадигмы Workflow, предоставляет следующие основные возможности:

— богатый набор функциональных блоков;
— расширение набора стандартных функциональных блоков пользовательскими;
— сохранение и возобновление экземпляров Workflow в процессе их исполнения;
— использование Workflow дизайнера в вашем приложении;
— интеграция с WCF;
— пошаговая диагностика непосредственно в Workflow дизайнере;
— и многое другое.

Критерии применения

Как известно, каждой технологии своя область применения. Для определения необходимости использования WF при реализации конкретного алгоритма/процесса я применяю 3 критерия:

1. Реализация алгоритма/процесса постоянно меняется.

В нашей компании мы разработали подсистему Workflow, которая является ядром всех продуктов. Имея, к примеру, десятки клиентов наших продуктов, у которых десятки процессов, получаем сотни разных изменяющихся процессов.

2. Процесс/алгоритм имеет длительный срок выполнения.

В наших продуктах жизненный цикл процессов исчисляется днями и неделями. При этом, в случае сбоя или перегрузки сервера, процессы должны корректно возобновить и продолжить выполнение.

3. Нужно предоставить возможность изменения алгоритма/процесса конечному пользователю без вмешательства программиста.

Мы разработали свой собственный дизайнер, чтобы максимально упростить и облегчить редактирование процессов конечному пользователю (бизнес-аналитику). Это позволяет снять нагрузку с разработчиков. А возможность видеть и самим с легкостью менять свои процессы очень привлекательна для клиентов.
Читать дальше →

TransactionScope — заманчивый, но коварный

Время на прочтение4 мин
Количество просмотров34K
Давным-давно вышел ADO.NET 2.0, а вместе с ним и сборка System.Transactions, содержащая класс TransactionScope — путеводитель в мир легкого и непринужденного использования транзакций. В сегодняшней статье я рассмотрю некоторые нюансы, возникающие при использовании этой дырявой, но такой симпатичной абстракции.

Читать дальше →

Задачка по C#

Время на прочтение1 мин
Количество просмотров2.7K
При каких условиях пройдет данный тест?

    [Fact]
    public void NewTest()
    {
      var a = new A();

      a.GetType().GetField("b").SetValue(a, 83);
      a.GetType().GetField("c").SetValue(a, 42);

      Assert.Equal(a.b, a.c);
    }

upd: В комментариях написали уже 5 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно.

Amf и C# на примере бота для Settlers online

Время на прочтение7 мин
Количество просмотров11K
После прочтения постов о Settlers и конкретно Пишем утилиту для Settlers Online, возникло желание несколько оптимизировать описанный там процесс, т.к. подход меня несколько смутил, и, заодно, рассмотреть аспект amf формата в C#. Предположим, что выбрана задача написать бота для этой игры.

Для начала нам необходимо разобраться с этапами логина.
Читать дальше

Приглашаем авторов для создания электронного журнала по .NET

Время на прочтение2 мин
Количество просмотров1.1K
Приглашаем независимых специалистов и экспертов, студентов-партнеров и других заинтересованных людей присоединиться к проекту по созданию электронного журнала, посвященному разработке для платформы .NET.
Читать дальше →

Распараллеливание задач. Случай «идеальной параллельности». Часть 1

Время на прочтение11 мин
Количество просмотров24K

Распараллеливание кода без зависимостей


Введение

В первой части данной статьи мы поговорим о подходах к параллельной обработке циклов в тех удачных случаях, когда между отдельными итерациями нет зависимостей, и они могут корректно выполняться параллельно. Во второй части — рассмотрим появившиеся в .NET 4.0 механизмы для управления таким распараллеливанием, и выявим тонкости работы этих механизмов.

Читать дальше →

Новая коллекция SortedSet<Т> в .NET 4.0

Время на прочтение3 мин
Количество просмотров16K
С новейшим выпуском .NET Framework версии 4.0, в библиотеке классов появилась новая коллекция в System.Collections.Generic — SortedSet<T>.

Две главные особенности SortedSet<T>:

  • Не позволено повторение элементов
  • поддерживается отсортированный порядок, когда элементы вставлены или удалены без воздействия на производительность.


Чтобы было понятнее, давайте пройдём тесты, которые я сделал.

Читать дальше →

Автоматизация изменений БД в .NET

Время на прочтение5 мин
Количество просмотров6.1K
Здравствуйте!
Я хотел бы рассказать о проектах Migrator.Net и ECM7.Migrator.

Migrator.Net — это механизм контроля версий базы данных, похожий на Migrations в Ruby on Rails. Migrator позволяет автоматизировать выполнение операций изменения БД и автоматически ведет учет версий.

Migrator написан на C# и будет удобен, в первую очередь, при использовании в проектах под.NET.

Сначала я сделаю небольшой обзор указанных проектов, а потом постараюсь выделить их «плюсы» и «минусы».

Читать дальше →

Обзор библиотеки для интерактивной визуализации данных WPF DynamicDataDisplay

Время на прочтение6 мин
Количество просмотров17K
image
Здравствуйте, уважаемые хабрапользователи!

В этом посте я расскажу вам о нашей разработке — бесплатной Open-source библиотеке для интерактивной визуализации данных WPF DynamicDataDisplay.
Немного о нас: мы — это сотрудники лаборатории технологий Microsoft факультета Вычислительной математики и кибернетики Московского государственного университета. Недавно на Хабре была статья о том, каким наш факультет видится студенту первого курса, а теперь этот пост позволит вам немного больше узнать о том, чем занимаются студенты нашего факультета на более старших курсах. Пример того, над чем работают пятикурсники — это наша библиотека для интерактивной визуализации научных данных DynamicDataDisplay (сокращенно — D3).
Читать дальше →

Ближайшие события

Text Template Transformation Toolkit (T4): генератор кода в Visual Studio

Время на прочтение8 мин
Количество просмотров29K
Приветствую, Хабр!

Сегодня мы поговорим о рутине. Время от времени каждому программисту приходится совершать много нудной, объемной и шаблонной работы, которую постоянно так и хочется автоматизировать, да руки не доходят. Вот об одном малоизвестном способе упростить себе жизнь с помощью кодогенерации я и хочу сегодня рассказать сообществу дотнетчиков. Способ известен как Text Template Transformation Toolkit или попросту T4.

А что это такое?

DI и IoC для начинающих

Время на прочтение4 мин
Количество просмотров129K
Тема DI/IoC достаточно простая, но в сети очень сложно найти хорошее описание того, как это работает и зачем это нужно. Вот моя попытка, с использованием Unity. Хорошо ли объяснена тема – судить вам.

Читать дальше →

.NET Framework. Memory management

Время на прочтение11 мин
Количество просмотров23K
В данной статье рассматриваются некоторые моменты по работе с памятью в .NET Framework. Статья описывает работу GC, как GC контролирует свои хип, режимы работы GC. Приведены примеры, по использованию памяти в обход GC. Я изложил не только легко доступную информацию, ну и ту, что доступна только при изучении дампов приложений, написанных на .NET. Надеюсь статья получилась информативной и не очень скучной. Следующая статья будет про загрузчик, JIT, и его структур данных, таких как Method Tables, Method Descriptors и EEClass.
Немного дополнительной информации о управляемой памяти в .NET

Еще раз про asp.net и jQuery

Время на прочтение3 мин
Количество просмотров2.4K

В своей статье ListView с разных сторон я описал некоторые техники, помогающие в работе с ListView в проектах asp.net. В этой заметке хотел бы описать еще одно решение задачи связанной с ListView. В статье важную роль, также, играет jQuery.
Читать дальше →

Самый маленький .net

Время на прочтение1 мин
Количество просмотров529
Интересный сервис открыт по адресу www.hanselman.com/smallestdotnet.
Этот сервис проверяет установленную версию .NET Framework и предлагает скачать минимальное по размеру обновление для вашего случая. То есть, если у вас стоит .NET 3.0, то вам не придется качать 200 мб дистрибутив .net 3.5 sp1.

Вот некоторая статистика по размерам:
Version of Framework installed Download size to get to 3.5SP1 Time to Download(512 kbps)
None ~56 MB 15 min
2.0 ~50 MB 15 min
2.0SP1 ~33 MB 9 min
3.0SP1 ~10 MB 3 min

Подсветка исходного кода

Время на прочтение2 мин
Количество просмотров5K
Переписал и изменил (специально для Хабры, а точнее для .NET блога) на досуге небольшой модуль, который подсвечивает исходный код C#, VB.NET, HTML/XML/ASPX, JavaScript и SQL.

Если Вы хотите вставить кусок исходного кода в новую запись или комментарий к записи, используйте Source Code Highlighter, который подсветит Ваш код.

Есть поддержка нумерации строк и вставки переноса строк, если вы отметили «Отключить автоформатирование» при написании поста.

Читать дальше →

Заметки по архитектуре .NET библиотеки: кастомные структуры как средство валидации значений

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.3K

Ах, если бы пользователи всегда разбирались в предметной области и передавали в наши замечательные алгоритмы только допустимые данные… Но реальность беспощадна, и проверки аргументов — необходимость. В статье посмотрим, как определение своего значимого типа может с этим помочь.

Читать далее

Вклад авторов