Что озадачивает меня, … Являются языками.NET основные языки для Windows (автономные) приложения?

Я - любознательный студент.NET без коммерческого практического знания, и я был озадачен, каким exactlty языки.NET предназначены для?

Q1. При наблюдении веб-сайтов задания.NET кажется главным образом используемой для веб-приложений, не очень для Приложений Windows? (Мое задание мечты состоит в том, чтобы разработать автономные маленькие Приложения Windows.)

Q2. Большинство "главных" Приложений Windows разрабатывается с помощью C/C++? например, приложения текстового редактора как MS Word или OpenOffice; фото программное обеспечение редактирования как ACD Видит или Photoshop; MSN или Yahoo Messenger; средства записи диска....NET является слишком медленной и слишком косвенной для обработки этих видов задач?

Q3. Языки.NET главным образом только используются в ПРОСТОМ бэкенде базы данных вовлечения бизнес-приложений? Например, платежная ведомость или приложения GPS, поскольку это является слишком медленным и слишком косвенным для главных приложений?

Q4. Я думал в течение последних нескольких лет.NET была единственным средством разработки, поощренным Microsoft для Приложений Windows, и C/C++ устаревшие языки? Они используют MFC для доступа к Windows API, который также устарел в новых версиях Windows (обратно совместимый, но не поощренный Windows)?

Q5. Если C/C++ является основными инструментами для главных автономных Приложений Windows, то (медленный) подход управляемого кода является только шуткой? Или преобладание C/C++ происходит из-за большинства основных приложений, являются более старыми, чем.NET? Можно ли дать мне некоторые известные названия программного обеспечения, разработанного с помощью.NET?

Большое спасибо за Ваше промышленное понимание!

21
задан Aperture 24 June 2010 в 23:17
поделиться

11 ответов

