Связь между C #, .NET, ASP, ASP.NET и т. Д. [Закрыто]

143

Мне действительно неясно, в чем разница между C #, C # .NET и тем же для ASP и других языков .NET.

Насколько я понимаю, .NET - это библиотека / фреймворк ... вещей. Я думаю, что они, по сути, имеют доступ к данным Windows, таким как элементы формы и т. Д., Но, похоже, это не относится к ASP.NET.

Кроме того, я вижу людей, называющих себя разработчиками .NET. Значит ли это, что они свободно говорят на C #, ASP и других языках?

Наконец, я никогда не вижу C # без .NET. Связан ли C # так близко к .NET, чтобы без него быть непригодным для использования?

В итоге: что конкретно предоставляет .NET? Как это относится к C #, ASP и т. Д.? Что означает «разработчик .NET»? И, наконец, почему вы никогда не видите C # без .NET?

[Кроме того, я понимаю, что это несколько вопросов, но я думаю, что они очень взаимосвязаны (или, по крайней мере, такое впечатление, которое дало мне просмотр Программистов / SO и т. Д.)].

Меган Уокер
источник

Ответы:

172

Я понимаю ваше замешательство, поверьте мне, у меня такая же точка зрения, когда речь заходит о мире Java! В любом случае, я постараюсь разбить ваши вопросы и решить их один за другим ... а также добавлю некоторые другие моменты, которые, надеюсь, помогут прояснить, что происходит:

  1. C # и C # .NET - это одно и то же ... C #
  2. Как вы говорите, .NET - это библиотека кода, с которой могут общаться языки .NET.
  3. Языки .NET бывают разных типов, такие как: C # .NET, VB.NET, Managed C ++, F #.
  4. Языки .NET компилируются в CIL ( Common Intermediate Language ), что означает, что все они начинают «говорить» на одном языке и поэтому могут взаимодействовать.
  5. ASP.NET - это часть библиотеки .NET, используемая для создания веб-сайтов. Существуют и другие подразделы ASP.NET, такие как WebForms (старый способ создания веб-страниц) или быстро развивающаяся библиотека MVC, на которую тоже стоит обратить внимание.
  6. Формы (старая технология) или новый WPF (Windows Presentation Foundation) - это технологии, которые вы обычно используете в .NET для создания того, что вы знаете как традиционные настольные приложения.

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

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

Проект, над которым вы работаете, будет зависеть от того, какой выбор вы сделаете.

PaulCarroll
источник
7
+1, но один минус на # 2 - .NET - это не «библиотека кода», это фреймворк (который вы правильно определяете как «рабочий процесс», который определяет, как ваши программы определяются и запускаются). Совокупность стандартных библиотек, опубликованных Microsoft, доступных для языков .NET, - это библиотека .NET Base Class Library (BCL).
Nlawalker
7
Обратите внимание, что ASP также может использоваться для обозначения классического ASP, а не ASP.NET.
Брайан
11
Я не согласен с пунктом 1. C # может использоваться без .NET, поэтому C # .NET прямо заявляет, что вы используете C # с платформой .NET, а C # - нет. На практике большинство людей предполагают, что C # используется с .NET.
Ян Ньюсон
23

.NET - это фреймворк для разработки приложений - он содержит множество библиотек, содержащих широкий спектр функций.

C # - это язык, созданный для использования с .NET. Это не единственный .NET-совместимый язык - другие варианты включают VB.NET, F #, Managed C ++, IronRuby и IronPython. Вы пишете код на языке по вашему выбору, чтобы использовать функциональные возможности в .NET Framework.

ASP.NET - это расширение .NET, которое помогает вам писать веб-приложения и веб-сайты. Большая часть общей структуры доступна (или полезна, например, в случае WinForms) в этом контексте.

[Классический] ASP - это старая веб-платформа, также от Microsoft. Несмотря на схожие названия, ASP и ASP.NET довольно сильно отличаются друг от друга. Одно заметное отличие состоит в том, что вашими единственными языковыми опциями для ASP являются VBScript и JScript. ASP - старая и устаревшая технология, не беспокойтесь о ней.

Грант Пэйлин
источник
14

Во-первых, .Net - это структура байт-кода, похожая на байт-код Java. .Net, однако, является только BYTECODE. Официального языка ".Net" не существует. Два основных языка для .Net - это C # и VB.Net. ASP.Net является расширением предоставляемой библиотеки .Net, позволяющей приложениям, написанным на C # или VB.Net (или других целевых языках .Net), работать в качестве веб-сайта.

