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

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


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

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

Содержание
  1. От автора
  2. Обзор новостей
  3. Мешаем окончанию сессии в ASP.NET
  4. Время кода - Использование веб-сервисов Центробанка РФ
  5. Форумы .Net на www.sql.ru

От автора

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

Зачастую вместо хранимых процедур (ХП) в коде разработчик использует запросами, составленные путём конкатенции строк. Основной причиной для такого использования является (кроме обыкновенной лени) скорость разработки - гораздо быстрее написать запрос, передать его объекту класса SqlCommand, выполнить его и дело в шляпе, в отличие от второго способа, который, конечно же, является более правильным - использования ХП. Ведь ХП надо сначала написать, потом дать права на её выполнение, затем задать параметры и только потом выполнить собственно процедуру. Однако "отрицательные" особенности использования ХП с другой стороны являются и положительными - скорость исполнения выше, да и дополнительная проверка с точки зрения безопасности не помешает. Кроме того, код ХП можно изменить не перекомпилируя всё приложение, тогда как в случае использования встроенного запроса такой подход невозможен.
Один из способов быстрого задания параметра вот такой:

SqlCommand scom = new SqlCommand();
[...]
scom.CommandType = CommandType.StoredProcedure;
scom.CommandText = "[dbo].proc_UserRequestsInsert";
scom.Parameters.Add("@req_date", typeof (DateTime)).Value = DateTime.Now;
scom.ExecuteNonQuery();


Здесь мы сразу задаём имя параметра, его тип и значение. Может быть такой краткий способ подвигнет вас на более частое использование ХП в ваших приложениях.

На этом всё - желаю интересного чтения.

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

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

  1. SQL Server 2005: цены и Open Source
    Microsoft объявила о ценовой политике для SQL Server 2005 всех редакций, включая заменительMSDE - редакцию Express. Также в новостях есть утверждение Tom Rizzo, Product Manager for SQL Server 2005, что Microsoft подумывает сделать исходники SQL Server 2005 открытыми (!). Tom также утверждает, что большинство пользователей не станут изменять код, однако многие будут "испытывать приятное ощущение от уверенности в том, что там нет дыр или преднамеренных нарушений безопасности продукта".
    Цены на продукт будут такими:
    • Enterprise Edition $25,000/processor
    • Standard Edition $6,000/processor
    • Workgroup Edition $3,899/processor
    • Express Edition бесплатно
  2. Microsoft ищет несколько толковых приложений
    Сотрудник Microsoft Jay Roxe просит разработчиков переслать свои приложения в Microsoft для тестирования на совместимость между .NET Framework 1.1 и 2.0. Microsoft проверит приложение с помощью последнего билда Visual Studio 2005 и сделает вам отчёт о проблемах, а также напишет свои предложения по их устранению.
  3. Вышла серия статей о структурах данных в C# 2.0
    An Introduction to Data Structures
    The Queue, Stack, and Hashtable
    Binary Trees and BSTs
    Building a Better Binary Search Tree
    From Trees to Graphs
    Efficiently Representing Sets
  • Вышел PostgreSQLDirect .NET 2.00 с поддержкой .NET Framework 2.0
    Новая версия также поддерживает Visual Studio .NET 2005 Beta и Borland Delphi 2005. Добавлена поддержка PostgreSQL 8.0.
  • Calendaring Bundle 4.1 – мощный календарь для ваших программ на .NET с поддержкой VS2005
    Calendar Bundle состоит из компонент CalendarGo и ResourceScheduler. CalendarGo теперь поставляется в версии 4.1, с поддержкой печати, подсказками и конфигурируемыми рабочими днями.
  • Cibersql выпустила веб-инструмент для управления и создания отчётов для SQL Server
    Cibersql Web Admin предоставляет большую часть функциональности, предоставляемую Enterprise Manager, включая управление работами, предупреждениями и операторами, манипулицию всеми объектами SQL Server-а, query analyzer и создание отчётов. Вдобавок пользователь может экспортировать данные в форматы XML, XLS, PowerPoint и MS Word.
  • {К содержанию}

    Статья номера

    Мешаем окончанию сессии в ASP.NET

    ЯЗЫК: C#
    Автор статьи: Ach1lles

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

    Проблема

    Я уже много лет разрабатываю сайты, используя ASP и ASP.NET и должен сказать, что наиболее часто встречающейся проблемой у конечного пользователя (кроме обычной тупости ;) является проблема ввода информации в форму – пока пользователь вводит её, заканчивается сессия и вся выполненная работа пропадает напрочь. Я пытался применить решения, основанные на создании на javascript предупреждающего окна или перезагрузке страницы, но все решения такого рода имеют ограничения, особенно если они не могут отправить форму на сервер из-за ограничений по заполнению полей.

    Решение

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

    private void Page_Load(object sender, System.EventArgs e)
    {
    this.AddKeepAlive();
    }
    private void AddKeepAlive()
    {
    int int_MilliSecondsTimeOut = (this.Session.Timeout * 60000) - 30000;
    string str_Script = @"
    <script type='text/javascript'>
    //число соединений
    var count=0;
    //максимально число обновлений
    var max = 5;
    function Reconnect(){
    count++;
    if (count < max)
    {
    window.status = 'Ссылка на сервер обновлена ' + count.toString()+' раз' ;

    var img = new Image(1,1);

    img.src = 'Reconnect.aspx';

    }
    }
    window.setInterval('Reconnect()',"+ int_MilliSecondsTimeOut.ToString()+ @"); //устанавливаем в необходимую величину
    </script>
    ";
    this.Page.RegisterClientScriptBlock("Reconnect", str_Script);
    }

    Этот код приведёт к тому, что клиент будет запрашивать страницу Reconnect.aspx за 30 секунд до окончания сессии.


    Это важно

    Итак всё это работает, но если страница закэширована локально, то запрос к серверу не отсылается и сессия вновь отвалится. Что можно в этой ситуации сделать? Можно отключить кэширование страницы.
    Это делается спомощью такой директивы на странице:

    <%@ OutputCache Location="None" VaryByParam="None" %>
    <html>
    </html>

    Директива OutputCache не даёт кэшировать страницу – так что запрос выполняется каждый раз. Поскольку для страницы не нужен файл с кодом, то и директива @Page не нужна.

    Вот и всё.

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

    Время кода

    Использование веб-сервисов Центробанка РФ

    ЯЗЫК: C#
    АВТОР: Чужа В.Ф.,
    dotnetgrains.sql.ru


    Бывает же такое – сел поработать с веб-сервисами, а тут вопрос на форуме на эту тему. Решил помочь и не заметил, как пролетела вторая половина понедельника :)
    Речь вот о чём была – есть веб-сервисы Центробанка РФ и хочется с ними взаимодействовать. Полный список веб-сервисов ЦБ РФ находится здесь. Первым делом для этого нужно создать прокси-класс. Прокси-класс создаётся с помощью утилиты wsdl, а трудности в его создании могут начаться если вы находитесь за прокси-сервером. После нескольких экспериментов я сгенерировал класс DailyInfo с помощью вот такой строки:

    wsdl http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl /pp:[мой_пароль_на_прокси_сервер] /pu:[мой_логин_на_прокси_сервере] /l:c# /n:hDrummerWS /proxy:10.10.7.91:3128

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

    csc /t:library DailyInfo.cs

    Полученную библиотеку переписываем в каталог приложения или делаем на неё ссылку (через add reference...) и затем, добавив директиву using hDrummerWS, используем один из методов веб-сервиса для получения информации и вывода её в DataGrid:

    DailyInfo di = new DailyInfo();
    DataSet ds = new DataSet();
    ds = di.NewsInfo(DateTime.Today.AddDays(-5), DateTime.Today);            < BR> DataGrid1.DataSource = ds;
    DataGrid1.DataMember = ds.Tables[0].TableName;
    DataGrid1.DataBind();

    Это пример синхронного вызова веб-сервиса, также вызвать его можно и асинхронно.

    На этом всё.


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

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

    Update data from DataGrid (Web Form)
    для строк с определенным критерием разные темплейты
    Проброс триггеров из С# приложения в ( ADO.net ,Microsoft SqlServer)
    Adapter.DeleteCommand.CommandText==null;
    Программное создание хранимой процедуры
    #include SSI при регистрации элементов управления
    Сортировка по данным из другой таблицы


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



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


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

    http://subscribe.ru/
    http://subscribe.ru/feedback/
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.dotnetgrains
    Отписаться

    В избранное