Доброе время суток, хабр. Этот топик — продолжение цикла статей, основанных на материалах онлайн курса M101 от 10gen. Поскольку вторая неделя является одной из самых насыщенных, она будет разбита на две статьи.
Юрий @Gilga
Пользователь
Использование Lua скриптов в .NET с LuaInterface
4 min
40KПривет, Хабрахабр!
Этот небольшой пост родился после того, как я решил узнать, как можно запускать скрипты Lua совместно с игрой на C# (либо на другом .NET-языке). с использованием библиотеки LuaInterface. Я был впечатлен легкостью этого интерфейса по сравнению с lua.h на C++

C# на приличном уровне, иметь понятие об основах программирования, а также о подключении ссылок в проекте на Visual Studio
Этот небольшой пост родился после того, как я решил узнать, как можно запускать скрипты Lua совместно с игрой на C# (либо на другом .NET-языке). с использованием библиотеки LuaInterface. Я был впечатлен легкостью этого интерфейса по сравнению с lua.h на C++

Что нужно знать
C# на приличном уровне, иметь понятие об основах программирования, а также о подключении ссылок в проекте на Visual Studio
+16
Сессии в ASP.NET или как создать собственный провайдер
11 min
32K
ASP.NET предлагает множество вариантов для работы с сессиями из коробки:
- Хранение информации о сессиях в памяти сервера, внутри процесса ASP.NET
- Хранение информации о сессиях на сервере состояний
- Хранение информации о сессиях в базе данных SQL Server в заранее предопределенной схеме
Но сколько бы ни было вариантов из коробки, они не могут полностью ответить на те задачи, которые встают перед разработчиком. В этой статье мы рассмотрим как реализовать собственный провайдер хранилища состояния сессий (сеансов) для ASP.NET (MVC).
В качестве хранилища сессий будет выступать SQL Server. Работать с базой данных мы будем через EntityFramework.
+12
Фильтры данных на ASP.NET MVC и Entity Framework
12 min
23KОчень часто в различных веб-приложениях мы работаем с данными, выбранными из таблиц БД. И нередко необходимо предоставлять пользователю возможность фильтровать эти данные. Можно, конечно, для каждого случая собирать данные с формы в ручную и в ручную создавать соответствующий запрос под них. Но что если у нас 20 разных страниц, представляющих те, или иные данные? Обрабатывать в ручную все долго и не удобно, а поддерживать еще хуже. Моя версия решения данной проблемы на ASP.NET MVC + Entity Framework под катом.
+16
Асинхронное программирование в приложениях ASP.NET MVC 4
6 min
42KTranslation
Прочитав статью об изучении MVC и увидев комментарий пользователя RouR, я очень заинтересовался данной темой, ну и на ходу решил перевести указанную им оригинальную статью.
Если и тебе, дорогой хабражитель, это интересно — прошу под кат!
«Я попробую показать вам, что нового несет в себе C# 5.0 с точки зрения асинхронного программирования при использовании ключевого слова await. Особенно для веб-приложений ASP.NET MVC 4.»
Если и тебе, дорогой хабражитель, это интересно — прошу под кат!
«Я попробую показать вам, что нового несет в себе C# 5.0 с точки зрения асинхронного программирования при использовании ключевого слова await. Особенно для веб-приложений ASP.NET MVC 4.»
+10
Локализация ASP.NET MVC приложения с помощью БД
8 min
19K
Данная статья будет узконаправленной и покрывает локализацию через БД, поэтому подробно расписывать как делать локализацию с помощью файлов ресурсов (resx) можно посмотреть, например, тут: MVC 2: Полное руководство по локализации. Для локализации с помощью представлений я тоже там ссылки.
Для начала я кратко расскажу о вариантах локализации сайта, покажу пример создания своего ResourceProviderFactory, после чего создам небольшое приложение для демонстрации.
+11
Мой велосипед Entity FrameWork, Auto Migration, With Save Data
3 min
3.5KЛюблю я велосипеды.
В процессе написания ПО с использование EF, часто меняется структура, что создает проблемы. До версии 4.3 — пересоздание БД с потерей данных и необходимостью наполнения тестовыми.
С версии 4.3. появилась Миграция.
В процессе написания ПО с использование EF, часто меняется структура, что создает проблемы. До версии 4.3 — пересоздание БД с потерей данных и необходимостью наполнения тестовыми.
С версии 4.3. появилась Миграция.
+6
Управления конфигурационными файлами в .net проектах
3 min
7K
Setty.org
Предисловие
Я думаю, что каждый .net разработчик хоть раз, да сталкивался с проблемами управления конфигами для различных окружений. Часто есть необходимость при разработке новой функциональной возможности поменять строку подключения к БД, не мешая при этом другим разработчикам. Для этого обычно в конфиге меняется строка подключения на локальную базу данных, а потом эти изменения комитятся… Все остальные разработчики негодуют, потому что система перестала работать на их локальных машинах.
Если команда распределённая часто есть необходимость в спецефических настройках. Иногда вам нужны одинаковые настройки для разных проектов в солюшене и вы просто копируете их. В конце концов хотелось бы иметь возможность добавлять различную логику в конфиг. К примеру, на локальных машинах разработчиков отправленная почта должна сохранятся на диске, в то время как на тестовом сервере почта должна отправлятся с использованием сервиса отправки почты. Я думаю можно привести много примеров, которые сложно реализуемы без дополнительного механизма управления конфигами.
+13
ASP.NET MVC 3/4: Противодействие взлому
5 min
25K
Не так давно прочитал очередную статью о SQL-инъекциях на хабре, статья была посвящена правда PHP, завязались споры как нужно поступать с данными от пользователя, через какие функции их прогонять, с PHP знаком поверхностно, но общую картину усвоил. Тогда и родилась идея показать как обстоят дела с безопасностью в ASP.NET MVC.
+32
Нестандартное использование Protected Configuration Provider в проектах ASP.NET Web Forms
3 min
1.9KСегодня я хотел бы рассказать об одной интересной, на мой взгляд, возможности, которую можно получить от Protected Configuration Provider.
Итак, что такое Protected Configuration Provider? Это класс, который позволяет производить шифрование и дешифрование содержимого определённых секций файла конфигурации web.config. Обычно это используется при развёртывании готового проекта на хостинге для защиты конфиденциальной информации — имена пользователей, пароли, строки подключения к базе данных, ключи шифрования, и т.д.
Итак, что такое Protected Configuration Provider? Это класс, который позволяет производить шифрование и дешифрование содержимого определённых секций файла конфигурации web.config. Обычно это используется при развёртывании готового проекта на хостинге для защиты конфиденциальной информации — имена пользователей, пароли, строки подключения к базе данных, ключи шифрования, и т.д.
+4
Twitter.Bootstrap.MVC4 – пакет Twitter Bootstrap для ASP.NET MVC 4
2 min
32K
Я хочу рассказать о NuGet пакете, который пригодится тем, кто решил создать приложение на связке ASP.NET MVC 4 и Twitter Bootstrap. Этот пакет не только добавит ресурсы Twitter Bootstrap в проект, но и предоставит готовые способы решения часто возникающих задач.
+28
Простой путь создания сложных ASP.NET MVC контролов
6 min
23KНаверняка все создавали свои asp.net mvc контролы (речь, конечно, про asp.net mvc кодеров). Вам должен быть знаком метод создания контролов, используя TagBuilder? Пробовали писать реально сложные контролы (например с большим количеством javascript-та или разметки, которая зависит от опций)? Тогда наверняка вам знаком адЪ экранирования кавычек, конкатенации строк (или вызова .Format() функции) и т.п. «неудобства». Я предлагаю взглянуть на достаточно простую методику, которая позволит избежать подобных вещей и в тоже время сосредоточиться на функциональной стороне контролов, а не на программировании шелухи.
+12
RESTFul Api контроллеры в .NET MVC 4
5 min
100KTutorial

Летом вышел релиз новой версии фреймворка, но поработать с ним получилось только недавно. В новой версии было добавлено много полезных штук, об одной из них, а именно ApiController, я хотел бы сегодня рассказать.
Благодаря им стало возможно делать RESTFull Api без лишних усилий. На небольшом примере заодно разберем работу с OData.
+15
Версионность 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
Listeners в Ext.NET
7 min
6.6KTutorial
Translation
В Ext.NET понимание разницы между различными типами событий и их обработчиками является очень важным. Выбор зависит от конкретного сценария, который вы хотите реализовать вашем приложении.
В данной серии из четырех статей мы рассмотрим различные события на клиенте и на сервере, как они вызываются, обрабатываются и какие имеют преимущества. В данной статье будут рассмотрены Listeners – позволяющие «слушать» события на клиенте и обрабатывать его там же, на клиенте, избегая запроса к серверу.
Все компоненты в Ext.NET, такие как Panel, Window, Button, имеют следующие четыре типа обработчиков событий:
Listeners являются обработчиками событий на клиенте. Они выполняют ваш код после появления некоторого события, например, нажатия на кнопку (Button).
Использование Intellisense в Visual Studio дает возможность узнать какие конкретные события есть у каждого компонента. Каждый компонент наследует события от своего предка и обычно добавляет свои.
Все классы в Ext.NET наследуют события от базового класса Observable. Все события находятся в Listeners.