Одна проблема, которую я хочу решить с вашим вопросом, заключается в том, что вы задаете фактический вопрос («Являются ли большинство« основных »приложений Windows, разработанных с использованием C / C ++?») И вопрос, основанный на оценке / причинно-следственной связи («Is. NET слишком медленная и слишком непрямая, чтобы справиться с такого рода задачами? ") За один раз.

Это правда, что большинство настольных приложений Windows (например, Microsoft Office, Adobe Photoshop и им подобных) написаны на собственном коде. Однако также верно и то, что на стороне сервера, по крайней мере, в стеке Microsoft, это все ASP.NET, то есть управляемый код.

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

Как отмечали другие, существует множество требований при выборе метода реализации для вашего настольного приложения. Это может быть переносимость, традиции, существующая кодовая база, обучение ваших разработчиков, наличие управляемых оболочек для определенных API (исторически Windows часто отсутствовала в последних) и многие другие факторы.

В качестве конкретных примеров «полностью управляемых» настольных приложений я бы процитировал ReSharper - это полностью настольное приложение .Net с нетривиальным пользовательским интерфейсом и логикой.Visual Studio 2010 также имеет значительные части (включая уровень пользовательского интерфейса / представления), написанные в управляемом коде.

8
ответ дан 29 November 2019 в 06:44
поделиться

Есть несколько основных проблем, которые, как мне кажется, все еще способствуют относительному отсутствию коммерческих приложений .NET (тип, который вы покупаете в коробке в местном магазине программного обеспечения):

  • Требование к клиентам (возможно) загрузить правильную версию среды выполнения фреймворка и/или установить ее перед запуском вашего приложения.
  • Там, где требуется сверхвысокая производительность, проверка границ массивов/коллекций в .NET (защита управляемого кода в целом) явно медленнее, чем языки/инструменты, которые не делают этого за вас.
  • Мнение о том, что JIT-компиляция приводит к замедлению времени запуска.
  • Переписывание 1000 строк рабочего кода на C/C++ в .NET часто не имеет большой ценности для бизнеса.

Я не утверждаю, что эти проблемы обоснованы или нет, просто пытаюсь ответить на ваш вопрос, почему до сих пор существует относительный недостаток коммерческого (упакованного) программного обеспечения .NET.

5
ответ дан 29 November 2019 в 06:44
поделиться
  1. .NET определенно используется для автономных приложений, хотя определить точное процентное соотношение практически невозможно.
  2. Да, в основном они делаются на старых языках. Многие, конечно, могли бы быть сделаны на .NET, но вам потребуется много стимулов, чтобы переписать с нуля что-то такое большое, как Word, Photoshop и т.д.".
  3. Не обязательно, но это может выглядеть именно так просто потому, что огромный процент бизнес-приложений может быть (и уже написан) как фронт-энды баз данных.
  4. Я не думаю, что у MS есть действительно единое послание здесь - они, конечно, вложили много труда в .NET, но они также продолжают развивать и улучшать альтернативы, такие как MFC (возможно, по крайней мере, частично, потому что они сами используют его).
  5. Что-то из того и другого. Больше, чем скорость, C++ и C дают гибкость, переносимость (например, Office для Mac) и большую возможность отличить ваше приложение от других.
4
ответ дан 29 November 2019 в 06:44
поделиться
  1. ASP.NET очень большой, потому что вы управляете оборудованием. Неважно, работают ли ваши пользователи на Linux или Mac. Страница отображается и работает. Когда у вас есть аппаратное обеспечение в качестве параметра, люди опасаются .NET, который (за исключением моно) в значительной степени является эксклюзивным для Windows. (Моно «работает», но менее принято, чем другие подходы к x-платформе).

    .NET также требует загрузки для установки (.NET Framework). У пользователей, устанавливающих что-то, чтобы ИСПОЛЬЗОВАТЬ вашу вещь, есть много проблем, это было небольшим препятствием в XP, но теперь, когда 3.0 / 3.5 встроены в vista / win7, это перестает быть проблемой.

  2. В прошлом - да. В наши дни не так много. (Поправьте меня, если я ошибаюсь, потому что это очень возможно). Я считаю, что VStudio 2010 и Office 2007+ теперь разрабатываются на .NET, поскольку они не требуют максимальной производительности. C / C ++ по-прежнему быстрее для игр, но даже некоторые инди-разработчики создают игры для xbox / pc на XNA (DX для .NET, вроде как)

  3. Нет. .NET не такой медленный, как раньше. Сейчас на .NET создано множество больших больших приложений, потому что он предлагает широкий спектр функций для разработки БОЛЬШИХ приложений БЫСТРЕЕ, ЛУЧШЕ и СТАБИЛЬНО.

  4. .NET не использует MFC.Winforms подключает GDI +, а WPF подключает Windows Presentation Foundation для выполнения вызовов API. .NET - это по большей части переписывание, но некоторые вещи (например, прямой ввод-вывод файлов, обернуты в Windows API)

  5. Программное обеспечение разрабатывается на C / C ++, потому что оно a) быстро b) обычно известный. Но с сегодняшними новыми программистами, я думаю, все меняется. Я также считаю, что новые версии Sony Vegas были переписаны для .NET, но снова могу ошибаться. Ключ, который следует запомнить, заключается в том, что .NET не такой медленный, как раньше, MS усердно работает над проблемой производительности, потому что они хотят продавать .NET для разработки под Windows.

2
ответ дан 29 November 2019 в 06:44
поделиться

Сама Windows не написана на .NET. На это есть веские причины...

1
ответ дан 29 November 2019 в 06:44
поделиться

IMHO прилив наступит тогда, когда IE станет управляемым приложением.

1
ответ дан 29 November 2019 в 06:44
поделиться

.NET становится все более предпочтительным языком для большинства разработчиков Windows, включая автономные настольные приложения.

При этом C / C ++ все еще широко используется в этой сфере. Однако в Windows большая часть «передовой» работы выполняется в .NET или в сочетании .NET с собственным кодом.

Честно говоря, именно в последнем и происходит самая захватывающая работа. Он позволяет вам ощущать «почти металлический» собственный код , когда это необходимо , но при этом иметь всю мощь, предоставляемую новейшей платформой .NET (такой как WPF) для уровня пользовательского интерфейса и не -производительность критических секций. Со временем это становится все более распространенным - например, Visual Studio по-прежнему в значительной степени является собственным кодом (C ++), но весь пользовательский интерфейс был написан с использованием WPF (.NET).

Я занимаюсь только настольной разработкой Windows. Лично я предпочитаю использовать .NET для всего, что я могу - и возвращаться к C / C ++ для очень маленьких (и все более мелких) частей, где .NET не имеет смысла.

9
ответ дан 29 November 2019 в 06:44
поделиться

