Рубрика «.net» - 244

Не так давно мне пришлось делать приложение для Windows Phone работающее с xml-файлами. Всё было неплохо, но когда в файле стало ~100.000 записей, чтение их занимало ну уж очень много времени. И я решил сравненить производительность различных способов чтения данных из xml возможных на платформе .Net.

Подробности под катом.

Оборудование

Для лучшего понимания показателей проведенных тестов стоить рассказать на чём они были проведены. Тесты из разряда «Desktop» я выполял на домашнем компьютере:

  • Процессор: Pentium Dual-Core T4300 2100 Mhz
  • RAM: DDR2 2048Mb

Тесты на Windows Phone были выполнены на HTC 7 Mozart.

Подготовка кЧитать полностью »

Все, кто когда-либо писали программы на C#, использовали такую простую функцию как

Convert.ToDouble(string value);

у меня, как и у остальных, до определенного момента никаких проблем с ней не возникало. У этой функции есть такая особенность, которая не всем известна — это то, что разделитель по умолчанию используется тот, который стоит в системе.
image

image

В англоязычных странах в качестве разделителя используется точка, а в остальных странах, преимущественно, запятая. Всё в принципе, не плохо, и среда .Net, как иЧитать полностью »

Сегодня передо мной встала задача сделать полную копию объекта, то есть DeepClone. Рассмотрим некоторый код и я покажу какие проблемы при этом могут возникнуть и как их решить.

Исходный класс:

class ClassForClone { 	//here are value type fields 	 	public readonly A a; 	public readonly Lazy<string> lazy; 	 	protected void Func1() 	{ 		//to to something; 	} 		 	public ClassForClone(A a) 	{ 		this.a = a; 		lazy = new Lazy<string>(() => 		{ 			// some calculations  			Func1(); 			return a.SomeText; 		}); 	} } 

Воспользуемся функцией побитового копирования полей объекта Object.MemberwiseClone(). Она избавляет нас от монотонной работы копирования полей, но все поля с ссылочными типамиЧитать полностью »

Сезон Сиклум Субботников в разгаре и мы хотим пригласить всех заинтересованных к нам на .NET Субботник в Днепропетровске

25 Февраля Днепропетровский офис Сиклум пришлашает всех .NET-разработчиков обменяться опытом, послушать доклады и просто пообщаться на темы, связанные с .NET.

Итак, в программе Субботника:

.NET / [Из песочницы] Сравнение библиотек для архивации в .Net
Недавно для моего проекта понадобилась мне библиотека для архивирования. С полгода назад по работе я пользовался библиотекой zlibnet и впечатления остались не очень приятные, так что решил поискать альтернативу. После недолгих поисков наткнулся на обзор библиотек для архивации, которая и сподвигла меня написать этот обзор.
Участники
Я буду тестировать четыре библиотеки: ZLibNet, #ZipLib, DotNetZip и ZipStorer. Теперь о каждой поподробней:
ZLibNet
Лицензия: СвободнаяРазмер: 35 кБ + 137 кБ(ZLib)
Эта библиотека представляет собой обёртку над широко известной сишной библиотекой ZLib. Так как большую часть составляет unmanaged код, тоЧитать полностью »

На небольшом примере я расскажу как используя библиотеку TPL Dataflow можно решить довольно не тривиальную задачу многопоточной компрессии файлов в течении 15 минут.
Задача

Необходимо реализовать эффективную компрессию файлов используя класс GZipStream находящийся в пространстве имён System.IO.Compression. Предполагается, что сжимать мы будем файлы большие, и их нельзя уместить целиком в оперативной памяти.
TPL Dataflow
TPL Dataflow (TDF) построена поверх вошедшей в .NET 4 библиотеки TPL (The Task Parallel Library) и дополняет ее набором примитивов, для решения более сложных задач чем исходная библиотека. TPL Dataflow использует задачи,Читать полностью »

Пролог

Вряд ли эта статья войдёт в чьё-то избранное, так как статьёй как таковой и не является. Здесь нет никакого сборника мудростей для новичков. Здесь нет ни строчки кода. Здесь нет картинок для привлечения внимания. Скорее, этот пост — это вопросы и мысли вслух простого программиста аутсорсинговой компании. Потому и будет чем-то напоминать порезанный и склееный воедино диалог (ну, в данном случае, скорее, монолог) из курилки в офисе IT компании. Вероятно, на многие вопросы мне смогут ответить те разработчики, которые очень хорошо знакомы с .NET CMS Orchard и Umbraco. Хотелось бы на всякий случай воззвать к вашейЧитать полностью »

.NET / Быстрое создание и чтение документов MS Office 2007/2010 из 1С: Предприятие 8
Метод позволяет быстро создавать и читать документы Word, Excel и PowerPoint напрямую из 1С: Предприятие 8 без установленного Microsoft Office 2007/2010. Скорость создания документов в несколько раз выше, чем традиционное создание через COM/OLE. Статья продолжает серию примеров применения на практике 1С.Net: Предприятие. В статье используется разработка Open XML SDK. Для работы примера необходимы установленные .Net framework 4.0 и Elisy .Net Bridge 4.0.3 и выше. Пример, сопровождаемый статью, написан для 1С: Предприятие 8.2.13.
Стандарт Office Open Xml

Формат Office Open XML (Open Xml) – это формат XML-файлов, помещенных в zip-архив для представления текстовых документов и документовЧитать полностью »

C#.NET предлагает множество способов сравнить объекты, как экземпляры классов, так и структур. Способов так много, что без упорядочения этих способов и понимания их грамотного использования и имплементации (при наличии возможности переопределения), в голове, неминуемо, образуется каша.
Итак, класс System.Object предлагает следующие методы:

public static bool ReferenceEquals(object objA, object objB)
{
return objA == objB;
}

public static bool Equals(object objA, object objB)
{
return objA == objB || (objA != null && objB != null && objA.Equals(objB));
}

public virtual bool Equals(object obj)
{
Читать полностью »

ASP.NET MVC / Обработка всех исключений в контроллерах с помощью атрибута
Всё мы знаем, что в ASP.NET MVC есть такой атрибут HandleErrorAttribute, который как сказано в MSDN

Представляет атрибут, используемый для обработки исключения, вызываемого методом действия.
Но нигде, в том же MSDN не сказано (ткните меня носом дайте ссылку где это написано, если я просмотрел), что он обрабатывает только исключения, устанавливающие код ответа сервера в 500.
Посмотрев на исходный код HandleErrorAttribute легко убедиться в этом. Там имеются следующие строки:
// If this is not an HTTP 500 (for example, if somebody throws an HTTP 404 from an action method),
// ignore it.
if (new HttpException(null, exception).GetHttpCode() != 500) {
return;
}

Не знаю, как вам, а мне удобнее при возникновенииЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js