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

Содержание журнала АЛГОРИТМ №10 (№4 за 2006 год) и две небольшие статьи из него.


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

Содержание
  1. От автора

От автора

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

Уже готов десятый номера журнала "АЛГОРИТМ".  Здесь вы сможете прочесть его содержание, а также пару небольших статей из этого номера. Кстати, новости регулярно выкладывются в моём ЖЖ по адресу http://hdrummer.livejournal.com/

Напоминаю адрес сайта журнала - http://dotnetgrains.sql.ru/alg/alg.htm  

Не забывайте о подписке - подписной индекс для Украины 91132 в Укрпочте, для РФ - подписка через WebMoney . Подробнее на сайте.

 Итак, содержание 10-го номера:  

  1. Исследуем LINQ (7 частей)
    Часть 1 из N
    Часть первая, в которой я объясняю синтаксис первого запроса
    Я, как и многие из вас, тоже потратил некоторое количество времени на исследование примеров использования языка LINQ, предоставленного компанией Microsoft. При изучении новой технологии я всегда делаю заметки и примечания. В примерах, предложенных компанией Microsoft, вы обнаружите недостаток подробных комментариев или другой подобной документации.
    Начнём сначала: примеры запросов
    Первый набор примеров я взял из проводника по 101 примеру запросов с использованием языка LINQ. Первый пример очень прост:

  2. Готовое решение: мониторим веб-сайт на локальном сервере с помощью сервиса Windows

    Я написал код, приведенный ниже, для монито- ринга веб-сайта, запущенного на локальном веб-сервере. Целью написания была переза- грузка веб-сервера в случае получения объектом WebRequest ошибки 404. Если получена ошибка 404, сервис запускает на выполнение команду, указанную в файле web.config. Сервис работает по таймеру, и отрабатывает с интервалом, указанным всё в том же файле web.config.
    Какой смысл в перезагрузке сервера? В моём случае ошибка 404 является показателем того, что появи- лась проблема, для решения которой нужно переза- грузить сервер. Я использую этот метод для переза- грузки сервера, который обслуживает классическое веб-приложение, написанное на COM+/Classic ASP.

    Вы можете использовать его, где хотите.

    Пол Главич (Paul Glavich) заметил по этому поводу, что в .NET 2.0 есть прекрасный сервис, следящий за «здоровьем» сервера, поэтому, если вы используе- те приложение, написанное на .NET 2.0, вы можете использовать встроенное решение.

  3. Почему я ненавижу Web 2.0 и AJAX

    Вот несколько причин, по которым я испытываю такие чувства.

    1. Web 2.0/AJAX не представляют из себя ничего нового. Несмотря на это все больше компаний и веб- разработчиков используют эти ничего не значащие слова на своих веб-сайтах, в действительности ничего не представляя об этих технологиях.

    2. Некорректное использование Web 2.0/AJAX не даст возможности некоторым пользователям посетить ваш сайт. Если вы хотите удовлетворить всех пользователей сайта, то вам придется писать два приложения – одно из них должно быть рассчитано на тех пользователей, у которых отключен JavaScript. Так же мы поступали и в прошлом, помните? ЕСЛИ вы используете элементы управления или наборы библиотек, позволяющие достигать этого автоматически – киньте мне ссылку, я не нашел ни одного подобного.

    3. Использование готовых библиотек AJAX хорошее дело, поскольку вам не нужно вникать в детали и проблемы этой технологии.

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

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

    Зачастую проще использовать свой собственный JavaScript-код, а не большие готовые файлы с JavaScript (которые вы будете использовать лишь на 1% от их возможностей).

    4. Вы должны отслеживать обновления вашего веб-приложения. Если вы используете AJAX, то в итоге, после обновления используемого набора библиотек, некоторые ваши запросы и ссылки могут отказаться работать.

    Поэтому необходимо использовать обработку ошибок – везде, где это возможно. Проанализируйте свой код, если изменились интерфейсы в каркасе используемой вeрсии AJAX. Новая версия может привести к отказу приложения.

    5. Все больше и больше веб-сайтов используют AJAX для полного обновления страницы, совершенно не используя отсылку всей страницы на сервер (postback). Если нажмете F5 (перезагрузку страницы), то вполне вероятно окажетесь на совсем другой странице приложения. Да, я знаю, что некоторые библиотеки работают в этом случае корректно, но далеко не все.

    Можно привести еще примеры некорректного использования этой технологии – например, если я захочу открыть ссылку с контактами “Contact Us” на одном из сайтов, использующих эту технологию, в новом окне (Shift + Click), то получу сообщение об ошибке.

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

    Вывод

    Складывается впечатление, что автор все же ненавидит не саму технологию AJAX, а лишь веб-приложения, созданные плохими дизайнерами или архитекторами. В то же время бездумное и неуместное использование этой технологии, впрочем как и любой другой, вызовут не только возмущение у автора, но и у любого посетителя – пусть ему даже не известно о том, что такая технология существует. А недовольный пользователь вряд ли снова к вам заглянет – помните об этом!

  4. Защищаемся от атак путём SQL инъекций

    Существуют разные способы атак веб-приложений. Одним из наиболее распространённых видов атак на стороне клиента является атака с использованием кросс-сайтовых скриптов (Cross-site Scripting или XSS). В случае XSS атаки, атакующий пытается использовать методы на стороне клиента для вставки определённого клиентского скрипта и использования его в пользовательской сессии. В этой статье мы разберём некоторые примеры другого вида атак – атак на стороне сервера. В этом случае цель атакующего – получить некую информацию, хранящуюся в вашей базе данных. После разбора примеров разберём способы защиты от такого вида атак.

    Атаки путём SQL-инъекций используют код, не фильтрующий пользовательский ввод, то есть данные, вводимые непосредственно в форму. Чувствительными к такому виду атак являются приложения, берущие пользовательский ввод без дополнительной его обработки и генериру- ющие динамический запрос на языке SQL, исполняемый на сервере.

    Для примера допустим, что у вас есть форма логона, принимающая имя пользователя и его пароль.

    Единожды аутентифицировав пользователя, приложение устанавливает некое сессионное значение (или какой-то другой маркер), позволяющее пользователю считывать защищённые данные.

    Вот пример подобной формы, имеющих два текстовых поля для ввода имени и пароля пользователя.

    --опущено--

    Теперь в закулисной странице напишем:

    Dim SQL As String = “SELECT Count(*) FROM Users WHERE UserName = ‘” & _ username.text & “’ AND Password = ‘” & password.text & “’”
    Dim thisCommand As SQLCommand = New SQLCommand(SQL, Connection) < BR > Dim thisCount As Integer = thisCommand. ExecuteScalar()


    В предыдущей части кода сгенерированный запрос на языке SQL исполняется безо всякой предварительной обработки, позволяя вам узнать, есть ли пользователь с подобным именем и паролем в вашей БД.

    Теперь предположим, что некто ввёл такие строки в поле ввода имени пользователя:
  5. Нужны ли нам такие операторы ??

    Статью можно прочесть здесь.

  6. Итераторы в C# 2.0

    Итак, поговорим об итераторах. Итераторы объявлены в спецификации языка C# 2.0 (http://msdn.microsoft.com/vcsharp/programming/language/ ), в секции 22. Вот что там написано:

    Блок итератора есть такой блок (§8.2), который выдает упорядоченную последовательность значений. Блок итератора отличается от обычного блока наличием одного или более оператора yield.

    ∙ Оператор yield return возвращает следующее значение при итерации
    ∙ Оператор yield break указывает на окончание итерации

    Блок итератора может быть использован в качестве тела метода, тела оператора или тела аксессора, если тип, возвращаемый соответствующей функцией-членом является одним из интерфейсов перечислителя (enumerator см. §22.1.1) или перечисляемого (enumerable, см.§22.1.2).

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

  7. System.Transactions и ADO.NET 2.0

    Если вам нравится использовать компоненты- DataAdapter-ы, вы в восторге от того, что они автоматически открывают и закрывают соединение, а также используют транзакции, то вам неплохо было бы знать, как устроена работа таких компонент.

    Вступление

    Данные – кровь вашей системы. Они удобно устроились в базе данных, разместившись под навесом с надписью XML, однако, они достойны того, чтобы с ними работали надёжными и проверенными способами.

    Но почему же надёжными должны быть только операции с данными? Разве вы не хотели бы писать надежный код и для других операций? Во вступлении к этой статье вы узнаете, как писать надёжный код в случае работы с транзакциями на платформе Windows. Мы очень подробно разберем, как работают классы пространства имён System.Transactions, а также каким образом их можно использовать с пользой в своих приложениях. Также вы увидите, каким образом можно использовать существующую интеграцию System.Transactions внутри ADO.NET и почему вы должны понимать, что же происходит там – в недрах этой замечательной технологии.

  8. Doxygen и Graphviz : документирование проектов на C#
    Doxygen [3] - это утилита, предназначенная для создания документации для программ, написанных на C++, C, Java, Objective C, Python, IDL (Corba и Microsoft) и некоторых версий PHP, C#, и D. Выходная документация представляет собой файлы в html-формате, в формате LaTex (в частности, для дальнейшего создания pdf-файлов), rtf, справочного руководства в стиле Unix-man, справочного руководства в стиле кроссплатформенной библиотеки Qt [4], xml и так далее.

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



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



В избранное