Большинство крупных Windows-приложений написаны на C++, потому что они были написаны до появления .NET. Было бы бессмысленно тратить 2 года времени на разработку, переписывая Microsoft Office (скажем) на .NET, только чтобы в результате получить то же самое, с чего вы начали два года назад.

Вместо этого большинство крупных программных приложений встраивают .NET в себя медленно. Посмотрите, например, на VSTO - отличный пример совместимости .NET в приложении на C++.

С другой стороны, Microsoft выпустила ряд программных пакетов, которые были написаны полностью (или в основном) на языках .NET. Expression Blend, вероятно, был их первым. Visual Studio 2010 (который в значительной степени основан на WPF) - самый последний.

4
ответ дан 29 November 2019 в 06:44
поделиться

Одна из основных проблем .NET в основных приложениях состоит в том, что независимый поставщик программного обеспечения, производящий их, хотел бы иметь переносимый код. У Photoshop, например, есть очень успешная версия Mac OSX. Конечно, такая переносимость не является целью Microsoft.

Теперь для Интернета это не имеет большого значения. Вы можете использовать .Net на стороне сервера и при этом создавать веб-сайт, совместимый с Safari.

1
ответ дан 29 November 2019 в 06:44
поделиться

Если посмотреть на сайтах вакансий, кажется, что .NET в основном используется для веб-приложений, а для Windows-приложений - не очень?

1) .NET не очень распространен для "мейнстримных" настольных приложений, если считать мейнстримом Photoshop и т.д.. Зачастую это связано с тем, что основные приложения основаны на коде, который был написан задолго до появления .NET, и эти приложения никогда не переписываются, а только развиваются. Они несут в себе огромное количество унаследованного кода от предыдущих версий.

Большинство "основных" приложений Windows разработаны с использованием C/C++?

2a) См. #1.

Является ли .NET слишком медленным и непрямым для решения подобных задач?

2b) Абсолютно нет. .NET может быть как молниеносно быстрым, так и удручающе медленным. Как и с любым другим инструментом, это зависит от того, кто его использует.

Используются ли языки .NET в основном только в простых бизнес-приложениях с бэкендом базы данных? Например, приложения для расчета заработной платы или GPS

3) Расчет заработной платы или GPS вряд ли можно назвать простыми. Бизнес-приложения (LOB) могут быть чрезвычайно сложными, и .NET часто хорошо подходит для них именно потому, что они такие сложные.

Я думал, что в последние несколько лет .NET был единственным средством разработки, поощряемым Microsoft для Windows-приложений, а C/C++ - устаревшие языки?

4) Это неверно. C/C++ не являются устаревшими, они просто другие. Они обеспечивают более точный уровень контроля над машиной в обмен на более длительное и сложное время разработки.

Если C/C++ являются основными инструментами для крупных автономных приложений Windows, то подход (медленного) управляемого кода - это всего лишь шутка? Или доминирование C/C++ объясняется тем, что большинство основных приложений старше .NET? Можете ли вы назвать мне несколько известных названий программ, разработанных с использованием .NET?

5) Доминирование очень сильно передается по наследству. Опять же, .NET не медлит. Основные приложения известны во многом потому, что они существуют дольше, чем .NET, так что нет причин ожидать появления многих, если вообще каких-либо, приложений .NET, столь же известных или популярных, как Word или Photoshop. В будущем, через несколько лет, небезосновательно ожидать появления некоторых известных приложений, основанных на .NET.

Редактировать:

Некоторые люди, похоже, запутались и считают, что где-то в этом ответе утверждается, что .NET так же быстр, как и c++. Единственным аргументом является то, что и .NET, и c++ достаточно быстры для выполнения большинства основных приложений. И любой, кто думает, что время разработки на c++ и .NET одинаково, при прочих равных условиях, не делал много разработки на одном из них :)

.
21
ответ дан 29 November 2019 в 06:44
поделиться

Если вы хотите разрабатывать бизнес-приложения для небольших магазинов, которые не могут позволить себе нанять программистов, и вы хотите предложить максимальные возможности для минимальной работы, напишите их в MS-Access .Серьезный.

https://stackoverflow.com/questions/2437387/is-ms-access-still-the-most-efficient-rad-tool-for-small-scale-custom-apps

1
ответ дан 29 November 2019 в 06:44
поделиться