Pull to refresh
6
0
Oleksandr Dubyna @struggleendlessly

CEO, DevOps, .NET Developer

Send message

CRUD Operations Using the Generic Repository Pattern and Unit of Work in MVC

Reading time 14 min
Views 57K

От переводчика


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

Вступление


Сегодня познакомимся с паттерном «Общий репозиторий» (Generic Repository) и подходом Unit of Work в приложениях ASP.NET MVC. Для этого создадим приложение «Книги», в котором будут реализованы операции создания, получения, обновления и удаления данных. Для упрощения понимания материала пример будет построен на использовании только одной сущности книги.

В предыдущей статье «CRUD Operations Using the Repository Pattern in MVC» мы уже создавали приложение с использованием репозитория для сущности книги, реализующее CRUD операции. Но если мы захотим создать подобное приложение, но уже корпоративного уровня, то нам придется создавать по репозиторию на каждую новую сущность. Проще говоря, мы будем дублировать код, что идет в разрез с подходом DRY — поэтому необходимо воспользоваться паттерном «общий репозиторий».


Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Comments 20

Logitech Wave (К350). Год спустя

Reading time 4 min
Views 22K
Сегодня поговорим о клавиатуре. Я достаточно долго подыскивал себе что-то хорошего качества, беспроводное(было обязательное требование), также хотелось с «волной»(аля анатомическая форма), красивенькое. На момент покупки были пересмотрены практически все каталоги в интернете и выучены на память все характеристики, плюсы и минусы почти всех доступных устройств (не только на рынке Украины но и тех, которые можно было достать через интернет магазины). В итоге выбор стоял между этой и одной из Microsoft natural ergonomic. И все таки Logitech перевесила.



Осторожно, картинки!
Читать дальше →
Total votes 25: ↑15 and ↓10 +5
Comments 50

Logitech G700. Год спустя

Reading time 5 min
Views 49K
Хочу продолжить обзор устройств, которыми попользовался больше года. Как на меня, этого срока более чем достаточно, что б можно было сделать в полной мере объективную оценку.


Читать дальше →
Total votes 24: ↑14 and ↓10 +4
Comments 42

WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

Reading time 9 min
Views 9.8K
WCF RIA Services. Начало. Часть 1
WCF RIA Services. Получение данных. Часть 2
WCF RIA Services. Обновление данных. Часть 3
WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

Вступление


Паттерн Model-View-ViewModel (MVVM) используется для создания слабо связанных приложений на Silverlight и WPF. В данном курсе мы не будем рассматривать основы данного подхода, а просто узнаем как внедрить его в наш проект, который мы создавали на протяжении 3 уроков. Если не внедряться в дебри, то MVVM – это одна из альтернатив, которая является логическим развитием таких паттернов программирования как MVC и MVP и полностью поддерживает привязку данных, команды, и все возможности, которые предоставляют Silverlight и WPF. Модель вида (ViewModel) отвечает за предоставление виду (View) всех необходимых ресурсов. То есть предоставляются все необходимые свойства для того, что б вид мог легко осуществлять привязку данных, создание команд, а в модели вида тем временем присутствует и работает вся необходимая приложению логика. Структурно, устанавливаемый «DataContext» равен экземпляру модели вида, с которым происходит связывание данных (binding).

Основным преимуществом такого подхода является практически полная независимость вида от модели вида, что грубо можно выразить, как независимую разработку каждой части программистом и дизайнером. Так же, приятным следствием такого разделения является достаточная легкость создания модульных текстов (unit test), так как логика абсолютно не связана с UI (интерфейсом пользователя).

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

Шаг 1: Создание модели вида


Читать дальше →
Total votes 12: ↑8 and ↓4 +4
Comments 2

WCF RIA Services. Обновление данных. Часть 3

Reading time 6 min
Views 6.3K
WCF RIA Services. Начало. Часть 1
WCF RIA Services. Получение данных. Часть 2
WCF RIA Services. Обновление данных. Часть 3
WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

В предыдущем уроке мы более подробно ознакомились с возможностями получения данных в WCF RIA Services. Сегодня поговорим о процессе обновления данных, который является более сложным.

Вступительной частью является проект, созданный во втором уроке.

IQueryable<T> и магия деревьев выражений

Читать дальше →
Total votes 3: ↑2 and ↓1 +1
Comments 0

LG A290 TriSim. Год спустя

Reading time 4 min
Views 22K
Здравствуйте. Сегодня решил поделиться обзором отличного стильного кнопочного телефона.
Сразу хочу предупредить, что то, что можно найти в сети по возможности повторять не буду. Буду рассказывать именно со стороны пользователя, который четко знал цель покупки данного девайса.


