Чек-лист для .NET программиста: Уровень доступа к данным

В реляционной модели данные представлены в табличной форме, в то время как в объектно-ориентированных языках данные хранятся в виде графов объектов, что порождает целый ряд трудностей, когда дело доходит до преобразования объектов в табличную форму и наоборот: разные представление связей между зависимыми данными, отсутствие наследования в реляционном мире, несовпадение способов проверки идентичности и тд. (читай The Object-Relational Impedance Mismatch). Даже если программист решит вопрос преобразования, то перед ним возникнет проблема поддержки данных в базе и в оперативной памяти приложения в согласованном состоянии.

Продолжить чтение «Чек-лист для .NET программиста: Уровень доступа к данным»

Шаблоны проектирования: Singleton, Часть 2

Во второй части статей о Синглтоне разберем его плюсы и минусы, поговорим об уходе от классической реализации шаблона используя DI-контейнеры, а также познакомимся с шаблоном Ambient Context.
Продолжить чтение «Шаблоны проектирования: Singleton, Часть 2»

Шаблоны проектирования: Singleton, Часть 1

Синглтон является относительно простым шаблоном проектирования, однако он затрагивает большое количество аспектов разработки программного обеспечения, таких как потокобезопасность, ленивая инициализация, особенности вызовов статических конструкторов, принципы единой ответственности и инверсии зависимостей, юнит-тестирование, утечки памяти и другие.
Продолжить чтение «Шаблоны проектирования: Singleton, Часть 1»

Чек-лист для .NET программиста: Многопоточность и Асинхронность

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

Продолжить чтение «Чек-лист для .NET программиста: Многопоточность и Асинхронность»

Чек-лист для .NET программиста: Анализ и Проектирование

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

Продолжить чтение «Чек-лист для .NET программиста: Анализ и Проектирование»

Обзор способов клонирования графа объектов в .NET

Язык C# позволяет клонировать простой объект или граф объектов немалым количеством способов, каждый из которых обладает своими достоинствами и недостатками.

Продолжить чтение «Обзор способов клонирования графа объектов в .NET»

Чек-лист для .NET программиста: Базы данных SQL и NoSQL

Практически каждое приложение за исключением самых простых нуждается в более надежном хранилище данных, чем оперативная память. В зависимости от специфики разрабатываемого программного обеспечения, программисты выбирают наиболее подходящую СУБД, из которых можно выделить реляционные (MS SQL), документо-ориетированные (MongoDB, CouchDB) и объектно-реляционные (PostgreSQL). Каждый тип СУБД обладает своими сильными и слабыми сторонами. Например, MongoDB отлично масштабируется горизонтально, имеет динамическую схему данных, является кроссплатформенной БД, однако, в отличие от MS SQL, не поддерживает транзакций, триггеров, внешних ключей и является менее развитой с точки зрения безопасности. Как результат некоторые разрабатываемые приложения работают одновременно с несколькими видами баз данных, c целью позаимствовать сильные стороны каждой из них.

Продолжить чтение «Чек-лист для .NET программиста: Базы данных SQL и NoSQL»