Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В десятом выпуске рассылки '.Net Собеседник' вы можете познакомиться с обзором


Информационный Канал Subscribe.Ru

.Net Собеседник #10

Содержание
  1. От автора
  2. Обзор новостей
  3. 9 лучших советов по доступу к данным 
  4. Время кода - Загрузка файлов на сервер – это легко!
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

Вот и вышел 10 выпуск - маленький юбилей. Можно подвести кое-какие итоги. Начну с того, что с момента первого выпуска прошло 3 месяца, за это время количество подписчиков выросло до полутора тысяч человек. Рассылка выходит три раза в месяц, хотя изначально я планировал её выпускать только дважды в месяц - думал, что на большее количество выпусков у меня не будет хватать времени. Однако, глаза боятся, а руки делают, тем более что материала много, материал очень интересный, да ещё непосредственно связанный с моей работой. Были и отзывы от подписчиков,некоторые с просьбой о помощи, другие - с предложениями и замечаниями. Например, в письме Ярослава Вишневского (надеюсь, что я не переврал фамилию) был предложен ещё один способ реализации автоинкремента в DataGrid'e, речь о котором шла в одном из выпусков. Вот он -

DataColumn myColumn = new DataColumn();
myColumn.ColumnName = "AutoIncrement";
myColumn.DataType = System.Type.GetType("System.Int32");
myColumn.AutoIncrement = true;
myColumn.AutoIncrementSeed = 1;
myColumn.AutoIncrementStep = 1;
DataTable myTable = new DataTable("MyTable");
myTable.Columns.Add(myColumn);
oleDbConnection1.Open();
oleDbDataAdapter1.Fill(myTable);
DataGrid1.DataSource = myTable.DefaultView;
DataGrid1.DataBind(); oleDbConnection1.Close();

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

{К содержанию}

Обзор новостей

  1. Вышел .netCHARTING 2.3 с бесплатной версией для разработчика
    Версия 2.3 содержит улучшенную обработку пустых элементов, поддержку аннотаций, вычисление трендов, новые настройки палитры, многоцветные линии областей, доступ к изображениям в формате bmp, поддержку пояснений для изображений, новую документацию и многое, многое другое. Скачать бесплатную и другие версии можно здесь.
  2. Ищем бета-тестеров
    DocSoft. Inc. разрабатывает ПО для конвертации CGM в SVG, которое будет конвертировать формат WebCGM (CGM4) в формат Scalable Vector Graphic (SVG). ПО будет содержать API, которое можно интегрировать с другим ПО и расширять его функциональность. ПО разрабатывается для работы под Microsoft's .NET Framework и будет позволять выполнять пакетную конвертацию файлов.
  3. Открыт Visual Studio Extensibility Center
    Здесь вы сможете найти информацию о том как настроить, улучшить или расширить функциональность среды Visual Studio, включая настройку макросов, добавлений и Visual Studio Industry Partner Program (VSIP) SDK.
  4. Chive Software выпустила PopupCalendar ASP.NET V2.0
    PopupCalendar ASP.NET - полнофункциональный календарь, появляющийся только тогда, когда вы щёлкаете мышью на специальном изображении. Компонент PopupCalendar ASP.NET отображается во всплывающем окне и исчезает, когда вы щёлкаете мышью за его пределами.
  5. Вышел .netCHARGE 3.0 Payment Processing
    Более чем 35 поддерживаемых шлюзов и процессоров, включая их прямую поддержку (больше не платим шлюзам!), .netCHARGE создаёт цельную систему по обработке кредитных карточек в реальном времени с вашего веб-сайта ASP.NET.
  6. Desaware поставляет исходники с Universal .NET 2004
    Universal .NET 2004 - комплексное решение для .NET, включающее исходный код для девяти индивидуальных продуктов набора: SpyWorks Pro; StateCoder; NT Service Toolkit .NET; StorageTools; Event Log Toolkit; OneTimeDownload-5M; LineGraph-5M; INIFileTool-5M и компонента File Property. 41 элемент управления и библиотеки, а также 780,000 строк кода. $495.00.
  7. Вышел ToolThemeBox .NET 1.0
    Многоцелевой набор элементов, упрощающий разработку пользовательского интерфейса, касающегося панелей управления и сложных элементов управления с поддержкой тем WinXP и стилей Office 2003. Включает API для работы со схемами WinXP и расширенные классы ControlPaintTheme. Позволяет создавать градиентные и плоские визуальные стили.
  8. Elementool представила онлайновое приложение помощи корпоративным пользователям
    Новое решение поможет корпорациям улучшить поддержку клиентов без привлечения сложных IT-решений или дорогих лицензий и больших отчислений.
  9. BillG приветствовал разработчиков на конференции в Сан-Франциско
    24 марта Bill Gates открыл конференцию в San Francisco, которая также включает шоу Fawcette VSLive!; Microsoft представило не сколько новых инициатив на этом шоу, включая новую программу VSIP, пререлиз Visual Studio 2005 (официальное имя для Whidbey) и два новых ресурса ASP.NET.
    Вдобавок, Microsoft подтвердила намерение поставлять Crystal Reports с VS2005, несмотря на утверждениях о конфликте интересов этой компании с собственной разработкой Microsoft - SQL Server Reporting Services.
  10. Предлагается коммерческая C# криптобиблиотека
    Certicom, коммерческий поставщик криптографических алгоритмов и ПО, выпустил ‘первый коммерческий набор инструментов для разработчикадля Microsoft .NET Framework и .NET Compact Framework’. Согласно информации на сайте, набор включает инструментарий для управления цифровыми сертификатами и ‘полный’ SSL/TLS инструментарий.
  11. Resolvecorp выпустила XC# версии 2.0
    XC#, язык, предлагающий настраиваемые расширения компилятора для языка C#, был выпущен в виде версии2.0. Вдобавок ко встроенным особенностям, также предлагается расширяемая система, с помощью которой разработчики могут встраивать свои расширения в язык.
    Версии 1.x бесплатны, а 2.0 является коммерческим продуктом, ценою менее $200.
  12. FIX: .NET Framework 1.1 WSDL with Visual Studio .NET 2003 hotfix rollup
  13. BUG: The CheckedListBox control does not fire the KeyPress event when the key value is a space character
  14. BUG: An exception does not propagate correctly to the calling function in a Windows Forms application project in Visual Studio .NET
  15. FIX: The IntelliSense feature for a Visual C# .NET project stops working in the Visual Studio .NET IDE

{К содержанию}

9 лучших советов по доступу к данным

9 лучших советов по доступу к данным

ЯЗЫК: C#
Автор статьи: Jeffrey Hasan и Kenneth Tu, www.aspnetpro.com

ПЕРЕВОД: Чужа В.Ф. ака hDrummer


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

Хороший код доступа к данным начинается с хороших дизайнерских решений. Вдобавок, соблюдение нижеприведенных рекомендаций поможет сделать ваш код более эффективным, т.е. в том числе и более быстрым. Вот эти рекомендации:
  1. Использование подходящего объекта доступа к данным
    Разумным подходом при разработке приложения станет использование наиболее подходящего объекта доступа к данным ADO.NET для вашего сценария. Всегда используйте объект класса DataReader для простого чтения данных. Используйте объект DataSet для операций обновления данных только в том случае, если вы выполняете обновление в отсоединённом режиме. (В качестве альтернативы, вы можете написать специальные хранимые процедуры, которые будут производить для вас эти обновления). Используйте объект DataView, если вы хотите работать с отфильтрованными представлениями объёмного объекта класса DataSet. Объект DataView имеет много преимуществ при использовании с объектом DataSet, реализую их практически без всяких издержек.
  2. Используйте хранимые процедуры, а не вставленный код на T-SQL
    Общепринятым подходом для T-SQL является компиляция вашего кода для манипуляции данными (Data Manipulation Language - DML) в хранимые процедуры (ХП). Хранимые процедуры выполняются намного быстрее, чем простые T-SQL выражения, поскольку они прекомпилируются на сервере баз данных и являются повторно используемым кодом. Объект Command ADO.NET позволяет исполнять встроенные T-SQL выражения, непосредственно присваивая выражение свойству CommandText и устанавливая перечисление CommandType в Text. Все мы знакомы с кодом, в котором строка с T-SQL выражением строится динамически. Но вы должны стараться избегать такого подхода. Не только потому, что непосредственное исполнение кода T-SQL является более медленным, но и потому, что вы можете допустить ошибки при построении такой строки, которые, в свою очередь, приведут к ошибкам времени исполнения. Что ещё хуже, в случае исполнения динамического T-SQL кода, можно нечаянно позволить приложению выполнения команды модификации структуры СУБД (например, удалить таблицу). Всегда пользуйтесь хранимыми процедурами и используйте входные параметры (желательно строго типизированные).
    Вы можете минимизировать возвращаемый набор данных, возвращая только те записи, которые действительно необходимы. Это особенно важно для наборов данных, которые будут передаваться клиентам веб-приложений. Также избегайте использования специальных символов * в SQL-запросах; всегда точно указывайте поля, которые вы хотите получить в выборке.
  3. Используйте сложные ХП, а не множество запросов к разным ХП
    Используйте сложные ХП, возвращающие несколько наборов данных, а не несколько вызовов к различным ХП. ADO.NET позволяет легко работать с несколькими возвращёнными наборами данных. Например, можно использовать метод NextResult объекта SqlDataReader. Вот пример кода, позволяющего пройти по всем записям каждого возвращенного набора данных:


    sqlDR = objDB.RunQueryReturnDR("MyStoredProcedure") ;
    int totalResultSets = 10; int i = 0;
    string[] arrResult = new string[totalResultSets]; 

    do {
    while (sqlDR.Read())
     
    //позиционируемся на первой записи
    {
    arrResult[i] = sqlDR["ProductNumber"].ToString();
    i + = 1;
    }
    }
    while (sqlDR.NextResult())
    ;
    // Переходим к следующему набору данных


  4. Используйте тип данных SQL с SQL Server
    .NET Framework и SQL Server используют различные типы данных, которые не всегда корректно конвертируются друг в друга. Пространство имён System.Data.SqlTypes содержит набор структур каркаса .NET, которые представляют типы данных SQL Server в управляемой среде выполнения. Вдобавок, класс SqlDataReader содержит методы, автоматически отображающие полученные поля в соответствующие структуры. Старайтесь всегда использовать типизированные методы при полученные данных из SQL Server’a для того, чтобы избежать ошибок конвертации типов.
  5. Использование пула соединений
    Всегда используйте пул соединений. Управляемый провайдер SQL Server’a поддерживает пул соединений по умолчанию, требуя от вас лишь небольших усилий. Большая часть работы, которую нам необходимо проделать – модифицировать строку соединения для переопределения настроек по умолчанию.
  6. Для доступа к данным используйте централизованные функции
    Всегда помещайте функции для доступа к данным в отдельном файле, что позволит вам упростить написание и поддержку кода. Класс для доступа к данным может содержать реализацию функций, выполняющих основные операции доступа к данным – например, выполнение хранимой процедуры и последующий возврат DataReader, DataSet, XmlReader или вовсе без возвращаемого значения.
    Такие функции могут инкапсулировать детали установки соединения или объекта Command, а также какие дополнительные действия. Этот код является повторяющимся, и наверняка вам не хотелось бы иметь разбросанные одинаковые конструкции по всему коду. Такой код не только тяжело сопровождать – он оказывает существенное влияние на размеры приложения.
    Microsoft предлагает .NET компонент Microsoft Application Blocks for .NET, содержащий оптимизированные функции-обёртки для доступа к данным. Если вы заинтересовались, то по этой ссылке вы можете узнать об этом больше http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp.
  7. Пользуйтесь здравым смыслом программиста
    Управляемая среда выполнения .NET содержит сборщик мусора, спроектированный с учётом оптимизации используемых ресурсов и выполняющий удаление ненужных ссылок. Однако вы всегда должны придерживаться правил, которые будут способствовать эффективность и легкочитаемости вашего кода. В частности, всегда очищайте ссылки на объекты, если эти объекты вы больше не собираетесь использовать. Если вы используете соединение, старайтесь держать его открытым необходимый минимум времени. Открывайте соединение перед его использованием и закрывайте сразу после того, как вы закончили с ним работать. Не оставляйте открытые соединения в вашем коде, особенно если вы работаете с такими объектами, как DataReader. Вобщем, своевременное закрытие соединений и очистка неиспользуемых ссылок на объекты – это действительно хороший стиль кодирования, производящий приятное впечатление.
  8. Правильно используйте обработку исключений
    Обработка исключений – дело дорогое, особенно в случае необходимости вывода ошибки. Поэтому старайтесь реализовывать структурированную обработку ошибок в приложениях, но разрабатывайте свой код так, чтобы избегать попадания в обработчики исключений. Это может показаться очевидным для всех, кроме тех разработчиков, которые использовали классический ASP. Они помнят, что код часто содержал конструкции On Error Resume Next, что позволяло коду продолжать своё выполнение после возникновения ошибки. Такой подход не является хорошим стилем в среде .NET. Пишите свой код так, чтобы необходимость в использовании обработчиков исключений появлялась только в самых крайних случаях. Используйте множество доступных проверочных функций для выявления ошибок до того, как компилятор будет вынужден сгенерировать ошибку времени выполнения.
    Самостоятельно вызывайте исключения только в случае крайней необходимости, поскольку эта операция дорогостояща. Классы исключений предлагают большое количество информации, которая может остаться неиспользованной вызывающим кодом, который получает исключение. В этом случае лучше вызвать пользовательскую ошибку, использовав Err.Raise, чем вызывать исключение. Такой вызов передаёт основную информацию об ошибке – её номер, источник и сообщение, но не содержит неиспользуемую и очень объёмную информацию, такую, как стэк.
    И наконец, если вы используете более чем один catch с разными критериями фильтрации исключений, не забывайте размещать их в порядке от более специфичного к более общему. Например:

    try
    {...}
    catch (SqlException SqlErr){…}
    catch (Exception err){…}
    finally{}

  9. Используйте вспомогательные технологии
    ASP.NET содержит технологии, дополняющие ADO.NET в части обеспечения оптимизированного доступа к данным. В частности, ASP.NET поддерживает большой набор видов кэширования, начиная от кэширования на уровне страницы до кэширования данных с использованием Cache API. Кэширование важно учитывать при разработке приложения ASP.NET, ведь намного быстрее считать данные из кэша, чем повторно обращаться за ними к источнику данных. Единственный серьёзный минус в случае использования кэширования – необходимость предусмотреть в реализации механизма кэширования механизм обновления данных для того, чтобы данные в кэше соответствовали данным в хранилище.