У меня такой же, но черный

Читать дальше →
Total votes 29: ↑20 and ↓9 +11
Comments 12

WCF RIA Services. Получение данных. Часть 2

Reading time 7 min
Views 13K
WCF RIA Services. Начало. Часть 1
WCF RIA Services. Получение данных. Часть 2
WCF RIA Services. Обновление данных. Часть 3
WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

Общие сведения


В первой части мы ознакомились, что за зверь такой WCF RIA Services, и создали приложение, которое можно коротко назвать, как «Hello world». Все было очень просто, красиво, а так же «drag and drop». Однако для создания настоящих, больших и функциональных приложений нужно еще много чего выучить, например какие возможности доступны в клиентской части, и как их использовать. В этом уроке мы копнем немножко глубже в области получения данных на клиентской стороне. Так же Вы узнаете о конвенциях, которые используются для методов, получающих данные, определенные в серверной части, как их настраивать, используя атрибуты. Расскажу о некоторых программных реализациях, которые можно использовать для получения данных на стороне клиента и как использовать данные, которые используют отличные от Entity Framework источники.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 4

WCF RIA Services. Начало. Часть 1

Reading time 10 min
Views 40K
WCF RIA Services. Начало. Часть 1
WCF RIA Services. Получение данных. Часть 2
WCF RIA Services. Обновление данных. Часть 3
WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

От переводчика


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

Осторожно. Много картинок!

Вступление


Представьте, что Вам необходимо создать серьезное бизнес приложение, клиент которого оперирует множеством данных, распределенных в различных местах, и которые должны каким-то образом собираться. Для реализации такой задачи Вам будет необходимо изучить ряд новых технологий и подходов, написать кучу кода, отладка. А что в итоге? Если грубо — то просто пересылка данных с серверной части приложения в клиентскую и обратно. Ну и работа с БД. А на что бы Вы хотели сфокусироваться в первую очередь? На реализации пересылки данных? Или на логике обработки, манипулирования, представления этих данных? Думаю, Вы выберете второе.

WCF RIA Services предлагает автоматизацию пересылки данных и создания многоуровневых приложения на основе Silverlight, фокусируя внимание разработчика именно на логике работы. Вы пишите только один раз экземпляр серверного кода, а он автоматически переносится и становится доступным на клиентской стороне, без необходимости ручного дублирования или применения других ухищрений со стороны разработчика. Так же на клиенте остаются доступны все серверные возможности, такие как валидация, права доступа и многие др.

В этом цикле статей Вы ознакомитесь с основными возможностями WCF RIA Services, увидите на практике какие преимущества предоставляет использование данного подхода. На диаграме ниже показано, за что именно отвечает WCF RIA Services:
image
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Comments 6

Windows Phone 8: Создаем приложение. Матрица. Часть 3. MVVM

Reading time 39 min
Views 9.7K
И так, как и обещал, третья часть приложения Матрица для платформы WP8 с использованием паттерна MVVM. Для самых нетерпеливых можно сразу скачать с Github, а также опробовать у себя на смартфоне, скачав с Windows Phone Store.

Поддерживаются расширения экранов HD720P (720x1280), WVGA (480x800), WXGA (768x1280). Есть маленький минус: при использовании расширения отличного от 480x800, нужно перезапустить приложения после установки, так как не нашел как получить высоту и ширину элемента Grid до загрузки модели вида. А теперь по порядку.

Windows Phone 8: Создаем приложение. Матрица. Часть 1
Windows Phone 8: Создаем приложение. Матрица. Часть 2
Windows Phone 8: Создаем приложение. Матрица. Часть 3. MVVM


Развернутый вид всего приложения на экране WVGA (480x800)

Читать дальше →
Total votes 13: ↑7 and ↓6 +1
Comments 2

Nokia Lumia 525 & Lumia 720 Dual Sim. Ждем?

Reading time 2 min
Views 30K
Прошуршав сегодня в очередной раз гугл в надежде на новую информацию о Nokia Lumia Dual Sim наткнулся сразу на 2 новости, описанных в заголовке.И хотя все достаточно красиво, но есть и маленькие НО. А теперь по порядку.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 7

Commands in MVVM

Reading time 22 min
Views 82K
  • Пример 1 – Простое использование Command
  • Пример 2 — Простое использование Command в паре с лямда функциями
  • Пример 3 — Простое использование Command с параметрами
  • Пример 4 – Включение и отключение Command
  • Пример 5 – Command вызывающие события
  • Пример 6 – Асинхронные Command
  • Пример 7 — Асинхронные Command обновляющие интерфейс пользователя (UI)
  • Пример 8 — Асинхронные Command с возможность отмены
  • Пример 9 – Привязка событий к Command
  • Как это работает – Класс Command
  • Как это работает – Класс асинхронных Command
  • Как это работает – Класс привязки данных к Command

Вступление


На примере приложения, использующего паттерн MVVM (Model View View-Model) рассмотрим работу с командами (Commands).
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 5

Windows Phone 8: Создаем приложение. Матрица. Часть 2

Reading time 49 min
Views 12K
Windows Phone 8: Создаем приложение. Матрица. Часть 1
Windows Phone 8: Создаем приложение. Матрица. Часть 2

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

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


Скриншот работы приложения

Читать дальше →
Total votes 33: ↑19 and ↓14 +5
Comments 6

Windows Phone 8: Создаем приложение. Матрица. Часть 1

Reading time 12 min
Views 31K
Windows Phone 8: Создаем приложение. Матрица. Часть 1
Windows Phone 8: Создаем приложение. Матрица. Часть 2
Windows Phone 8: Создаем приложение. Матрица. Часть 3. MVVM

Создавая приложение на конкурс появилась так же идея поделиться процессом его создания, так как сам столкнулся с трудностями нахождения информации по созданию приложений для Windows Phone 8. Почему «Матрица»? Потому, что еще с выхода фильма она меня завораживала. Потом нашел заставку на экран. Мог часами смотреть на нее. А теперь решил уже перенести ее на телефон, что б всегда была под рукой. И так начнем.


Принт скрин с экрана Lumia 520

Читать дальше →
Total votes 28: ↑22 and ↓6 +16
Comments 19

Nikon Coolpix AW100‎. Год спустя

Reading time 5 min
Views 63K
Прошел уже год, как я приобрел этот фотоаппарат. Было сделано больше 2000 снимков в течение 4 сезонов в диапазоне температур от -20 до + 40 во всех возможных условиях: снег, дождь, море, грязь, лед, песок, тряска на велосипеде и авто и т.д. Решил поделиться впечатлениями от использования этой защищенной, предназначенной для экстрима и жестких условий «мыльницы».
image
Осторожно картинки. Все кликабельны.
Читать дальше →
Total votes 37: ↑32 and ↓5 +27
Comments 52

Начало Windows Phone 8 Development: урок 4. Связь с сервисами и привязка к данным

Reading time 5 min
Views 13K
Начало Windows Phone 8 Development: урок 1. Макет приложения и обработчик событий
Начало Windows Phone 8 Development: урок 2. Доступ к локальному хранилищу приложения
Начало Windows Phone 8 Development: урок 3. Навигация по страницам и передача параметров
Начало Windows Phone 8 Development: урок 4. Связь с сервисами и привязка к данным

Как и было обещано, к концу этого урока Вы уже будете себя чувствовать почти настоящим разработчиком под Windows Phone 8 ). Сейчас мы уже умеем строить GUI используя XAML, создавать обработчики событий, переходить по страницам, сохранять данные в локальном хранилище. Все, что осталось освоить, что б создавать настоящие приложения – это привязка к данным и взаимодействие между сервисами.
Читать дальше →
Total votes 1: ↑1 and ↓0 +1
Comments 0

Начало Windows Phone 8 Development: урок 2. Доступ к локальному хранилищу приложения

Reading time 4 min
Views 16K
Начало Windows Phone 8 Development: урок 1. Макет приложения и обработчик событий
Начало Windows Phone 8 Development: урок 2. Доступ к локальному хранилищу приложения
Начало Windows Phone 8 Development: урок 3. Навигация по страницам и передача параметров
Начало Windows Phone 8 Development: урок 4. Связь с сервисами и привязка к данным

И так, приступим ко второму уроку. Надеюсь, он будет для Вас более интересным. Многим разработчикам под смартфоны интересен вопрос доступности хранилища на устройстве для их приложений, а так же его размеры и использование. Для каждого приложения существует своё изолированное локальное хранилище. Оно независимо от остальных приложений и ОС, и к нему имеет доступ только это приложение.

Сразу же встает два вопроса: возможность использовать SD карту и размер доступного пространства. На первый вопрос ответ — да, использовать SD карту можно. Ответ на второй вопрос — без ограничений. То есть все свободное пространство.

Что касается приложения, которое мы создадим в этом уроке, то оно будет использовать локальное хранилище для чтения/записи текстовых сообщений и счетчик. Счетчик будет увеличиваться при каждом запуске приложения, а так же будет показываться последнее, введенное Вами сообщение.
Читать дальше →
Total votes 23: ↑17 and ↓6 +11
Comments 6

Начало Windows Phone 8 Development: урок 3. Навигация по страницам и передача параметров

Reading time 3 min
Views 16K
Начало Windows Phone 8 Development: урок 1. Макет приложения и обработчик событий
Начало Windows Phone 8 Development: урок 2. Доступ к локальному хранилищу приложения
Начало Windows Phone 8 Development: урок 3. Навигация по страницам и передача параметров
Начало Windows Phone 8 Development: урок 4. Связь с сервисами и привязка к данным

Как было сказано в предыдущих уроках, приложения для Windows Phone 8 используют XAML страницы. Это означает, что их можно воспринимать почти как обычные веб страницы. Так же в каждом приложении существует своя навигация. Например, в новостном приложении есть главная страница, на которой отображаются категории новостей. После выбора категории вы переходите на страницу, где показаны все новости, относящиеся к этой теме. Ну и потом Вы уже выбираете, какую именно новость хотите прочитать полностью.
Читать дальше →
Total votes 21: ↑13 and ↓8 +5
Comments 2

Начало Windows Phone 8 Development: урок 1. Макет приложения и обработчик событий

Reading time 6 min
Views 55K
Начало Windows Phone 8 Development: урок 1. Макет приложения и обработчик событий
Начало Windows Phone 8 Development: урок 2. Доступ к локальному хранилищу приложения
Начало Windows Phone 8 Development: урок 3. Навигация по страницам и передача параметров
Начало Windows Phone 8 Development: урок 4. Связь с сервисами и привязка к данным

В сети достаточно много материалов, посвященных разработке под Windows Phone. А вот с частным случаем Windows Phone 8 — дела обстоят несколько печальней. В данном цикле статей будет освящен материал, сглаживающий данный пробел. Однако, если Вы ищите материалы для непосредственного начала обучения по написанию приложений под эту мобильную ОС — то будет тяжело. Советую начать с изучения приложения просто под Windows 8. Однако, если Вы являетесь разработчиком ПО независимо от происхождения или платформы, то это то, что нужно.

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

И так. Давайте дадим ответ на вопрос, какие есть этапы разработки во время создания приложения? Вот к каким выводам я пришел:
Читать дальше →
Total votes 23: ↑11 and ↓12 -1
Comments 5

Перенос сайта из Visual Studio 2012 на хостинг. Панель управления Parallels Plesk Panel

Reading time 5 min
Views 33K
Здравствуйте!

Про разработку сайта на ASP.NET MVC 3/4 написано достаточно. По крайне мере, что б начать само развиваться. однако почти ничего не написано про то, как его перенести на хостинг / сервер. Мне, как человеку, пришедшему с линукс хостингов и ПХП сама панель, папки, да и компиляция проекта — все было в новинку. Есть мануалы — если достаточно долго помучатся, то можно выГуглить. Однако оказалось, что запросы «выложить сайт, перенос сайта, развернуть сайт, создать сайт» практически не дают результата. Или листать нужно достаточно далеко. Правильный запрос в данной ситуации «публикация сайта». Однако на Хабре есть всего Создание сайта Windows Azure Web Site и развёртывание там приложения ASP.NET MVC 4 и Публикация сайта ASP.NET MVC в обновленный Windows Azure. однако это по Azure.

Так же, столкнулся с проблемой, что нет возможности напрямую опубликовать сайт сразу из Visual Studio 2012 на хостинг — стоит прокси, который не дает это сделать. хотя подключиться через FileZilla — позволяет. Не знаю в чем проблема, ходил к администраторам — они развели руками и сказали что проблема в моей Windows 8 Pro. Ладно. Не такая и проблема.

Ну и сама панель управления хостингом. Мануалы есть, но в одном месте конкретно по началу работы с ней и развертыванию сайта — маловато информации. Особенно для «новичков» или ПХПешников, привыкших к немного «другой» логике этого процесса. Да и часть информации на английском. Программиста это удивлять или сбивать с толку не должно. Но бывает всякое.

Начну с хостинга. панель выглядит так:

Осторожно картинки!
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 3

Описание связей с помощью Code First Fluent API

Reading time 6 min
Views 37K
Пытаясь более подробно разобраться с мануалами по 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.
Читать дальше →
Total votes 10: ↑7 and ↓3 +4
Comments 9
1

Information

Rating
Does not participate
Location
Львов, Львовская обл., Украина
Date of birth
Registered
Activity