Если компонент вызывает некоторое событие на клиенте, то для того чтобы ваш код на клиенте обработал данное событие вы должны подписаться на это событие добавив JavaScript функцию.
В данной серии из четырех статей мы рассмотрим различные события на клиенте и на сервере, как они вызываются, обрабатываются и какие имеют преимущества. В данной статье будут рассмотрены Listeners – позволяющие «слушать» события на клиенте и обрабатывать его там же, на клиенте, избегая запроса к серверу.
Все компоненты в Ext.NET, такие как Panel, Window, Button, имеют следующие четыре типа обработчиков событий:
Listeners |
Слушают события на клиенте и обрабатывают их так же на стороне клиента. |
DirectEvents |
Слушают события на клиенте, но выполняют их обработку на стороне сервера, вызов происходит посредством AJAX запроса. |
DirectMethods |
Позволяют вызывать функции на сервере, например написанные на C# или VB, вызов происходит посредством AJAX запроса. |
MessageBus |
MessageBus позволяет передавать различные события между компонентами, которые могут друг о друге не знать. Обработка сообщений происходит через подписку на определенные сообщения и отправку сообщений о событиях через MessageBus. Каждый компонент на клиенте имеет специальный обработчик MessageBusListeners, а также MessageBusDirectDirectEvents для передачи обработки на сторону сервера. |
Listeners
Listeners являются обработчиками событий на клиенте. Они выполняют ваш код после появления некоторого события, например, нажатия на кнопку (Button).
Использование Intellisense в Visual Studio дает возможность узнать какие конкретные события есть у каждого компонента. Каждый компонент наследует события от своего предка и обычно добавляет свои.
Все классы в Ext.NET наследуют события от базового класса Observable. Все события находятся в Listeners.

Все доступные события могут быть просмотрены с помощью Intellisense
Если компонент вызывает некоторое событие на клиенте, то для того чтобы ваш код на клиенте обработал данное событие вы должны подписаться на это событие добавив JavaScript функцию.
-1
DropDownList, Задать «value» для default option в MVC 4
3 min
20KTutorial
Recovery Mode
Здравствуйте. Больше двух лет создавал сайты на ПХП и все было прекрасно. Но в один прекрасный день проснулся и понял, что пхп — хорош, но не то. Потом рассматривал еще долго на чем лучше писать веб приложения, сравнивал, анализировал. В итоге остановился на C# и ASP.NET MVC 4. Даже после Zend Framework 2 — MVC 4 просто нечто: легко, красиво, просто, быстро, мало кода.
Но вот столкнулся с проблемой, решение которой в Гугле не нашел. Как вывести выпадающий список и задать значение по умолчанию. Думаю для «бывалых» — это будет не проблема. Это то, что один раз «проехать» и больше никогда не вспомнишь, что были проблемы с этим. но вот проехать для новичка бывает довольно затруднительно. Если честно, то поначалу было просто вывести выпадающий список тяжко. Хотя мануалы по ASP.NET MVC на порядок превосходят «Быстрый старт» для любого фреймворка пхп.
Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials
Начнем с вывода Выпадающего списка.
1) Модель. Аннотаций и связей нету для упрощения примера.
Но вот столкнулся с проблемой, решение которой в Гугле не нашел. Как вывести выпадающий список и задать значение по умолчанию. Думаю для «бывалых» — это будет не проблема. Это то, что один раз «проехать» и больше никогда не вспомнишь, что были проблемы с этим. но вот проехать для новичка бывает довольно затруднительно. Если честно, то поначалу было просто вывести выпадающий список тяжко. Хотя мануалы по ASP.NET MVC на порядок превосходят «Быстрый старт» для любого фреймворка пхп.
Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials
Начнем с вывода Выпадающего списка.
1) Модель. Аннотаций и связей нету для упрощения примера.
+3
ASP.NET MVC 4 RAZOR Динамическое многоуровневое меню из БД
5 min
24KTutorial
Как и обещал в предыдущем посте DropDownList, Задать «value» для default option в MVC 4, сегодня расскажу про построение динамического многоуровневого меню с бесконечной вложенностью, хранящееся в БД MsSQL. Помню в свое время на ПХП это тоже было задачкой на пару дней. Но для MVC 4 с движком RAZOR — еле разобрался, хотя в итоге как всегда ничего сложного или сверхъестественного. Статья рассчитана на тех, кто делать это не умеет. Если Вы знаете как сделать лучше — поделитесь. Приступим.
Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials
1) Сначала нужно разобраться со структурой БД. Это главное. С теорией можно ознакомиться в статье Иерархические структуры данных в реляционных БД. Мы будем использовать максимально простую структуру, называемой «структура со ссылкой на предка».
Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials
1) Сначала нужно разобраться со структурой БД. Это главное. С теорией можно ознакомиться в статье Иерархические структуры данных в реляционных БД. Мы будем использовать максимально простую структуру, называемой «структура со ссылкой на предка».
-1
Описание связей с помощью Code First Fluent API
6 min
37KTutorial
Translation
Пытаясь более подробно разобраться с мануалами по ASP.NET MVC 4 столкнулся с такими понятиями как Fluent API, Code First, аннотации и многими другими. По Fluent API оказалось не так и много информации. Особенно на русском. Смотрим.
Подход Code First в Entity Framework позволяет использовать свои собственные доменные классы для представления модели, которую EF использует для построения запросов, отслеживания изменений и обновления. Code First использует паттерн программирования, который называется соглашение конфигураций. Это означает, что Code First считает, что Ваши классы следуют соглашением схемы, которую EF использует для концептуальной модели. В этом случае EF сможет использовать необходимые детали для выполнения своих функций. Однако, если Ваши классы не используют правильно соглашения, Вы можете добавить необходимую конфигурацию вручную, для того, что б EF смог правильно понимать их.
Используя подход Code Firs, Вы можете определить эти конфигурации двумя способами. Первый — использовать простые атрибуты, называемые аннотациями (DataAnnotations). Второй – использовать Fluent API, который позволяет описывать конфигурации императивно в коде.
В данной статье внимание уделено настройке с помощью Fluent API. Конвенции Code Firs очень удобно использовать для описания отношений между классами, основанных на свойствах, указывающих на потомков или отдельные классы. Если в Ваших классах нет внешних ключей, Code Firs может сам их создать. Но бывают случаи, когда описание класса не предоставляет достаточно информации относительно отношений, что б Code Firs смог правильно все понять и правильно добавить «не хватающие» части.
Начнем с двух простых классов «Blog» и «Post», где Blog имеет отношение один-ко-многим к Post.
Подход Code First в Entity Framework позволяет использовать свои собственные доменные классы для представления модели, которую EF использует для построения запросов, отслеживания изменений и обновления. Code First использует паттерн программирования, который называется соглашение конфигураций. Это означает, что Code First считает, что Ваши классы следуют соглашением схемы, которую EF использует для концептуальной модели. В этом случае EF сможет использовать необходимые детали для выполнения своих функций. Однако, если Ваши классы не используют правильно соглашения, Вы можете добавить необходимую конфигурацию вручную, для того, что б EF смог правильно понимать их.
Используя подход Code Firs, Вы можете определить эти конфигурации двумя способами. Первый — использовать простые атрибуты, называемые аннотациями (DataAnnotations). Второй – использовать Fluent API, который позволяет описывать конфигурации императивно в коде.
В данной статье внимание уделено настройке с помощью Fluent API. Конвенции Code Firs очень удобно использовать для описания отношений между классами, основанных на свойствах, указывающих на потомков или отдельные классы. Если в Ваших классах нет внешних ключей, Code Firs может сам их создать. Но бывают случаи, когда описание класса не предоставляет достаточно информации относительно отношений, что б Code Firs смог правильно все понять и правильно добавить «не хватающие» части.
Рассмотрим модель
Начнем с двух простых классов «Blog» и «Post», где Blog имеет отношение один-ко-многим к Post.
+4
ASP.NET MVC, WebApi, SignalR и UnityContainer
15 min
31KTutorial
Известно, что все хорошие джедаи используют внедрение зависимости (перевод) в своих проектах, это увеличивает концентрацию мидихлориан в крови и тестируемость кода в приложении. В данной статье я хочу рассмотреть некоторые аспекты использования UnityContainer в ASP.NET приложении, а именно, использование инжекции зависимостей через конструкторы контроллеров в ASP.NET MVC и WebApi и хабов в SignalR. Пример приложения присутствует.


