Обновить
120.13

.NET *

Хаб со знаниями про .NET

Сначала показывать
Порог рейтинга
Уровень сложности

О разворачивании строк в .Net/C# и не только

Время на прочтение11 мин
Количество просмотров37K
Давайте поговорим о строках, точнее об их переворачивании средствами .Net/C#. Так уж сложилось, что в стандартной библиотеке соответсвующей функции не наблюдается. И как мне подсказывают, написание функции обращения строки довольно популярный вопрос на собеседованиях при приеме на работу. Давайте посмотрим, как можно эффективно перевернуть строку средствами данной платформы.

Под катом приведен сравнительный анализ быстродействия разных методов переворачивания строки.

Читать дальше →

.NET в unmanaged окружении: вызов управляемого кода из неуправляемого

Время на прочтение12 мин
Количество просмотров5.9K
Как вы, наверное, помните из моей предыдущей статьи, взаимодействие unmanaged и managed кода представляет определенную проблему, даже для опытных разработчиков. Причина этого — необходимость понимать, какие процессы происходят при пересечении данными границы CLR.

К сожалению, нередко проблема наладить взаимодействие встает у тех разработчиков, которые слабо знакомы с подноготной технологии COM и возможностями .NET для обеспечения взаимодействия. Это нормально — нельзя знать все на свете. Потому я не буду здесь объяснять всю суть проблемы маршаллинга данных из unmanaged в managed и обратно, а просто дам несколько рабочих рецептов, которые помогут вам тогда, когда нужно срочно и завтра, и вы с тоской смотрите на английское издание книги Inside OLE и понимаете, что разобраться в этом за день нет никакой возможности.

Однако, для тех, кто неплохо в этом разбирается, в конце статьи есть небольшой бонус — способ организации out-process COM на .NET. Честно говоря, я добросовестно считал, что сделать out-process COM с помощью .NET невозможно, однако буквально вчера выяснилось, что все-таки нет, можно. В связи с этим, рассказывать про архитектуру .NET Pipe RPC я скорее всего не буду — она достаточно сложна, однако все предоставляемые ей возможности с легкостью заменяет out-process COM.
Под хабракатом много текста

Linq-to-Sql: Узнаем nullable поля из метаданных (или рассказ о небольшом баге)

Время на прочтение3 мин
Количество просмотров1.5K
Итак, перед нами Linq-to-Sql. Перед нами стоит задача узнать какие поля могут иметь значения null, а какие нет — решение данной задачи может, например, помогать в подсветки обязательных полей на форме, либо просто для валидации данных, перед их установкой в свойства объекта.
Читать дальше →

Состоялась встреча Уральской группы пользователей .NET

Время на прочтение2 мин
Количество просмотров635


Сегодня 23 апреля 2009 года на факультете матмеха Уральского Государственного Университета (УрГУ) прошла встреча участников Уральской группы пользователей .NET. На встрече были зачитаны два интересных доклада на темы: «Unity Application Block — Unity Container» и «Composite Application Library». Было очень интересно, подробности под катом.
Читать дальше →

.NET в unmanaged окружении – использование и родовые проблемы

Время на прочтение8 мин
Количество просмотров7.8K
Managed код и .NET Framework – совершенно замечательная вещь с точки зрения программиста, которому надо кровь из носу выдавать максимально стабильно работающие программы. Использование .NET позволяет очень сильно сократить затраты на разработку, тестирование и сопровождение программных продуктов, особенно по сравнению с C++ или Delphi.

Однако, managed код имеет одну очень серьезную родовую травму, которая прямо проистекает из его достоинств – он изначально несовместим с unmanaged средой, в которой вынужден работать. Boxing, поля памяти, отсутствие прямой адресации и прочие ухищрения, призванные облегчить жизнь программисту, приводят к тому, что взаимодействие managed и unmanaged кода становится проблемой.

Однако нет такой проблемы, которую нельзя решить (пусть даже с помощью топора и лома). Сегодня у нас краткий обзор возможностей организации взаимодействия между managed и unmanaged кодом. Многие C# и особенно VB.NET программисты боятся этого, но на самом деле в этом нет ничего страшного. Начнем мы с самых примитивных методов, которые будут интересны разве что новичкам (поэтому матерые волки .NET могут с чистой совестью первую часть статьи пропустить), и закончим описанием того, что делать, если хочется написать программу на .NET, но сделать это невозможно (а такое тоже бывает). Естественно, к каждому случаю будут приведены конкретные примеры, быть может, хабрачеловеки расскажут мне о моей собственной велосипедности. Параллельно я скажу пару слов о подводных камнях при работе с VSTO и Windows Shell.
Читать дальше →

