В предыдущей статье по NanacyFX Создаем первое приложение на NancyFX. Часть вторая. Bootstrapper мы познакомились с встроеным в NancyFX TinyIoC и научились его применять. В данной статье мы более детально коснемся модулей Nancy.
Алексей Ануфриев @Razaz
Пользователь
Пример «claims-based» авторизации с «xml-based» конфигурацией политики доступа
13 min
8.6KTutorial
Введение
Тема аутентификации и авторизации всегда будет актуальна для большинства web-приложений. Многие .NET разработчики уже успели познакомиться с Windows Identity Foundation (WIF), его подходами и возможностями для реализации так называемых «identity-aware» приложений. Для тех, кто не успел поработать с WIF, первое знакомство можно начать с изучения следующего раздела MSDN. В данной же статье я предлагаю более детально взглянуть на так называемый «claims-based» подход к авторизации пользователей путем изучения того, как это может выглядеть на примере.
+5
Запуск игры под Windows Phone 8
4 min
34KЯ предыдущих статьях я рассказывал, как мы запускали игру на Google Play и в социальных сетях. Следующей платформой должна была стать iOS, но опять возникли заминки и было принято решение опробовать пока Windows Phone 8. На портирование игры ушло несколько недель, и еще столько же на одобрение в маркете. В статье я расскажу, что мы проделали и что из этого вышло.
+20
Встречайте RyuJIT: новый JIT-компилятор для .NET
4 min
19KМир движется к 64-битным вычислениям, несмотря на то, что в результате программы не всегда работают быстрее или производительнее по сравнению с 32-битными. Многие 32-битные программы, по разным причинам, могут работать быстрее 64-битных. Одним из таких примеров является 64-битный JIT-компилятор .NET-фреймворка. Он выполняет большую работу для того, чтобы ваша программа работала очень быстро, но сам он, увы, не настолько быстр, как хотелось бы. Это мы и собираемся исправить. Представляем x64 JIT-компилятор нового поколения, который способен компилировать 64-битный .NET код в 2 раза быстрее.
+43
Разбираем x.509 сертификат
11 min
222KПривет, %username%!
Так уж вышло, что несмотря на относительно неплохое понимание инфраструктуры открытых ключей, содержимое *.crt файлов всегда оставалось для меня полнейшей загадкой.
Нет, не поймите неправильно. Я знаю, что x.509 сертификат содержит информацию о владельце, открытый ключ, сведения об удостоверяющем центре и электронную цифровую подпись. Но при установке очередного сертификата меня всегда мучило любопытство.
Чем отличается идентификатор ключа от отпечатка? Какие данные сертификата подписываются, а какие нет? И что за структура данных позволяет хранить всю эту информацию, сводя избыточность к минимуму.
Но вот наконец-то любопытство перебороло лень и в данном посте я постараюсь описать структуру x.509 сертификатов и ответить на эти и другие вопросы.
+71
Руководство по разработке модулей расширений на C# для Visual Studio 2005-2012 и Atmel Studio
86 min
43KАннотация
Около года назад мы опубликовали в блоге цикл статей о разработке плагинов для Visual Studio на языке C#. Сейчас мы переработали эти материалы, добавили новые разделы и предлагаем вашему вниманию новый вариант руководства.
+45
ZBase32, Base32 и Base64 алгоритмы кодирования
4 min
47KПривет!
Многие используют Base64 кодирование, реже Base32 и еще реже ZBase32 (вы знаете о таком?), но не все понимают их алгоритмы. В статье я описываю достоинства, недостатки данных кодировок, а также рассказываю о их реализации.
Многие используют Base64 кодирование, реже Base32 и еще реже ZBase32 (вы знаете о таком?), но не все понимают их алгоритмы. В статье я описываю достоинства, недостатки данных кодировок, а также рассказываю о их реализации.
+32
Основы архитектуры IIS, или запросопровод для ASP.NET
20 min
208KTutorial
В прошлом году мне пришлось отсобеседовать около 10-15 кандидатов на должность веб-программиста на ASP.NET средней квалификации. В качестве вопросов «на засыпку», или «со звёздочкой», я просил рассказать, что происходит с HTTP-запросом от момента его поступления на 80-й порт сервера до передачи управления коду aspx-страницы. Статистика была удручающей: ни один из кандидатов не смог выдать хоть что-нибудь внятное. И этому есть своё объяснение: ни в MSDN с technet, ни на специализированном ресурсе iis.net, ни в книгах a-la «ASP.NET для профессионалов», ни в блогах данной теме не уделяется должного внимания – информацию приходится собирать чуть ли не по крупицам. Я даже знаю людей, которые решили написать свой собственный веб-сервер (Игорь, Георгий, привет!), чтобы не разбираться в работе IIS. Единственная толковая статья – «Introduction to IIS Architectures» Риган Темплин (Reagan Templin). Но и она остаётся на периферии интересов аспнетчиков.
Хотя мне лично уже не так интересны чисто технические вопросы, я решил собрать в кучу свой накопленный опыт, раскопать на просторах Сети любопытные детали и передать сие сакральное знание массам, пока оно ещё не устарело. Сразу оговорюсь, что статья ориентирована в большей степени на IIS 7.x, иногда будут ответвления про 6-ку. С 8-й версией в работе не сталкивался, поэтому решил обойти её в этой статье стороной. Но, уверен, читатель без труда разберётся с восьмёркой, освоив изложенный ниже материал.
+47
Введение в Spring Frameworks: Spring MVC
8 min
21KПривет, Хабр.
Это моя первая статья.Прошу сильно молотком не бить.
Сегодня, этим сообщением начнется мой цикл статей о фреймворках Spring.
Я не буду вдаваться в тонкости теории, здесь на хабре достаточно статей об этом. Предпочитаю практику.
Тем не менее, стоит напомнить, что работать со Spring Framework можно как с помощью xml-конфигурации, так и с помощью аннотаций. Также, ничего не мешает комбинировать оба подхода.
Лично я предпочитаю работать с аннотациями, чего и вам советую. Поэтому все примеры, которые я буду приводить, будут использовать аннотации.
Это моя первая статья.Прошу сильно молотком не бить.
Сегодня, этим сообщением начнется мой цикл статей о фреймворках Spring.
Я не буду вдаваться в тонкости теории, здесь на хабре достаточно статей об этом. Предпочитаю практику.
Тем не менее, стоит напомнить, что работать со Spring Framework можно как с помощью xml-конфигурации, так и с помощью аннотаций. Также, ничего не мешает комбинировать оба подхода.
Лично я предпочитаю работать с аннотациями, чего и вам советую. Поэтому все примеры, которые я буду приводить, будут использовать аннотации.
+14
Защита систем интернет-банкинга: TLS, электронная подпись, ГОСТы, токены
3 min
21KМногие современные системы ДБО предоставляют для обслуживания клиентов Web-интерфейс. Преимущества «тонкого клиента» перед «толстым клиентом» очевидны. В то же время существуют федеральные законы, приказы регуляторов и требования к системам ДБО от Банка России, многие из которых касаются именно защиты информации в системах ДБО. Как-то их нужно исполнять и обычно применяются криптосредства, реализующие российские криптоалгоритмы (ГОСТы). Эти криптосредства закрывают часть «дыр», но при их внедрении может существенно возрасти сложность пользования системой ДБО для клиента.
В данной статье мы из «кирпичиков» соберем и испытаем на демонстрационном интернет-банке комплексное решение — по сути специальный переносной защищенный браузер, хранящийся на flash-памяти — в котором будут реализованы закрытие канала (TLS), строгая двухфакторная аутентификация на WEB-ресурсе и электронная подпись платежных поручений посредством USB-токена Рутокен ЭЦП или trustscreen-устройства Рутокен PINPad. Фишка решения в том, что оно абсолютно необременительно для конечного пользователя — подключил токен, запустил браузер и сразу же можно начинать тратить деньги.
TLS, аутентификация и подпись реализуются с использованием российской криптографии.
Дальше пойдет мануал с пояснениями.
+11
Учимся готовить: Spring 3 MVC + Spring Security + Hibernate
12 min
355KДобрый день! Меня зовут Антон Щастный.
Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.
Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.
Инфраструктура:
В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.
Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.
Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.
Что будет в приложении:
Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.
Что будем использовать:
- веб фреймворк Spring MVC,
- фреймворк Spring Security,
- ORM библиотеку Hibernate,
- MySQL в качестве СУБД.
Инфраструктура:
- редактор SpringSource Tool Suite,
- сборщик проектов Maven,
- система логгирования Log4j,
- постоянное подключение к интернету.
В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.
Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.
+39
Две задачки для собеседования разработчиков
4 min
98KРаньше мне часто приходилось собеседовать людей на различные позиции, большая часть из них были разработчики приложений и баз данных. Процесс этот довольно утомительный, т.к. программисты люди смелые, творческие, любознательные и целеустремленные.
В моей практике были всякие вопросы. В статье я выделю три основных типа и расскажу, на чем я в итоге остановился и почему.
В моей практике были всякие вопросы. В статье я выделю три основных типа и расскажу, на чем я в итоге остановился и почему.
+16
Вывод метаданных модели MVC в динамическую разметку
11 min
3.1KВ ASP.NET MVC метаданные — атрибуты, описывающие поля модели, используются как при генерации разметки (вывод названия поля, его заполнителя и т.д.), так и при валидации данных (вывод правил валидации). Условно можно выделить 2 вида валидации:
Клиентская валидация хороша тем, что пользователь сразу же видит допущенные ошибки в заполнении полей и может внести поправки без необходимости отправлять данные серверу (ненавязчивая валидация). Именно этот тип валидации необходим в нашем случае.
Итак, необходимо реализовать автоматический вывод метаданных модели MVC на клиентскую сторону и ненавязчивую валидацию.
- клиентская валидация
- серверная валидация
Клиентская валидация хороша тем, что пользователь сразу же видит допущенные ошибки в заполнении полей и может внести поправки без необходимости отправлять данные серверу (ненавязчивая валидация). Именно этот тип валидации необходим в нашем случае.
в чем собственно проблема ?
При использовании классического подхода к генерации разметки все работает автоматически, но что если мы используем ajax и формируем html разметку динамически на клиенте? В этом случае автоматически ничего не добавится в разметку. Можно конечно же все необходимое добавить вручную и казалось бы проблема исчерпана, но здесь встает проблема дублирования кода, так как одни и те же данные приходится описывать дважды — на сервере и на клиенте, что в свою очередь влечет другие проблемы. В ряде случаев динамическая разметка очень удобна, но здесь встает вопрос о выводе метаданных модели и валидации данных на стороне клиента. Об этом речь пойдет далее.
Итак, необходимо реализовать автоматический вывод метаданных модели MVC на клиентскую сторону и ненавязчивую валидацию.
+4
Получение метаданных .NET на клиенте с использованием ajax
3 min
4.7KВсем, кто программирует в среде ASP.NET MVC, хорошо известно, насколько широко используются метаданные в .NET вообще и в MVC в частности. В MVC, атрибуты применяются как при генерации разметки, так и при валидации данных, полученных с клиента.
При использовании классической модели программирования сайтов это прекрасно работает. Но что, если Вы работаете с использование ajax и формируете html разметку динамически на клиенте? Вы хотите иметь метаданные модели (далее МДМ) на клиенте? Я — да!
При использовании классической модели программирования сайтов это прекрасно работает. Но что, если Вы работаете с использование ajax и формируете html разметку динамически на клиенте? Вы хотите иметь метаданные модели (далее МДМ) на клиенте? Я — да!
+2
Автоматизация тестирования Web-приложений
13 min
107KTutorial
Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.
Путем проб и ошибок мы пришли к следующему технологическому стеку:
- SpecFlow (опционально): DSL
- NUnit: тестовый фреймворк
- PageObject + PageElements: UI-абстракиця
- Контекст тестирования (информация о целевом окружении, пользователях системы)
- Selenium.WebDriver
Для запуска тестов по расписанию мы используем TFS 2012 и TeamCity.
В статье я опишу, как мы к этому пришли, типовые ошибки и пути их решения.
+19
Хлебные крошки (breadcrumbs) в asp.net MVC3
6 min
9.9KВ данном посте будет рассмотрен процесс создания меню навигации и хлебных крошек в проекте asp.net MVC3. Сначала мы создадим пустой проект, потом добавим sitemap провайдер, несколько контроллеров и представлений и в итоге заставим провайдер вывести хлебные крошки.
+8
Новости и предложения разрабочтикам Windows Phone с MWC
3 min
6.4K Сегодня в блоге Windows Phone Developer Blog появился пост с интересной информацией и не менее интересными специальными предложениями. Не смог удержаться, чтобы не поделиться с сообществом!
Сначала несколько интересных фактов о платформе Windows Phone на текущий момент.
Существенно выросла активность в Windows Phone Store — максимально за всю историю — c 75% увеличением количества загрузок приложений, на 91% увеличением доходов с платных приложений и более 1 миллиарда транзакций. Также, благодаря вашим отличным приложениям количество скачиваемых одним пользователем приложений увеличилось до 55.
Сначала несколько интересных фактов о платформе Windows Phone на текущий момент.
Существенно выросла активность в Windows Phone Store — максимально за всю историю — c 75% увеличением количества загрузок приложений, на 91% увеличением доходов с платных приложений и более 1 миллиарда транзакций. Также, благодаря вашим отличным приложениям количество скачиваемых одним пользователем приложений увеличилось до 55.
+4
Secure Software Development — конференция о безопасной разработке ПО
2 min
3.3KМесто проведения: Выставочный Центр «ИнфоПространство», 1-й Зачатьевский переулок, дом 4
Дата: 5 марта 2013
Регистрация: http://careerlab.ru/mssd/
Сайт конференции: http://www.mssdcon.ru
Друзья, 5-го марта в Москве Microsoft проводит вторую конференцию, посвященную подходам к безопасной разработке mssdcon.ru. Так называемый жизненный цикл безопасный разработки (Security Development Lifecуcle) становится все более популярным среди профессиональных разработчиков. В наше время, когда без IT нельзя практически ступить и шагу, безопасности технологий, которые мы все используем, посвящается все больше и больше внимания, материалов и даже законов и постановлений: закон о персональных данных, указ Президента о создании государственной системы обнаружения, предупреждения и ликвидации последствий компьютерных атак на информационные ресурсы Российской Федерации и т.д.
Как всем нам хорошо известно безопасность должна быть комплексной, а ее обеспечение должно носить процессный характер. Так вот SDL – это лишь один из компонентов обеспечения безопасности конечной системы, но при этом весьма важный и даже, в какой-то степени, особенный, так как является вкладом со стороны разработчика в защищенность будущей информационной системы, функционирующей на стороне заказчика. Основными целями SDL являются сокращение количества и снижения опасности уязвимостей. Формулировка целей не оперирует абсолютными значениями, так как полное избавление от уязвимостей, во-первых, скорей всего, невозможно, а, во-вторых, не факт, что экономически целесообразно. Собственно, SDL использует классический риск-ориентированный подход, основная цель которого – снизить риски до приемлемого уровня, а не тратить огромное количество сил и средств на их полную ликвидацию.
Дата: 5 марта 2013
Регистрация: http://careerlab.ru/mssd/
Сайт конференции: http://www.mssdcon.ru
Друзья, 5-го марта в Москве Microsoft проводит вторую конференцию, посвященную подходам к безопасной разработке mssdcon.ru. Так называемый жизненный цикл безопасный разработки (Security Development Lifecуcle) становится все более популярным среди профессиональных разработчиков. В наше время, когда без IT нельзя практически ступить и шагу, безопасности технологий, которые мы все используем, посвящается все больше и больше внимания, материалов и даже законов и постановлений: закон о персональных данных, указ Президента о создании государственной системы обнаружения, предупреждения и ликвидации последствий компьютерных атак на информационные ресурсы Российской Федерации и т.д.
Как всем нам хорошо известно безопасность должна быть комплексной, а ее обеспечение должно носить процессный характер. Так вот SDL – это лишь один из компонентов обеспечения безопасности конечной системы, но при этом весьма важный и даже, в какой-то степени, особенный, так как является вкладом со стороны разработчика в защищенность будущей информационной системы, функционирующей на стороне заказчика. Основными целями SDL являются сокращение количества и снижения опасности уязвимостей. Формулировка целей не оперирует абсолютными значениями, так как полное избавление от уязвимостей, во-первых, скорей всего, невозможно, а, во-вторых, не факт, что экономически целесообразно. Собственно, SDL использует классический риск-ориентированный подход, основная цель которого – снизить риски до приемлемого уровня, а не тратить огромное количество сил и средств на их полную ликвидацию.
+8
Генерация случайных чисел в .NET
7 min
135KПеревод статьи Random numbers широко известного в узких кругах Джона Скита. Остановился на этой статье, так как в своё время сам столкнулся с описываемой в ней проблемой.
Просматривая темы по .NET и C# на сайте StackOverflow, можно увидеть бесчисленное множество вопросов с упоминанием слова «random», в которых, по сути, поднимается один и тот же извечный и «неубиваемый» вопрос: почему генератор случайных чисел System.Random «не работает» и как это «исправить». Данная статья посвящена рассмотрению данной проблемы и способов её решения.
Просматривая темы по .NET и C# на сайте StackOverflow, можно увидеть бесчисленное множество вопросов с упоминанием слова «random», в которых, по сути, поднимается один и тот же извечный и «неубиваемый» вопрос: почему генератор случайных чисел System.Random «не работает» и как это «исправить». Данная статья посвящена рассмотрению данной проблемы и способов её решения.
+31
Версионность API в .NET MVC 4
6 min
9.9KTutorial
Доброго времени суток.
С появлением ASP.NET Web API появился удобный и мощный инструмент для создания API для вашего сайта. Но, как известно, с течением времени, ваш API может меняться, дополняться или может быть вовсе переделан с нуля. Для совместимости со старыми клиентами необходимо реализовать версионность.
К сожалению, на данный момент Microsoft не предоставила удобного и простого способа для реализации версионности. В интернете можно найти некоторую информацию на эту тему, но, как правило, большинство найденных мной решений сводятся к добавлению параметра для версии в каждый запрос и его обработке. Мне же хотелось получить более гибкий метод для разделения на версии, который не будет засорять методы контроллера и избавит от множества блоков if else. И самым главным критерием для меня была возможность иметь контроллеры с одинаковыми именами для одних и тех же методов API, но разделенных на версии с помощью пространств имен.
В тоже время, в ASP.NET MVC Web API есть достаточно мощный механизм в виде интерфейса IHttpControllerSelector, с помощью которого можно реализовать версионность, оставив код чистым и понятным.
Давайте посмотрим, что из этого вышло.
С появлением ASP.NET Web API появился удобный и мощный инструмент для создания API для вашего сайта. Но, как известно, с течением времени, ваш API может меняться, дополняться или может быть вовсе переделан с нуля. Для совместимости со старыми клиентами необходимо реализовать версионность.
К сожалению, на данный момент Microsoft не предоставила удобного и простого способа для реализации версионности. В интернете можно найти некоторую информацию на эту тему, но, как правило, большинство найденных мной решений сводятся к добавлению параметра для версии в каждый запрос и его обработке. Мне же хотелось получить более гибкий метод для разделения на версии, который не будет засорять методы контроллера и избавит от множества блоков if else. И самым главным критерием для меня была возможность иметь контроллеры с одинаковыми именами для одних и тех же методов API, но разделенных на версии с помощью пространств имен.
В тоже время, в ASP.NET MVC Web API есть достаточно мощный механизм в виде интерфейса IHttpControllerSelector, с помощью которого можно реализовать версионность, оставив код чистым и понятным.
Давайте посмотрим, что из этого вышло.
+13
Information
- Rating
- Does not participate
- Date of birth
- Registered
- Activity