.NET Framework: Какую версию вы используете?

    Фреймворк .NET развивается очень быстро, в языки с каждой версией добавляется множество новых возможностей. Однако интересно, как быстро этими обновлениями удаётся воспользоваться.

    Краткая историческая справка (неполная):

    .NET 4.5 (Windows Vista SP2+): Metro, async/await, Unicode console, generics in MEF, IDN, EAI, ZIP; WPF: Ribbon control, async validation, VirtualizingPanel pixel scrolling, static properties bindings, live shaping, better weak events support.

    .NET 4.0 (Windows XP SP3+): Parallel Extensions, Parallel LINQ, Task Parallel Library, dynamic dispatch and DLR, covariance and contravariance, named parameters, optional parameters, indexed properties, code contracts, BigInteger and Complex classes.

    .NET 3.5 (Windows XP+): LINQ, Expression Trees, Compact Framework, HashSet, EventSchemaTraceListener, GC latency mode, reflection in partial trust, ReaderWriterLockSlim, DateTimeOffset, TimeZoneInfo; WCF: Workflow Services, Durable Services, Web Programming Model, Atom and RSS, Web Services Interoperability; WPF: IME for TextBox, image caching, binding debugging, IDataErrorInfo, WinForms Interoperability.

    .NET 3.0 (Windows XP+): Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), Windows Workflow Foundation (WF), Windows CardSpace.

    .NET 2.0 (Windows XP+): 64-bit, generics, generic collections, partial classes, nullable types, anonymous methods, iterators, remoting, ACL, Console improvements, debugger attributes, Edit and Continue, FTP requests, HTTP caching, proxy discovery, HttpListener, custom cultures and other globalization improvements, GZIP, ping, SerialPort, SMTP, Semaphore and other threading improvements, trace data filtering, transactions; WinForms: DataGridView, ToolStrip, MaskedTextBox, SoundPlayer, SplitContainer, WebBrowser, layout panels.

    .NET 1.1 (Windows 2000+): side-by-side execution, IPv6, security permission changes.

    .NET 1.0 (Windows 98+): чудо свершилось.

    (Возможны ошибки и неточности. Если что, поправляйте.)

    Во всех вопросах можно давать несколько вариантов ответа, поэтому, если вы ведёте несколько проектов, то можете отметить для каждого (правда голосовать за один вариант несколько раз не получится). Округлять до ближайшего. Если вы не пользуетесь .NET Framework, то, пожалуйста, нажмите на кнопку «Воздержаться».

    Only registered users can participate in poll. Log in, please.

    Какую версию вы используете для коммерческих продуктов?

    • 33.6%.NET Framework 4.5525
    • 65.4%.NET Framework 4.01023
    • 29.0%.NET Framework 3.5453
    • 2.9%.NET Framework 3.046
    • 14.1%.NET Framework 2.0220
    • 1.2%.NET Framework 1.118
    • 0.8%.NET Framework 1.013

    Какую версию вы используете для личных проектов?

    • 57.5%.NET Framework 4.5852
    • 50.1%.NET Framework 4.0742
    • 12.6%.NET Framework 3.5187
    • 1.0%.NET Framework 3.015
    • 6.1%.NET Framework 2.090
    • 0.5%.NET Framework 1.18
    • 0.7%.NET Framework 1.011

    Как быстро вы переходите на новую версию для коммерческих продуктов?

    • 6.3%С бета-версии71
    • 13.4%В день релиза151
    • 20.7%Спустя месяц233
    • 24.7%Спустя три месяца279
    • 30.8%Спустя год347
    • 13.0%Спустя два года147
    • 3.4%Спустя пять лет38
    • 10.7%Никогда121

    Как быстро вы переходите на новую версию для личных проектов?

    • 25.0%С бета-версии301
    • 35.1%В день релиза422
    • 25.0%Спустя месяц301
    • 15.9%Спустя три месяца191
    • 12.0%Спустя год144
    • 2.5%Спустя два года30
    • 1.1%Спустя пять лет13
    • 5.7%Никогда69
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 50

      +11
      Ура, еще 4 человека используют .net 1.1 Я не одинок в своем кошмаре!
        +8
        С версии 1.1 прошло 10 лет же. Сбербанк что ли?..

        А я ещё поначалу сомневался, стоит ли включать 1.0 и 1.1 в опрос. Ладно хоть, что 1.0 пока на нуле. Уже нет.
          0
          В некоторых местах до сих пор используются комптютеры класса Pentium 1-2 с Windows 98 (почему бы и нет, если задача — печатная машинка с пасьянсом). Иногда может быть надо что-то написать для такой конторы. Вот 1.1 и живёт. Да что там, даже VisualBasic 6 живёт и турбопаскаль досовский.

          А ещё есть фирмы, которые один раз разработали программу, кое как решающую специализированную задачу, для которой нет существенных конкурентов, понаподсадили на неё клиентов и всю жизнь поддерживают, почти не развивая. Я лично знаю одну очень популярную у нас специализированную учётную программу, представляющую из себя весьма своеобразное поделие на Visual FoxPro, и авторы не плохо живут, заставляя клиентов регулярно продлевать лицензии. В таких проектах основной принцип «не меняй то, что работает», вот мы и видим 55+32 человек, не переходящих на новую версию фрэймворка никогда. И, в принципе, ничего особо зазорного в этом нет, просто бизнес. Задача есть, решение есть, все довольны (хотя, иногда, и не без матов в процессе эксплуатации).
            +1
            Я вполне допускаю, что такие «застрявшие в прошлом» конторы существуют, но не могу понять, зачем добровольно соглашаться на поддержку и развитие подобного софта, если приходится постоянно плеваться на процесс разработки. По-моему, полезнее для нервов найти место, где можно разрабатывать на более современных продуктах. Да и неприятно, наверное, осознавать, что живёшь с опозданием на 10 лет.
              +2
              .Net 1.1 не так уж страшна, простые вещи на ней пишутся, по большому счёту, почти точно так же, как и в более новых.
                +2
                Да и неприятно, наверное, осознавать, что живёшь с опозданием на 10 лет.

                Почему же. Лично я умудряюсь совмещать любовь и азарт в отношении новейших языков и технологий с буйной некрофилией — обожаю антикварное железо (особенно девайсы, считавшиеся когда-то очень давно очень крутыми) и применять его к решению практических задачь.
                • UFO just landed and posted this here
                    +2
                    Старое железо часто ограничено в выборе применимых версий ОС и библиотек. Windows XP даже на топовых из первых пентиумов — это страшно, а.свежая Net Framework там будет только ставиться, наверно, дня два…
                +1
                Basic-то ладно. Он в своем роде уникален. Как и турбопаскаль. Но смысл использовать первые фреймворки мне не ясен.
                  +1
                  Ну что же непонятного? 1.1 нужна ради поддержки Windows 98. Так же как 4.0 ради поддержки XP. Плюс некоторые умудрились в своё время написать такой код, который оказался не совсем совместим с более новыми версиями и не хочет его переписывать. Вот Вам и причины.
              +15
              может вы с ними в одном проекте работаете? =)
                +2
                Пора оглянуться и посмотреть по сторонам. За десять лет, да)
                  +1
                  если работает — не трогай ;)
              +4
              +1 за перечисление фич!
                0
                В смысле WinForms, WPF, ASP.NET и так далее? Мне слабо всё перечислить. :) Плюс есть куча вещей, которые непонятно, включать ли: IronPython (разрабатывался MS, потом забыт), Unity (в сам фреймворк не входит, но на совести MS) и т.п.
                  +4
                  А можно я чуточку поправлю?

                  В описании фич немного смешаны, собственно, фичи фреймворка, и фичи языка.

                  Ну вот например, в языке C# 4.0 есть фича «параметры по умолчанию». А компилить его можно под .NET 2.0. У нас, кстати, есть такой продукт (виндовая утилита, коммерческая) — пишем его на C# 4.0 но компилим код под 2.0, т.к. хотим максимальной совместимости…

                  А вообще вот полезная ссылка для тех кто пишет десктопные утилиты: www.statowl.com/microsoft_dotnet.php
                    +1
                    Ну понятно, что там всё в одну кучу без разбора. Это для оценки с высоты птичьего полёта. Не вижу большой пользы разбирать в этом списке, какие версии версий фреймворка, какие версии какого языка, как они взаимосвязаны, к каким осям в каком виде прилагаются, с какими средам разработки вышли, что с чем обратно и вперёд совместимо и т.п. Да и во всём этом много тёмных мест: тот же async/await в одной версии доступен из коробки, в другой с библиотекой, та же история с TPL и многим другим.

                    Мне не только лень, но и слабо разобрать всё это по полочкам — в конце концов я сам пользуюсь малой частью фреймворка.
                0
                В градации «Как быстро вы переходите на новую версию» не хватает оторванных от времени пунктов. Например, из-за наличия таких фич как generics и Edit and Continue в 2.0 я на нее сразу и пересел, а вот на более поздние версии переезжаю гораздо медленнее.
                  0
                  Если в этом вопросе заменить ответы на «если то» и «когда это», то гарантированно будут пропущены какие-то варианты: у всех разные условия и причины. А вот во временных отрезках выражается что угодно. Если вариантов несколько, как в вашем случае, то есть галочки.
                  +1
                  Стараюсь не использовать вообще, кроме как для сторонних приложений. Когда есть возможность писать на Си, предпочитаю его.
                    +3
                    И в чем дзен?
                    Логичнее же наоборот, когда никак по-другому нельзя — писать на более низкоуровневых C/C++.
                      0
                      Для меня важно удобство пользования, а не написания. Обычному пользователю всё равно, написано ли приложение на ассемблере или на прологе. Ему не важно, использовал ли разработчик всякие MVC, или он писал полностью в процедурном стиле. Зато его жутко бесят тормоза. Тормоза во время запуска из-за компиляции промежуточного кода в машинный. Тормоза во время работы из-за сборки мусора. Причём тормоза эти не от сложности алгоритмов или низкой производительности аппаратного обеспечения, а от того, что так кодер (или менеджер) захотел. И если при компиляции в машинный код тормоза можно проконтролировать, то в случае с .NET и Java многое зависит от того, как себя виртуальная машина поведёт. А утечки памяти и переходы по нулевому указателю на язык не надо сваливать, надо писать так, чтобы по логике программы их не было, да и на языках высокого уровня при желании можно их создать.
                        0
                        Тормоза во время запуска обычно не превышают пары секунд.
                        «Компиляция» IL в машинный код происходит только один раз при первом запуске (или даже можно сделать, что при установке).
                        Тормоза во время работы из-за сборки мусора в прикладном приложении — это признак очень плохого программиста. За 5 лет такого ни разу не видел. Вот в высоконагруженных «серверных» приложениях — возможно, но для исключения таких ситуаций есть специальные техники.
                          +3
                          У вас какие-то странные представления об управляемом коде.

                          Тормоза во время запуска из-за компиляции промежуточного кода в машинный.

                          В C# приложении эти тормоза происходят ровно один раз — при первом запуске. И, скажем, лишние пять секунд запуска я не замечу (да даже Word может грузиться в пять раз больше, чем будет идти компиляция). В Java приложении интерпретация, плавно переходящая в компиляцию, поэтому теоретически проблемы первого запуска быть не должно вообще, но я ни программирую на Джаве, ни пользуюсь написанными на ней десктопными приложениями, поэтому точно сказать не могу.

                          Кроме того, можно заранее скомпилировать приложение во время установки, если первый запуск настолько критичен. Учитывая, что во время любой установки создаются точки восстановления системы, добавление десятка секунд в установку гарантированно никто не заметит.

                          Тормоза во время работы из-за сборки мусора.

                          Чтобы ощутить тормоза сборщика мусора в дотнете, нужно очень постараться, скажем, генерировать по 10 метров мусора каждую секунду. В обычном приложении вы этого никогда не заметите. Сборка мусора происходит в несколько поколений, и в случае десктопных приложений сборка происходит в отдельном потоке. Дотнет всегда славился отличным сборщиком мусора, ещё с первой версии.

                          За Джавой не следил, там был блокирующий сборщик, и всякие убивания роботов об стену на совести Джавы, но там последнее время происходили какие-то телодвижения, поэтому как там сейчас обстоят дела — не знаю.

                          Ну отнимет сборщик мусора у вас 5% времени. И что с этого? Некоторые алгоритмы за счёт сборщика мусора вообще ускоряются относительно плюсов (если не использовать специализированных аллокаторов).

                          И если при компиляции в машинный код тормоза можно проконтролировать, то в случае с .NET и Java многое зависит от того, как себя виртуальная машина поведёт.

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

                          Понимаете, какое дело… Управляемый код — это не только лучшая защищённость от ошибок, не только более высокая скорость разработки, но, как это ни парадоксально, зачастую более высокое качество результата. Если посадить новичков писать на плюсах и на шарпе, то у плюсовика получится неработающая фиговина, а у шарповика будет что-то шевелиться. Если середнячка — в плюсах будет глючная тормозная поделка, а в шарпе будет стандартная средняя программа.

                          Где плюсы рулят — это там, где реально критична скорость выполнения кода (игровые движки, железо, сложные расчёты и т.п.), где есть крутые специалисты, которые реально знают, что и зачем делают, а не гонятся за мини-оптимизациями. На плюсах потолок скорости исполнения кода — выше, чем на шарпе. Но этот потолок нужен в лучшем случае 1% приложений. И цена этого потолка — раз 10 больше, чем цена управляемого кода на 20-30% медленнее. И потолок недостижим для большинства компаний, где все — середнячки или продвинутые середнячки.

                          Поэтому, если вы занимаетесь разработкой в областях, где скорость нужна, и делаете это качественно — я вас уважаю. Если вы пишете на плюсах бизнес-приложения и прочий ширпотреб, где 90% процессорного времени отнимает GUI — то выбор плюсов ошибочен.
                          +1
                          Пожалуй, хабраюзер Athari исчерпывающе ответил на Ваш комментарий.
                          Я лишь хочу спросить: а Вы можете назвать какое-нибудь известное .NET приложение, у которого явно выражены приведенные Вами проблемы?
                      –23
                      Одного не понял — Хабр вроде как русскоязычный ресурс? А почему тогда описания NET'ов на английском? :)
                        +25
                        Если я начну переводить на русский, меня никто не поймёт. :) Переводы многих вещей неустовшиеся. Список официальных переводов терминов отсутствует. Справка переведена автоматически, а не людьми, и переводы многих терминов выбраны совершенно от балды, и не соответствуют изначальному смыслу. Ну и я сам никогда не пользуюсь русской документацией, только когда-то очень давно читал переведённые книжки.

                        В общем и целом, программирование на .NET, как и всё программирование, чуть менее, чем полностью английское. Если кто-то пользовался фичей, то он знает английское название. Если не пользовался, то русское название не поможет. :)
                          +2
                          Нужно так это правильно переводить:.СЕТЬ КАРКАС :)
                            +3
                            Ага.

                            Оконные Основы Связи
                            Библиотека Параллельных Задач
                            Встроенный в Язык Запрос
                            Худой Замок Читателя-Писателя
                            Оконные Основы Представления

                            P.S. Вот мы смеёмся, а в русском MSDN примерно так и написано…
                            +3
                            Картинка из соседнего топика в тему

                            0
                            А что там переводить то?
                              +3
                              Предлоги. :)
                              +1
                              это не описания. это теги.
                              0
                              Всегда последнюю (что не мешает некоторым проектам компилироваться в более старые при желании, что стало актуально с появлением версии 4.5, не поддерживающей XP). Эксперименты по переходу на новую версию начинаем когда выходит соответствующий релиз Visual Studio.
                                0
                                Async/await пользуетесь? Я вот совсем недавно обнаружил, что .NET 4.5 на XP не ставится (этот топик не в последнюю очередь из-за этого сюрприза возник). Есть какой-то «Microsoft.Bcl.Async», но как без переводвыподвертов собирать две версии — шут знает.
                                  0
                                  Еще есть Async CTP (полное название не помню), это реализация async/await под .NET 4.0

                                  А если его декомпилировать, то можно и под 2.0 аналог написать, никаких принципиальных сложностей нет (у меня этот велосипед даже где-то в папке с проектами лежит)
                                    0
                                    Async/await пользуетесь?

                                    Нет. Думал попользоваться, но потом обнаружил, что внутри async обязательно должен быть другой await и, следовательно, просто выполнить параллельно свой собственный алгоритм через это дело не получится, так что продолжаем по старинке. Но, да, есть, конечно, места где async/await таки пригодится, но это не во всех проектах, в некоторых оно не нужно или нужно не на столько, чтобы ради этого отказываться от поддержки XP.

                                    Я вот совсем недавно обнаружил, что .NET 4.5 на XP не ставится

                                    Я это обнаружил когда решил поставить VS2012 ради последней версии ASP.Net. Пришлось поставить семёрку из-за этого.
                                  +1
                                  У нас версия четко привязана к Unity3D. Они поменяли, и мы поменяли.
                                    0
                                    Мое мнение, что если, что то и писать на Net то только 2.0 и выше. В остальном и без Net писалось и работало.
                                    Помню переход был кошмарен, и только VS2005 с ее Net 2.0 стала более адекватной… и то не без греха…
                                    Сейчас использую Net 2 только в проектах где ну оооочень велика вероятность что не обновляли XP. В остальном 3.5 и выше.
                                      0
                                      Сейчас использую Net 2 только в проектах где ну оооочень велика вероятность что не обновляли XP

                                      Когда появлялись первые версии .Net, местами ещё дискетами пользовались, доступ в Интернет был еле-еле диалап и винчи часто бывали на несколько гигов. Тогда такими вопросами задаваться было логично. Но нынче ориентироваться на то, что кто-то не может скачать SP3 и .Net 4.0 по-моему излишне, в конце концов или можно приложить их на диске если целевая аудитория — жители лесов и полей, где нет нормальной связи. Так что по большому счёту я вижу смысл в поддержке только 4.0 для XP, 2.0-3.5 по-моему можно уже дать упокоиться с миром.
                                        0
                                        В корпаративе старье… 3.5 и то доставлять… да что говорить Win2008 галку в компонентах…
                                        Но 2 это стейт далее 3.5 стейт… потом 4 или 4.5, могу ошибаться.
                                          +5
                                          Да уж, порадовали требования для .NET 4.5… Все корпоративные клиенты ринулись обновлять свои Win2003 сервера, ради новых фич фреймворка.
                                          0
                                          Вот так и получаются программы размеров в 10 килобайт, тянущие многомегабайтную .NET 3.5 в зависимостях…
                                            0
                                            Я тоже так относился к дотнету десять лет назад. :) Но давайте будем реалистами:

                                            1) Дотнет можно скачать. 40-50 метров (столько весят 4.x) на 256 кбпс скачаются за полчаса. Ближе к цивилизации скорость от 10 мбпс, это 1 минута.

                                            1а) Дотнет можно приложить к инсталлятору, чтобы не мучать юзеров.

                                            2) Дотнет можно приложить к диску (почём они нынче? 5 руб?), если диалап или полный оффлайн.

                                            3) Дотнет ставится с обновлениями системы. Если человек не самоубийца, то обновления не отключает. Обновления (почти) идеально работают даже на пиратской винде.

                                            Есть, конечно, корпоративные клиенты, застрявшие в прошлом. Но они — вообще проблема для программистов (и не только для них), и дотнет там явно не основная трудность. Если нервы дОроги, с ними можно просто не работать.
                                              0
                                              Есть, конечно, корпоративные клиенты, застрявшие в прошлом. Но они — вообще проблема для программистов (и не только для них), и дотнет там явно не основная трудность. Если нервы дОроги, с ними можно просто не работать.


                                              А кому еще можно продать клиент-серверную СКУД на 5000 человек?
                                              +1
                                              Обычно .NET уже давно стоит на машинах. Приходит с обновлениями для винды, в версиях выше XP вообще встроен при установке.
                                                +1
                                                Вот так и получаются программы размеров в 10 килобайт, тянущие многомегабайтную .NET 3.5 в зависимостях…

                                                А как Вы относитесь к тому, что большинство программ в 10 килобайт «тянут в зависимостях» многогигабайтную Windows или Linux? :-)
                                                  0
                                                  Когда ради них приходится ставить Linux (или Windows) — долго ругаюсь. Но, как правило, нужна ОС оказывается уже установленной, в отличие от нужной версии фреймворка
                                            0
                                            Перешел на последний дотнет ради MVC4. Заодно в команде прочистили все девелоперские машины, поменяли ОС на Win7 (требование VS2012). Два дня хаоса, зато потом счастье.

                                            Only users with full accounts can post comments. Log in, please.