понедельник, 29 августа 2011 г.

Рекомендации по разработке под WCF от Michele

Давненько ничего не выкидывал в блог по WCF. Пора наверстать упущеное.

Некоторые рекомендации от Michele Leroux Bustamante по разработке WCF сервисов в моем вольном переводе. Оригинал записи тут.

·         SOA

o   SOA хорошая штука, сервисы хороши для повторного использования, однако не стоит перебарщивать.

o   Попробуйте создать 2-3 при простом обращении к сервису.

·         Addressing

o   Никогда не зашивайте в коде базовый адрес или адрес endpoint’а.

o   Задавайте базовый адрес в конфигурации.

o   Будет еще лучше, если вы будете использовать runtime конфигурацию для упрощения управления конфигурацией веб-фермы (необходимо дописывать свой код).

·         Хостинг

o   Используйте хостинг в консольном приложении для начального тестирования, если конечно хостинг на IIS\WAS не доступен локально.

o   Всегда тестируйте сервис на реальном хостинге.

o   Попробуйте использовать WAS с AppFabric если это возможно.

o   Используйте AppFabric для автостарта и визуализации ошибок (предпочтительно использовать свою систему диагностики для централизации предупреждений, исключений, отладочной информации и трейсов).

o   Служба Windows удобна в случае неизвестной конфигурации при развертывании.

o   Оператор using

§  Нормально для тестовых хостов (например консольного), когда при закрытии уничтожается домен приложения.

§  Не круто для остальных хостов (cлужбы Windows, рабочей роли, клиента windows), где вы должны разделять вызов Close() в обычном случае и Abort() при наличии исключений, чтобы нормально очистить ресурсы.

§  Никогда не используйте using для проксиков.

o   Типично использовать свой хост для настройки общих behavior и инициализации endpoint’ов

§  Требуется ServiceHostFactory для endpoint’ов на IIS/WAS.

·         Bindings

o   Вы всегда будете настраивать стандартные binding’и

§  Ограничения на размер сообщения и чтения из пакета.

§  Безопасность

o   Часто требуется <customBinding>.

§  Для настройки специальных возможностей, которые не предоставляют стандартные binding’и.

o   Сначала завершите разработку общего дизайна системы, потом устанавливайте шаблон binging’а.

§  Включение модели безопасности.

§  Вы, возможно, придете к 2-3 binding’ам, которые будут использованы клиентами/сервисом и другими слоями.

§  Оберните их в повторно используемые типы binding’ов, чтобы вызывать в runtime или сконфигурируйте с помощью своей секции конфигурации.

o   Создание разделяемого кода между клиентом и сервисом (если такое возможно).

§  Клиентская версия может незначительно отличаться.

·         Endpoints

o   Храните требования enpoint’а в разделяемом коде между клиентом и сервисом, если он у вас есть с обеих сторон.

§  Динамические аспекты, такие как базовый адрес придет из соответствующих конфигурационных файлов.

o   Инициализируйте endpoint’ы программно (свой  ServiceHost и код для инициализации прокси).

§  Хорошо, при использовании веб-ферм. Уменьшает затраты на обновление множества серверов.

§  Не требуется для Windows Azure? Но все равно полезен.

·         Proxies (клиентские прокси-классы)

o   Используйте генерацию прокси классов только для тестирования или клиентов, которые не распостраняют свои компоненты.

o   Создайте отдельную разделяемую библиотеку контрактов (контракты сервисов, сообщений, исключений) и сущностей (контракт данных, код собственной сериализации).

o   Всегда вызывайте Close() явно и Abort() в случае исключений.

o   Желательно не использовать ClientBase<T>, больше контроля наз каналом и фабрикой каналов.

§  Используйте свой базовый класс, например WCF Proxy Generator (http://wcfproxygenerator.codeplex.com/)

§  Примечание: обновленный экземпляр будет размещен на этой неделе.

Posted via email from Комуникликабельность

понедельник, 8 августа 2011 г.

Стоимость найма

Замечательная статья о найме и удержании сотрудников.

Из раза в раз я видел один и тот же процесс, связанный с увольнением и наймом: человек уходит, зачастую из-за достаточно небольшой суммы, которую ему отказываются давать, заодно еще пытаясь промотивировать его остаться высказываниями в духе «ты этих денег не стоишь», «таких зарплат на рынке сейчас нет» и т. д. Проблема в том, что в подавляющем большинстве случаев экономии для компании в конечном итоге не получается.
В этом играют роль несколько моментов: стоимость найма, стоимость обучения, снижение производительности, риски, связанные с новым сотрудником, зарплата.
Во-первых, практически всегда платить в конечном итоге новому сотруднику приходится столько же, сколько просил ушедший. Это откровение обычно шокирует: мы же в прошлый раз нанимали человека на эту позицию за гораздо меньшие деньги!
Кроме того почему-то практически никто и никогда не считает стоимость найма и обучения. Нанимая программистов к себе в команду, я проводил минимум 6-8 собеседований с кандидатами. При этом на собеседовании присутствую не только я, но и hr, а на «втором круге» еще и руководитель группы, куда должен попасть человек (да, у нас была странная ситуация, когда фактически второе и первое собеседование были поменяны местами). Учтите при этом, что собеседования с хорошим кандидатом получаются долгими и выматывающими, каждое это минимум 3-4 человеко-часа далеко не самых низкооплачиваемых сотрудников. Добавьте к этому время на работу с резюме, переговоры с кандидатами, внутренние согласования, и получится, что найм одного кандидата стоит в среднем 2 человеко-недели вовлеченных в этот процесс. В рубли, думается, каждый пересчитает сам.
Печально, но расходы на этом не заканчиваются: человека надо учить, учить долго и внимательно. В зависимости от специфики и обучаемости уходит на это от полугода до года (да, как-то сложилось, что я работал в достаточно специфичной области, так что на рынке просто не было готовых специалистов, которых можно было бы сразу выпустить в бой). Через полгода на человека уже тратится времени меньше, чем он экономит, через год следить за ним постоянно уже не нужно, да и разжевывать задачи излишне: навыков и опыта ему хватает, чтобы самому разобраться, что к чему. Таким образом, всё время обучения, выплачивая полноценную зарплату, мы фактически спонсируем обучение человека.
При этом не надо забывать, что в любом случае найм нового человека – риск. Пройдет ли он испытательный срок, впишется ли в команду, насколько точно его удалось оценить, не уйдет ли он через пол года... заранее сказать очень тяжело, если вообще возможно. С учетом вышеприведенных факторов получается, что нанимать человека меньше, чем на два года просто экономически невыгодно, а тех, кого уже выучили, недо держать... Понятно, вот только редко так делается.

Оригинал статьи находится здесь.
Репост на itblogs. Думаю там обсуждение будет активней.

Posted via email from Комуникликабельность

понедельник, 1 августа 2011 г.

Untitled

По тесту Тест Айзенка на интеллект (IQ), 40 вопросов на сайте Психологические тесты у меня следующие результаты:

Правильных ответов - 30 из 40. Коэффициент интеллекта - 135. Уровень Вашего интеллекта находится выше среднего уровня. Поздравляем!!! Или Вы сейчас занимаете в жизни хорошую позицию или у Вас хорошие перспективы! Согласно исследованиям, таким уровнем интеллекта обладает небольшая часть населения, что можно наблюдать ниже.

Вот как распределяются значения IQ у всех людей:

Пройдите и вы тесты

Развлекаловка конечно, но приятно.

Posted via email from Комуникликабельность