Зв'язок між 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, керований C ++, F #.
  4. .NET мови компілюються в CIL ( Common Intermediate Language ), що означає, що всі вони починають "говорити" однією і тією ж мовою і тому можуть взаємодіяти.
  5. ASP.NET - це частина бібліотеки .NET, яка використовується для створення веб-сайтів. Є інші підрозділи ASP.NET, такі як WebForms (старий спосіб створення веб-сторінок) або швидко дозріваюча бібліотека MVC, на які також варто звернути увагу.
  6. Форми (стара технологія) або новий WPF (Windows Presentation Foundation) - це технології, які ви зазвичай використовуєте в .NET для створення того, що ви знаєте як традиційні настільні програми.

Останнє, на чому я хотів би закінчити, - це різниця між бібліотекою та рамкою. В останні роки ці два терміни використовуються як синоніми, однак це не так. Найпростіший спосіб, який я можу подумати розмежувати, це:

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

Проект, над яким ви працюєте, залежатиме від того, який вибір ви зробите.


7
+1, але одна незначна ніггель у # 2 - .NET не є "бібліотекою коду", це рамка (яку ви правильно визначаєте як "робочий процес", який визначає, як ваші програми визначаються та запускаються). Колекція стандартних бібліотек, опублікованих Microsoft, які доступні для мов .NET, - це бібліотека базових класів .NET (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 #, керований C ++, IronRuby та IronPython. Ви пишете код на обраній вами мові для використання функціональності в .NET-рамках.

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. Вони мають величезні відмінності


Так чи є різниця між програмою ac # і програмою ac # .net? Я запитую, як у вашій відповіді ви скинули .net з c # .net. Розділ для розробників .Net був дуже корисним.
Меган Уокер

5
Ну, C # насправді лише мова, не пов'язана з .Net. АЛЕ все поточне використання C # відбувається з .Net, тому практично немає різниці між "C #" та "C # .Net"
Earlz

Як розробник ".NET" я висловлюю претензію, оскільки я максимально уникаю ексклюзивних методів / функцій, тому можу переходити через усі мови .NET із змінами синтаксису.
Уейн

1
C # мова - це просто мова. Ви можете написати що завгодно на C #, не розмовляючи з .NET backkend або фреймворком. Для тих, хто сумнівається в мені, подивіться на Xamarin C #: спосіб написання нативних програм для iOS та Android, не використовуючи жодного .NET.
Філ Райан

@PhilRyan Для чого це варто, Ксамарін навіть не був придуманий, коли ця відповідь була розміщена.
TylerH

8

Оскільки лише одна відповідь згадує Моно, не вдаючись до деталей:

Хоча C # як мова спочатку була розроблена в Microsoft як частина .NET Framework, вона пізніше була стандартизована ECMA , що означає, що незалежна реалізація мови, сумісна зі стандартами, може бути розроблена, і справді вони були. Найвизначніша з них - Моно .

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

Отже, так, працювати в C # без .NET можна і доцільно. Однак навряд чи Mono зможе конкурувати за часткою ринку та позицією .NET Framework не зараз, а не найближчим часом.


Чекав, коли хтось пояснить Mono, щоб виправити помилкове припущення, що ви ніколи не побачите C #, не з'єднавшись з .NET. +1.
KChaloux

7

Книга Джона Скіта, C # У глибині розбивається .NET вниз досить лаконічно. Він часто використовується у зв'язку з

  1. Мови програмування (C #, VB)
  2. Складається час виконання (CLR), який виконує байтовий код цих мов.
  3. Рамкові бібліотеки (Windows Forms / ASP.NET)

2

інші відповіді добре допомагають пояснити, що стосується кожної технології, але я думаю, що вони пропускають одну з головних причин плутанини. C # і C # .NET по суті є синонімами, проте VB.NET і VB різні, а ASP і ASP.NET також різні. VB взагалі відноситься до VB6 і старших, а ASP відноситься до класичного ASP. Ці технології були радикально перероблені з випуском рамки .NET, а не придумували нові назви продуктів, які Microsoft додала .NET майже до всього, але C # також був новим, тому обидва назви дійсно відносяться до одного і того ж.


0

Ви повинні розрізняти мови, рамки, CLR, шаблони та методи програмування.

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

Тоді є Mono і мова C #, що використовується в контексті Mono - можливо, варто провести деякі дослідження.

Прочитайте ці посилання:
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 клас не може.
Джеремі

1
ASP - це не мова.
Марсі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.