.NET конкурентам! Скрыпников Сергей Спецвыпуск: Хакер, номер #053, стр. 053-076-4 2) С применением .NET невозможно создать таких же быстрых и компактных приложений, какие делают, например, в C++ или Assembler, что и понятно. Выше уровень программирования (а ассемблер, например - низкоуровневый язык программирования) - ниже скорость работы программ, но при этом заметно выше скорость их разработки. А что важнее для тебя, решай сам: если потенциальный заказчик разработки ПО требует, чтобы ему разработали приложение за рекордно короткое время, то, конечно, обращайся к .NET (хотя это не означает, что все остальное можно выкинуть в помойку). Если же он требует, чтобы программа запускалась и на "трешке" (трешка- это не PentiumIII (пояснение для очень молодых), то надевай очки с толстыми линзами и за ассемблер. 3) Заявленная кроссплатформенность на момент написания статьи находилась еще на стадии разработки, и полноценно использовать все плюсы новой технологии пока возможно только для систем на ОС Windows (кстати, если кроссплатформенность все же удастся реализовать, то, возможно, позднее появятся кроссплатформенные вирусы, а счастливы будут те, кто никогда не скачивал себе .NETFW). 4) Остальные минусы или совсем несущественны, или основаны не на объективной оценке. Part two. Практика Программируем на VB.NET Итак, с теорией ты уже разобрался и, наверное, хочешь посмотреть, как все происходит на практике. Мы долго думали, что же все-таки напрограммировать, чтобы показать некоторые средства языка/технологии, при этом уместиться на отведенную под статью площадь и понравиться тебя. Решили написать простенький сканер портов, который может работать сразу в несколько потоков. Начнем?! Сканер портов Открываем Visual Studio .NET (при разработке программы использовалась версия 2003 Enterprise Architect - последний релиз), создаем новое Windows-приложение. Начнем с интерфейса. Форму мы по привычке переименовываем в frmMain, пишем заголовок формы (в свойстве Text). Размещаем на форме контролы: два Label с надписями "Хост" и "Кол-во потоков", рядом с ними два TextBox с именами txtHost и txtThreadsCount, кнопка btnStart (надпись "Старт"). Ниже - большой TextBox txtLog (Multiline=True, ScrollBars=Vertical), внизу - два Label (lblProgress1 и lblProgress2). Располагать их, конечно, ты можешь по своему усмотрению. Выставляем для каждого элемента свойство Anchor, которое было задумано разработчиками .NET для авторесайза контролов при изменении размеров формы. У контролов с надписями "Хост" и "Кол-во потоков" Anchor=Left Or Top, у txtHost и txtThreadsCount Anchor = Left Or Top Or Right, у кнопки - Right Or Top, у txt Log -Left Or Right Or Top Or Bottom, и, наконец, у двух Label'ов внизу формы - Bottom Or Left Or Right. Интерфейс готов. Теперь напишем класс clsWorker, который будет заниматься основной работой - сканировать указанные порты удаленного хоста (именно это было твоим самым сокровенным желанием, правда?). Для работы с сетью в .NET Framework задействован ряд классов в пространстве имен System.Net, а классы работы с сокетами лежат в System.Net.Sockets. Чтобы при каждом упоминании нужных классов не писать эти длинные приставки, можно импортировать пространства имен. Для этого в файле .vb вне декларации класса (в самом начале файла) нужно написать пару строк: |