ASP.NET и .NET Framework содержат возможности, которые можно использовать как вспомогательные технологии для доступа к данным. Поэтому помните, что используя ASP.NET для написания приложений, вы имеете доступ ко всем классам .NET платформы, что само по себе уже является большим преимуществом – как в случае доступа к данным, так и в других случаях.

{К содержанию}

Время кода

Загрузка файлов на сервер – это легко!

ЯЗЫК: C#
АВТОР: Brad McCabe,
http://www.aspnetpro.com/
ПЕРЕВОД: Чужа В.Ф ака hDrummer


Дайте пользователям возможность отсылать файлы на ваш сервер без использования компонент сторонних производителей или других обходных путей.
Одной из задач разработки веб-приложений стала загрузка файлов на веб-сервер для хранения и обработки. ASP.NET в свою очередь предлагает встроенную поддержку загрузки файлов на сервер. Этот процесс доступен благодаря двум различным APIs - колллекции Request.Files и серверному элементу управления <input type=file ID="File1" NAME="File1">. Давайте рассмотрим использование <input type=file ID="File2" NAME="File2"> для загрузки файла на сервер.
Создайте пустую веб-форму и добавьте такой HTML-код к ней:

<HTML>
<body>
<form enctype="multipart/form-data" runat="server" ID="Form2">
Выберите файл для загрузки:
<input id="UploadFile" type="file" runat="server" NAME="UploadFile">
<asp:Button id="Button1" runat="server" Text="Загрузка">
</asp:Button>
</form>
</body>
</HTML>

Теперь добавьте одну строчку кода в событие onClick кнопки:

UploadFile.PostedFile.SaveAs("c:\upload.txt");
Когда страница запустится, вы увидите, что на странице находятся две кнопки – элемент управления для загрузки файла автоматически создаёт кнопку browse , позволяя пользователю легко выбрать необходимый файл.
Когда пользователь щёлкает на кнопке ‘Загрузить’, выбранный файл пересылается на сервер и, в этом случае, сохраняется под именем ‘upload.txt’ в корневом каталоге диска C. Естесственно, в реальном приложении необходимо будет реализовать функцию SaveAs, избежав использования жестко заданного имени и расширения файла.
Благодаря встроенной поддержке ASP.NET's для загрузки файлов, теперь вы можете выполнять её буквально двумя строчками кода.


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

Большие объемы с помощью ADO .NET
Status Bar
У кого нибудь есть книга Wrox: Professional WebServices ???
WinForms: вопрос по Binding
Управление IIS
Проблема с PictureBox
c1MainMenu & c1ToolBar картинки
Help!
Исходник TreeView на VB.NET
Безопасность на основе форм
события в UserControl и оповещение страницы
Почему на 2000 Server получаю SERVER APPLICATION NOAVALIBLE?
кодировка письма
Как связать БД и веб страницу?
Работа с полем Image ???

На этом десятый выпуск .Net Собеседника закончен.
До следующего номера.



Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения, вопросы и замечания.


Рассылки Subscribe.Ru
.Net Собеседник - Новости мира Net, C#, ASP.Net


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное