Dynamic Proxy + Expression Tree

В своей работе я всегда пытаюсь абстрагироваться как можно сильнее от всех раздражающих факторов, будь то шум в офисе или сложность управления WCF-сервисом. И вот как раз с последним мне недавно пришла интересная идея. Суть в чем: есть некий класс, который внутри себя полностью управляет каким-то WCF-сервисом, то есть поднимает его (если это self-hosted), подключается к нему, обрабатывает все ошибки, а также завершает работу сервиса. При этом API написано самым приятным образом, и конечному пользователю вообще не нужно думать о том, что у него сервисы какие-то используются, в коде всё выглядит максимально прозрачно. Читать далее

Mac OS X 10.10 Yosemite Gmail SMTP fix

Недавно обновился до Yosemite и знаете, что? Перестала работать отправка писем через Mail. Начал гуглить. Везде дается ссылка на Fixing Mac OS X 10.10 Yosemite Gmail Bug In Mail App. Там человек с широкой душой тупо предлагает удалить аккаунты и снова добавить. Это представляете, СКОЛЬКО писем заново закачиваться будут?

Hey, you don’t need to delete your mail accounts, just re-add SMTP account!

Читать далее

Тестирование методов с ref-параметрами

Крутые пацаны пишут крутой код, который является крутым в том числе потому, что он покрыт тестами. А эти тесты нужно тоже писать не через задницу, между прочим. Многие ведь как? Напишут код, напишут на него тесты, в качестве моковых\стабовых значений используют мини-классы (а иногда и не мини). Not bad, конечно, но тем не менее, читать трудновато. Гораздо лучше, когда используются какие-то тестовые фреймворки, например, Rhino Mocks. Вот об одном из фреймворков и пойдет речь, о Moq.

Существует такая проблема: если вы имеет метод с ref-параметрами, которые хочется «замочить», то Moq нельзя использовать для тестирования, потому что он, из коробки, пока еще глуповат для таких экзерсисов. Казалось бы, кому нужны эти ref- out- параметры — но в большом энтерпрайзе случается даже .NET 2.0 (тьфу тьфу тьфу не у меня).

Читать далее

Тестирование и BizTalk

Каждый программист, более-менее ценящий свое время и нервы, знает, как славно работать в проекте, где всё покрыто тестами. О тестировании говорят везде, даже при собеседовании на работу теперь можно нарваться на вопрос «А как будете тестировать?». Более того, просидев ночь в отладке, до самого себя как-то легко и непринужденно открываешь, что пара-тройка тестов могли бы спасти начинающего стартапера, не говоря уже о суровых парнях из жестокого энтерпрайза. Правда, почему-то тестирование BizTalk приложений не пользуется популярностью, хотя я уверен, если уж и что-то нужно тестировать, то это точно средства интеграции.

Читать далее

Блокирование учетной записи в корпоративном домене

Многие компании устанавливают политику безопасности, согласно которой нужно менять свой пароль раз в 2-3 месяца, а особо параноидальные компании требуют смены пароля и того чаще, например, раз в две недели. Каждый раз придумывать сложный пароль сложно, конечно же, но речь не об этом.

После очередной смены пароля я стал сталкиваться с тем, что моя учетная запись стала блокироваться. Судя по всему, где-то использовался мой старый пароль, а сервер, не будь дураком, при трех попытках неудачной авторизации аккаунт блокирует минут на 5. Что приводит к чему – постоянно TFS отказывает мне, Outlook, в сговоре с Exchange, не дает прочитать почту. Да и сам Windows 7 Enterprise деликатно намекает, что надо бы из системы выйти и ввести свой пароль. Ну и естественно когда из системы выходишь, он потом минут 5 не пускает, пока блокировка не снимется.

В общем, достало меня это. Я уже и службы все проверил, чтобы не запускались in my behalf, и Credential Manager вычистил от вообще всех паролей. Всё равно блокируется учетка. А сегодня надо мне было сделать daily merge, и меня снова выкинул TFS. Тут я сильно расстроился, настолько сильно, что не стал набирать номер Service Desk, что я обычно делаю (не богам же горшки обжигать?) и что ни к чему не привело. Ну и решил проблему. Оказывается, что Credential Manager не показывает пароли, сохраненные в контексте учетки SYSTEM, а поэтому я и не мог удалить окончательно все свои кешированные данные.

Проблема решается следующим образом:

  1. Скачивается PsExec.exe отсюда (made by Russinovich, приблуда типа телнета), скидывается в папку C:\windows\system32
  2. Запускается cmd c админскими правами (run as administrator), там набирается команда  <psexec -i -s -d cmd.exe> (что значит «запустить cmd.exe от аккаунта SYSTEM»)
  3. В открывшемся новом окне cmd вводится команда <rundll32 keymgr.dll,KRShowKeyMgr>
  4. Появится окно со списком  Stored User Names and Passwords. Вот оттуда всё и надо удалить (естественно, на собственный страх и риск. Но риска тут немного, просто потом нужно будет еще раз ввести свой пароль).
  5. Профит, аккаунт больше не блокируется. И передавайте привет беспомощным админам своей корпорации!

Microsoft BizTalk Server 2010 R2: Основы программирования III

Опубликовано в статье MSDeveloper.ru

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

Перед чтением этой статьи рекомендую ознакомиться с предыдущими двумя.

Читать далее

Microsoft BizTalk Server 2010 R2: Основы программирования II

Статья опубликована  в журнале MSDeveloper.RU

В февральской статье мы рассмотрели основные компоненты для программирования под BizTalk Server (здесь и далее BTS), выбрав довольно простую задачу по сложению двух цифр. Для этой статьи изменим формулировку задачи, введем элементы интеграции систем, т.е. то, для чего, собственно, и был разработан BTS. Читать далее

Microsoft BizTalk Server 2010 R2: Основы программирования

Что это такое?

Статья опубликована в журнала MSDeveloper.RU

Когда я впервые столкнулся с BizTalk Server, то довольно долго пытался «въехать», как же с его помощью начать создавать приложения. О том, что такое BizTalk Server и для чего оно нужно, мне было понятно из обзорных статей, например, на сайте Microsoft есть довольно неплохая обзорная информация по этой технологии (http://www.microsoft.com/biztalk/ru/ru/overview.aspx), более того, наверное, на русском языке больше материала просто не найти.

Итак, что же такое BizTalk Server? Если кратко, то это серверное решение Microsoft, которое служит для связывания разрозненных систем, с использованием различных способов обмена информацией. Можно выделить две основные функции BizTalk Server:

· «Брокер сообщений», т.е. преобразование сообщений из формата одной системы в формат другой;

· «Интеграционная шина», т.е. связывание систем через использование унифицированного канала обмена информацией.

Ознакомление с теоретической частью интеграции корпоративных приложений я рекомендую начать с книги «Шаблоны интеграции корпоративных приложений» (авторы Г. Хоп и Б. Вульф), в данной статье я попытаюсь показать, как можно с наименьшими усилиями начать писать приложения, используя Microsoft BizTalk Server 2010 R2. Читать далее