5я встреча Петербургской группы ALT.NET

Время на прочтение1 мин
Количество просмотров539
5я встреча Петербургской группы ALT.NET пройдет в четверг, 7го Мая в 19:00.
Встречи группы проходят по адресу Биржевая Линия дом 14, офис 409 (4й этаж).
Программа 19:00 – 21:00 — Паттерны Repository и Specification.
Применение Linq2xxx (на примере Linq to NHibernate), Артем Смирнов
Читать дальше →

Катаморфизм в F#

Время на прочтение9 мин
Количество просмотров7.1K

Введение


Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
Итак, строго говоря, катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.
Читать дальше →

О бедном Dispose замолвите слово (часть 2)

Время на прочтение4 мин
Количество просмотров3.7K
После опубликования предыдущей моей записи о Dispose, в обсуждении всплыло несколько острых вопросов, которые потребовали отдельного рассмотрения.

Если коротко, то они сводятся к «зачем так сложно?» и «как правильно должны освобождать свою память потомки?»

Читать дальше →

О бедном Dispose замолвите слово

Время на прочтение3 мин
Количество просмотров3.5K
Немного про освобождение ресурсов в .Net.

предупреждение: текст ниже — просто пересказ своими словами давно известной информации, которая есть в сети на русском и английском языках.

Что делать, когда хочется освободить unmanaged ресурсы в .Net? Можно поместить код освобождения ресурсов в секцию finally и это будет самый простой способ. Не очень изящный, но зато гарантированно сработает и без всяких подводных камней:
DBConnection conn = new DBConnection();
try
{
 conn.Open();
 //...
}
finally
{
 conn.Close();
}


* This source code was highlighted with Source Code Highlighter.

Усложним задачу. Мы написали библиотечный класс, который работает с unmanaged ресурсами. По закону подлости (или больших чисел — как вам удобнее), пользоваться им, кроме гуру, будут еще и говнокодеры. Которые спокойно забудут вызвать метод для освобождения unmanaged ресурсов. А потом будут плеваться на криво написанную ВАМИ библиотеку.

А значит хочется написать свой класс таким образом, чтобы метод, освобождающий ресурсы (уже не важно — managed они или unmanaged) был вызван сборщиком мусора автоматически в том случае, если пользователь забыл вызвать его сам.

Читать дальше →

Используем «лямбды» для анимации WPF

Время на прочтение5 мин
Количество просмотров2.5K
Создать графический примитив и анимировать его, например передвинув его с точки А в точку В с постоянной скоростью – дело нехитрое. Но что если нужно расположить несколько объектов в определенной последовательности и потом их нелинейно анимировать? Для этого ни в WPF ни в Silverlight нет встроенных функций. В этом очерке я покажу, как можно создавать объекты и анимацию динамически, используя лямбда-делегаты и функции высшего порядка.

читать дальше

Работаем с TypeMock Isolator

Время на прочтение5 мин
Количество просмотров4.2K
Для дотнет-разработчика, планирующего юнит-тестирование, редко встает вопрос о том, что подразумевать под этим пресловутым «юнит»-ом: в подавляющем числе случаев, юнит – это класс, и тем самым любой тест который использует два или более класса юнит тестом не является – это уже интеграционный тест. Здесь мы конечно говорим про наши классы, так как привязка к классам фреймворка или сторонних библиотек – вещь вполне нормальная, и в тестировании не нуждается (хотя как сказать…).
читать дальше

Использование SQLite в .NET приложениях

Время на прочтение7 мин
Количество просмотров163K


В некоторых проектах достаточно часто возникает необходимость в хранении данных, объем которых уже нельзя назвать маленьким, но в тоже время использовать какую-либо СУБД слишком накладно из-за сложности развертывания приложения. И тут на помощь приходит такая прекрасная вещь как SQLite – компактная встраиваемая база данных.

Для тех, кто пишет с использованием платформы .NET приятным моментом станет наличие
Читать далее...

Вышел ReSharper 4.5

Время на прочтение1 мин
Количество просмотров513
Обновился замечательный инструмент для .NET-разработчиков:

* разработчики поработали над производительностью: например, по их оценками скорость загрузки больших решений выросла от 20% до 40%;
* внедрена поддержка языка Visual Basic .NET 9;
* добавлены новые инспекторы кода (code inspectors);
* добавлена возможность задавать правила для именования типов, пространств имен, интерфейсов и другого, с помощью которых решарпер поможет оформить код согласно вашим требованиям;
* добавлена функция Go to Implementation (по ощущениям от beta-версии, очень удобная);
* улучшен механизм рефакторинга, rename теперь предлагает name completion.

Разработчики записали flash-ролик, в котором рассказывается о нововведениях. Посмотреть его можно здесь.

Скачать ReSharper 4.5: www.jetbrains.com/resharper/download

Ближайшие события

«Скрытые» полезности С#

Время на прочтение8 мин
Количество просмотров8.4K
Предлагаю мой вольный перевод вопроса с stackoverflow, который мне показался полезным и сидит в фаворитах. Что-то я взял с MSDN (в основном вырезки из русской редакции), что-то -с блогов.
Все мы, С# разработчики, знаем базовые комманды C#. Я имею ввиду объявления, условия, циклы, операторы и т.д.
Некоторые из нас знают даже про Generics, anonymous types, lambdas, linq,…

Но, каковы реально скрытные возможности и трюки C#, про которые даже фанаты и эксперты не всегда знают?
Составим список некоторых из них:

Миграции БД для .NET

Время на прочтение3 мин
Количество просмотров7.3K
В и без того непростом процессе разработки программных продуктов время от времени появляются совсем уж неприятные вопросы. Один из них — что же делать со структурой БД, как хранить информацию о версиях, как обновлять копии БД на серверах да и как организовывать совместную работу.

Что же делать?

Третья встреча Петербургской группы ALT.NET

Время на прочтение1 мин
Количество просмотров810
Третья встреча Петербургской группы ALT.NET, посвященная разработке под ASP.NET MVC, пройдет в четверг, 2го Апреля в 19:00.
Читать дальше →

VSTO и CAB: Интеграция .NET приложения в Microsoft Word

Время на прочтение14 мин
Количество просмотров14K
VSTO расшифровывается как Visual Studio Tools for Office. Эти средства позволяют довольно легко скрещивать ужа с ежом — писать .NET приложения, исполняемые CLR в среде Microsoft Office. В частности, программисты обладают возможностью создавать подключаемые модули (плагины) и «кастомизированные» шаблоны для документов почти ко всему основному семейству продуктов Microsoft Office.

В статье приведена инфраструктура Windows Forms проекта, в котором Microsoft Word воспринимается приложением в качестве шелла. В статье раскрыты несколько интересных моментов использования Composite UI Application Block, в частности подключение инфраструктуры доменной модели Word в сервисам расширения каркаса, а так же приведены некоторые факты и особенности разработки с использованием средств VSTO.
В общем, кому интересно - милости прошу

ALT.NET, Питер, Четверг, 19 марта, 19-00, Компьютерная академия SoftJoys

Время на прочтение1 мин
Количество просмотров962
Не трудно догадаться, что многие разработчики стремятся к совершенствованию в своём любимом деле (разве нет?). Многие из вас постоянно слышат о новых для себя технологиях и методологиях разработки программного обеспечения, однако, не все находят время и стимул для того, чтобы ознакомиться с ними (примером тому являются методологии TDD, BDD, DDD, ORM, DSL, AOP, Design Patterns и т.д., а так же сопутствующие им инструменты).
Читать дальше →

Практикум Silverlight: Начинаем работать с Composite Application Library

Время на прочтение6 мин
Количество просмотров2K

Для кого эта статья



Данный пост будет интересен для вас если:

  1. Вы нацелены на развитие
  2. Вы работаете с RIA средой, такой как Silverlight (так же WPF)
  3. Если вы уже где-то слышали такие слова как Composite Application Guidance, Composite Application Library
  4. Вы заинтересовались статьей Павла ИвченковаСоздание приложения на WPF с использованием принципов TDD 
  5. Вам было интересно прочитать статью AcervUse Case Driven Development и Composite UI Application Block

Читать дальше →

Большой отрывок (180 страниц) книги Professional ASP.NET MVC (на английском)

Время на прочтение1 мин
Количество просмотров1.4K
В отрывке рассказывается о том, как сделан сайт www.nerddinner.com

Начиная с создания нового проекта, автор добавляет различный функционал на сайт.

Что освещено:
* Create a database
* Build a model with validation and business rules
* Implement data listing/details UI on a site using Controllers and Views
* Enable CRUD (Create, Update, Delete) data form entry
* Use the ViewModel pattern to pass information from a Controller to a View
* Re-use UI across a site using partials and master pages
* Implement efficient data paging
* Secure an application using authentication and authorization
* Use AJAX to deliver dynamic updates
* Use AJAX to add interactive map support
* Perform automated unit testing (including dependency injection and mocking)

Скачать книгу (14Mb, PDF): прямой линк
Официальная страница анонса

Вклад авторов