Разработчики, которые говорят, что знают .Net, обычно подразумевают, что они знают C # или VB.Net, или оба, и могут легко выучить тот, который они не знают (C # и VB.Net - чрезвычайно похожие языки, кроме общего синтаксиса)

Наконец, ASP - это не то же самое, что ASP.Net. У них огромные различия

Earlz
источник
Так есть ли разница между приложением ac # и приложением ac # .net? Я спрашиваю, как вы сбросили .net из c # .net в своем ответе. Раздел разработчиков .Net был очень полезным, хотя.
Меган Уокер
5
Ну, на самом деле C # - это всего лишь язык, не связанный с .Net. НО все текущее использование C # с .Net, поэтому практически нет разницы между "C #" и "C # .Net"
Earlz
Как разработчик ".NET", я заявляю об этом, потому что максимально избегаю языковых исключительных методов / функций, поэтому могу переходить на все языки .NET только с изменениями синтаксиса.
Уэйн
1
C # язык это просто язык. Вы можете написать что-нибудь на C #, не обращаясь к бэкэнду .NET или фреймворку. Для тех, кто сомневается во мне, посмотрите на Xamarin C #: способ написания нативных приложений для iOS и Android без использования .NET.
Фил Райан
@PhilRyan Во всяком случае, Xamarin даже не был изобретен, когда этот ответ был опубликован.
TylerH
8

Поскольку только один ответ упоминает Mono, не вдаваясь в детали:

Хотя язык C # изначально разрабатывался в Microsoft как часть .NET Framework, позднее он был стандартизирован ECMA , что означало, что независимые, совместимые со стандартами реализации языка могут быть разработаны, и они действительно были. Самым выдающимся из них является Mono .

Mono - это реализация с открытым исходным кодом набора инструментов, совместимого со стандартом ECMA, совместимого с .NET Framework, включая компилятор C # и реализацию CLI (Mono Runtime, эквивалент CLR от Microsoft - виртуальная машина .NET Framework). Его цель - запускать кроссплатформенные приложения .NET. На сегодняшний день он поддерживает C # 4.0 и существенную часть функций .NET Framework . В дополнение к отражению реализации Microsoft, команда Mono также делает собственные инновации.

Так что да, возможно и возможно работать в C # без .NET. Однако маловероятно, что Mono сможет конкурировать с рыночной долей Microsoft и позицией .NET Framework не сейчас и не в ближайшем будущем.

scrwtp
источник
Ожидал, чтобы кто-то объяснил Mono, чтобы исправить ошибочное предположение, что вы никогда не увидите C # без сопряжения с .NET. +1.
KChaloux
7

Книга Джона Скита «C # In Depth» довольно лаконично разбивает .NET. Это часто используется в связи с

  1. Языки программирования (C #, VB)
  2. Среда выполнения (CLR), которая выполняет байт-код, в который скомпилированы эти языки.
  3. Библиотеки фреймворков (Windows Forms / ASP.NET)
mootinator
источник
2

Остальные ответы хорошо объясняют, что такое каждая технология, но я думаю, что они упускают одну из основных причин путаницы. C # и C # .NET по сути являются синонимами, однако VB.NET и VB различны, а ASP и ASP.NET также различны. VB обычно относится к VB6 и старше, а ASP относится к классическому ASP. Эти технологии были радикально переработаны с выпуском платформы .NET, и вместо того, чтобы придумывать новые названия для продуктов, Microsoft добавила .NET практически ко всему, но C # также был новым, поэтому оба названия действительно относятся к одному и тому же.

Ryathal
источник
0

Вы должны различать языки, рамки, CLR, шаблоны и методы программирования.

ASP.Net использует совершенно другой шаблон программирования для разработки Winforms, хотя они имеют одну и ту же основу. Вы можете программировать приложения ASP.net и .Net на разных языках.

Кроме того, есть моно и язык C #, используемый в контексте моно - вероятно, заслуживающий некоторого исследования.

Прочитайте эти ссылки:
http://en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/File: Overview_of_the_Common_Language_Infrastructure.svg

Джереми
источник
«Вы можете программировать приложения ASP.net и .Net на разных языках». Я не уверен, что ты имеешь в виду под этим. Вы говорите, что можете написать программу ASP.net на разных языках. Но я думал, что ASP - это язык, а .NET - это фреймворк, в который вы добавляете.
Меган Уокер,
ASP.net - это фреймворк, и я вижу его как методологию программирования. ASP.net может быть закодирован на любом языке из этого списка en.wikipedia.org/wiki/List_of_CLI_languages, тогда как ASP Class не может.
Джереми
1
ASP это не язык.
Марси