+17
ASP.NET MVC Урок F. Работа как она есть
8 min
40KTutorial
Цель урока: финальный урок по созданию приложения. Написание технического задания. Создание БД. Переименование webTemplate. Применение скаффолдинга. Админка. Основной сайт. Тесты.
Это финальный урок, и тут я немного отойду от конкретного программирования и поразмышляю о работе.
Программирование – это работа, это профессия, это творчество. Когда я учился в университете и с кем-то шел по дороге домой, мы часто спорили, что лучше Windows или Linux, Delphi или C++. Тогда мы могли не спать ночами, чтобы красиво переписать построение семантического дерева для компилятора. Мы изучали пролог, лисп, конечные автоматы, структуры данных. Мы учились видеть красоту быстрой сортировки Хоара реализованную на лиспе. ВО!:
Но теперь я рассматриваю программирование как услугу. Как что-то, за что мне платят деньги. Я занимаюсь фрилансом уже три года. В начале работы фрилансером я программировал не только веб и не только на asp.net mvc. Был и php на ZendFramework, и написание модулей для расчета стратегий для торговли на РТС на Quirk.
О главном
Это финальный урок, и тут я немного отойду от конкретного программирования и поразмышляю о работе.
Программирование – это работа, это профессия, это творчество. Когда я учился в университете и с кем-то шел по дороге домой, мы часто спорили, что лучше Windows или Linux, Delphi или C++. Тогда мы могли не спать ночами, чтобы красиво переписать построение семантического дерева для компилятора. Мы изучали пролог, лисп, конечные автоматы, структуры данных. Мы учились видеть красоту быстрой сортировки Хоара реализованную на лиспе. ВО!:
(defun quicksort (lis) (if (null lis) nil
(let* ((x (car lis)) (r (cdr lis)) (fn (lambda (a) (< a x))))
(append (quicksort (remove-if-not fn r)) (list x)
(quicksort (remove-if fn r))))))
Но теперь я рассматриваю программирование как услугу. Как что-то, за что мне платят деньги. Я занимаюсь фрилансом уже три года. В начале работы фрилансером я программировал не только веб и не только на asp.net mvc. Был и php на ZendFramework, и написание модулей для расчета стратегий для торговли на РТС на Quirk.
+53
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity