?

Log in

No account? Create an account
Dotnet_am

dotnet_am


C# и платформа .NET в вопросах и ответах

.NET технологии в Армении


Previous Entry Share Next Entry
1.1.2  Каковы возможности .NET? Что можно на нем написать?
Dotnet_am
dotnet_am
Если вы только начинаете изучать .NET, то вас, несомненно, интересует вопрос - на что она способна? Какие возможности вы получите изучив ее? Здесь я коротко расскажу, что можно сделать используя .NET. По секрету сообщу, что многие разработчики .NET тоже не в курсе некоторых ее возможностей, так что и я могу чего-то не знать. Расскажу то, что мне известно, а вы дополните.  
Microsoft .NET Framework - платформа универсальная, и может решать множество задач и их число растет с каждой новой версией. Microsoft вкладывает огромные усилия в развитие .NET, справедливо считая его своей флагманской технологией. 


Программирование для Windows. 
По этой части .NET уже несколько лет стала технологией номер один и реальных конкурентов по скорости и удобству разработки у нее нет. Используя .NET можно писать WinForm (GUI) приложения, консольные приложения, dll файлы, сервисы Windows, графические приложения нового типа (WPF) и многое другое.  В настоящее время имеются некоторые непокрытые области, например, написание драйверов устройств - одна из тех немногих областей где C/C++ упорно не сдают свои позиции. По скорости работы .NET практически не уступает коду написанному на C++,  а в следующей версии (4.0) может и превзойти, благодаря технологии Parallel Extensions которая позволит с легкостью, без написания сложного многопоточного кода, использовать преимущества многоядерных процессоров .  

Программирование для Web.
Технология, позволяющая разрабатывать Web-решения на .NET, называется ASP.NET.  ASP.NET заточена для создания Web-приложений с богатой функциональностью. В отличии от Windows-приложений, здесь у нее много достойных и сильных конкурентов: PHP, Python, Ruby on Rails, Perl... Есть интересные решения, позволяющие сильно облегчить и ускорить разработку, например ASP.NET MVC Framework или Web Client Software Factory.  Очень интересная технология Silverlight. Используя ее можно делать интерактивные, богатые графикой Web-приложения. Фактически Silverlight / C# , конкурент Adobe Flash / ActionScript. По моим субъективным ощущениям  у Silverlight   больше возможностей по сравнению с Flash. 

Разработка распределенных корпоративный приложений.
И здесь у .NET тоже все путем. Web-сервисы, службы уровня предприятия, Remoting - все это делается легко и оптимально. Технология доступа к данным (ADO.NET), которая так важна для корпоративных решений, после версии  Microsoft .NET Framework  2.0 стала почти идеальной. Единственный достойный конкурент для .NET в этой области - Java/J2EE.   

Кросс-платформенное программирование.
Самой известной кросс-платформенной реализацией .NET является Mono. Это open-source проект спонсируемый фирмой Novell.  Приложения написанные под Mono работают в Linux, FreeBSD , MacOS и Windows. В настоящее время Mono портируется под мобильные платформы Android и iPhone. К большому сожалению Microsoft не проявляет интереса к  переносу .NET на другие платформы. Когда .NET только появлялась, они на всех углах кричали о том, что кроссплатформенность - ее второе имя. А потом заперлись в пределах Windows. Благодаря открытым спецификациям .NET open-source сообщества получили возможность реализовывать .NET технологии на других платформах, чем успешно  и занимаются. Недавно в интернете прошли жаркие споры о том, стоит ли разрабатывать open-source используя Mono и включать ее в Linux дистрибутивы по умолчанию. Против этой идеи высказался сам папа open-source - Ричард Столлман, аргументировав это тем, что Microsoft в любое время может заявить свои права на технологию, поэтому open-source программы должны разрабатывается с использованием open-source технологий. Спустя некоторое время Microsoft заявила, что .NET открытая платформа с открытыми спецификации и свои права на сторонние ее реализации он не будет предъявлять.    

Разработка для мобильных устройств
Версия .NET Framework для мобильных устройств работающих под Windows Mobile называется. .NET Compact Framework. Многие возможности обычной framework в ней отсутствуют за ненадобностью, вместо этого добавлены специальные наборы библиотек для мобильных устройств.  Программы для мобильных устройств пишутся в обычной Visual Studio 2005/2008 после компиляции запускаются на эмуляторе, который так же входит в Visual Studio. 
Для других мобильных платформ (Android, iPhone) делаются первые шаги и делает их, к сожалению, не Microsoft, а open-source сообщество Mono, о котором написано в предыдущем абзаце.  

Программирование микроконтроллеров
Очень актуальная задача. Микроконтроллеров в десятки раз больше чем обычных процессоров. Они повсюду: в сотовых и обычных телефонах, телевизорах, мониторах, микроволновках, кондиционерах , стиральных машинах, холодильниках, MP3-плеерах, автомобилях, фотоаппаратах... И всех их надо запрограммировать. Представили какой объем и охват? Долгое время программирование микроконтроллеров было прерогативой C и Assembler-а, позже появилась возможность писать на некоторых языках высокого уровня. C#  в их числе.  Знакомтесь - .NET Micro Framework установив которую можете программировать 32-разрядные микроконтроллеры серии ARM7, ARM9 и Blackfin прямо в Visual Studio 2008. А здесь находится официальная страница Micro Framework .

Создание игр.
На заре .NET много говорилось о том, что он слишком медлителен и неповоротлив для написания тяжелых графических приложений. Оказалось, что это не так. В настоящее время .NET дружит с DirectX, а главное - появилась технология 
Microsoft XNA - позволяет разрабатывать игры с использованием интенсивной 3D графики не только для Windows, но и для игровой консоли Xbox 360.

Программирование на системном уровне
Я уже писал, что на C# можно программировать микроконтроллеры. Если сильно захотеть, то можно даже  левым способом сделать вставку машинного кода в C# (когда-нибудь расскажу об этом).
А можно ли на нем написать целую операционную систему?  Оказывается - можно. Когда я впервые об этом прочитал - у меня глаза на лоб полезли. Операционная система на управляемом коде! И все-так, хотя и экспериментальная, она есть. Это Microsoft Singularity.

Вот, пожалуй и все. Если есть что спросить, добавить или исправить - пишите в комменты.
Всевидящее Око
 

  • 1
В принципе все так и есть. Только пара замечаний
Я все-таки настроен весьма скептически в плане быстродействия .NET. Конечно, всякие бизнес приложения не требующие особого быстродействия вполне неплохо работают. Но там где требуется действительно быстрая обработка больших потоков realtime данных .NET пока сильно сдает, могу привести примеры :)
И насчет параллелизма - в C++ давно есть MPI, и всякие удобные вещи, которые тоже дают возможность без написания сложных многопоточных программ использовать преимущества многоядерных процессоров.

А так - если требуется написать прогу быстро, с минимумом затрат времени и усилий, с хорошим UI и прочими примочками,и нет сильных ограничений в быстродействии, то .NET вполне со всем справляется, да.

На C++ всегда можно написать код, который делает то же самое быстрее, чем C#.
На C можно написать код, который работает быстрее, чем аналогичный на C++
На ассемблере можно написать код, который работает быстрее, чем аналогичный на C ...

Вопрос лишь в том сколько на это будет потрачено ресурсов. Спорить о том, что лучше в смысле отношения скорость/оптимальность разработки, все равно, что спорить какая коробка передач лучше - механическая или автоматическая.
А у тебя в машине какая?


Механическая :)
Ну так и я о том же, у каждого есть своя ниша. С автоматической коробкой удобно ездить в городе/пробках. С механической - гоняться и лучше контролировать машину. Вопрос в потребностях :)

Механическая - это C++ :)

Разве Singularity прямо таки вся на C# написана? Не лучще уж С использовать, чем unsafe mode?

Учитывая, что это Майкрософт, можно сказать наперед - лучше Inferno OS у них не выйдет, даже сравнивать не придется. Архитекторы матобеспечения уж слишком быдлоспециалисты у них.

Нет, в Singularity, как и в любой OS есть части на других языках. В любом случае - интересный проект.
А я и не говорю, что unsafe в C# - это хорошо. Просто такая возможность есть.

  • 1