Związek między C #, .NET, ASP, ASP.NET itp. [Zamknięty]

143

Naprawdę nie jestem pewien, jaka jest różnica między C #, C # .NET i tym samym dla ASP i innych języków „.NET”.

Z tego, co rozumiem, .NET jest biblioteką / strukturą ... rzeczy. Myślę, że zasadniczo mają dostęp do danych systemu Windows, takich jak elementy formularzy itp., Ale wydaje się, że nie dotyczy to ASP.NET.

Ponadto widzę ludzi nazywających siebie programistami „.NET”. Czy to oznacza, że ​​biegle posługują się językiem C #, ASP i innymi językami?

Wreszcie, nigdy nie widzę C # bez dołączonego .NET. Czy C # jest tak blisko związany z .NET, że bez niego nie można go używać?

Podsumowując: co dokładnie zapewnia .NET? Jak to się ma do C # i ASP itp.? Co oznacza „programista .NET”? I wreszcie, dlaczego nigdy nie widzisz C # bez .NET?

[Nawiasem mówiąc, zdaję sobie sprawę, że są to liczne pytania, ale myślę, że są one bardzo powiązane (lub przynajmniej takie wrażenie wywarło na mnie przeglądanie Programistów / SO itp.)].

Megan Walker
źródło

Odpowiedzi:

172

Rozumiem twoje zamieszanie, wierz mi, że mam taką samą perspektywę, jeśli chodzi o świat Java! W każdym razie spróbuję rozbić twoje pytania i rozwiązać je jeden po drugim ... a także dodać kilka innych punktów, które, mam nadzieję, pomogą wyjaśnić, co się dzieje:

  1. C # i C # .NET to to samo ... C #
  2. .NET to, jak mówisz, biblioteka kodów, z którymi mogą rozmawiać języki .NET.
  3. Języki .NET są dostępne w różnych wersjach, takich jak: C # .NET, VB.NET, Managed C ++, F #.
  4. Języki .NET kompilują się do CIL ( Common Intermediate Language ), co oznacza, że ​​wszystkie zaczynają „mówić” w tym samym języku, a zatem mogą współpracować.
  5. ASP.NET jest częścią biblioteki .NET używanej do tworzenia stron internetowych. Są też inne podsekcje ASP.NET, takie jak WebForms (stary sposób tworzenia stron internetowych) lub szybko dojrzewająca biblioteka MVC, które również są warte obejrzenia.
  6. Forms (stara technologia) lub nowy WPF (Windows Presentation Foundation) to technologie, których zwykle używasz w .NET do tworzenia tego, co znasz jako tradycyjne aplikacje komputerowe.

Ostatnią rzeczą, na której chciałbym zakończyć, jest różnica między biblioteką a frameworkiem. W ostatnich latach te dwa terminy były używane jako synonimy, jednak tak nie jest. Najprostszym sposobem na rozróżnienie tych dwóch jest:

  • Biblioteka zawiera wiele funkcji, które możesz wybierać, tj. Korzystanie z jednej technologii nie oznacza, że ​​jesteś zamknięty w pozostałych. Oznacza to wolność, jednak będziesz mieć więcej pracy dla siebie.
  • Ramy określają jednak, jak będziesz pracować. Zapewnia przepływ pracy, który na lepsze lub gorsze jest trudny do zmiany. Oznacza to szybki rozwój / prototypowanie, ale jeśli w przyszłości zostaną wprowadzone znaczące zmiany, ich wdrożenie może być niemożliwe (lub bardzo czasochłonne).

Projekt, nad którym pracujesz, będzie zależeć od dokonanego wyboru.

PaulCarroll
źródło
7
+1, ale jeden drobny niggle na # 2 - .NET nie jest „biblioteką kodu”, jest strukturą (którą poprawnie definiujesz jako „przepływ pracy”, który definiuje sposób definiowania i uruchamiania programów). Zbiór standardowych bibliotek opublikowanych przez Microsoft, które są dostępne dla języków .NET, to biblioteka klas podstawowych .NET (BCL).
nlawalker
7
Należy pamiętać, że ASP może również służyć do odwoływania się do klasycznej ASP, a nie ASP.NET.
Brian
11
Nie zgadzam się z punktem 1. C # może być używany bez .NET, więc C # .NET wyraźnie stwierdza, że ​​używasz C # z frameworkiem .NET, podczas gdy C # nie. W praktyce jednak większość ludzi zakłada, że ​​C # jest używany z .NET.
Ian Newson
23

.NET to platforma programistyczna - zawiera wiele bibliotek zawierających szereg funkcji.

C # to język stworzony do użytku z .NET. To nie jedyny język zgodny z .NET - inne opcje to VB.NET, F #, Managed C ++, IronRuby i IronPython. Aby używać funkcji w .NET, piszesz kod w wybranym języku.

ASP.NET to rozszerzenie platformy .NET, które pomaga pisać aplikacje i witryny internetowe. W tym kontekście wiele ogólnych ram jest dostępnych (lub przydatnych, w przypadku np. WinForm).

[Classic] ASP to starsza platforma internetowa, również firmy Microsoft. Pomimo podobnych nazw, ASP i ASP.NET są zupełnie inne pod maską. Istotną różnicą jest to, że jedynymi opcjami językowymi dla ASP są VBScript i JScript. ASP to starsza i nieaktualna technologia, nie kłopocz się nią.

Grant Palin
źródło
14

Po pierwsze .Net jest strukturą kodu bajtowego, podobną do kodu bajtowego Java. .Net jednak jest tylko BYTECODE. Nie ma oficjalnego języka „.Net”. Dwa główne języki docelowe .Net to C # i VB.Net. ASP.Net jest rozszerzeniem dostarczonej biblioteki .Net, aby umożliwić aplikacjom napisanym w języku C # lub VB.Net (lub innym docelowym językiem .Net) działanie jako strona internetowa.

Programiści, którzy twierdzą, że znają .Net, zwykle oznaczają, że znają C # lub VB.Net, lub oba, i mogą łatwo nauczyć się dowolnego, którego nie znają (C # i VB.Net to bardzo podobne języki oprócz ogólnej składni)

Wreszcie, ASP NIE JEST tym samym, co ASP.Net. Mają ogromne różnice

Earlz
źródło
Czy istnieje różnica między aplikacją ac # a aplikacją ac # .net? Pytam, jak upuściłeś .net z c # .net w swojej odpowiedzi. Bardzo pomocna była sekcja dla programistów .Net.
Megan Walker,
5
C # to w rzeczywistości tylko język, niepowiązany z .Net. ALE całe obecne użycie C # odbywa się w .Net, więc praktycznie nie ma różnicy między "C #" i "C # .Net"
Earlz
Jako programista „.NET” twierdzę, że unikam w jak największym stopniu metod / funkcji wyłącznych dla języka, dzięki czemu mogę przeskakiwać we wszystkich językach .NET z jedynie zmianami składni.
Wayne
1
C # język jest tylko językiem. Możesz pisać wszystko w języku C # bez konieczności rozmowy z backendem lub platformą .NET. Dla tych, którzy we mnie wątpią, spójrz na Xamarin C #: sposób na pisanie natywnych aplikacji na iOS i Androida bez korzystania z .NET.
Phil Ryan,
@PhilRyan Za to, co jest warte, Xamarin nie został nawet wymyślony, gdy opublikowano tę odpowiedź.
TylerH
8

Ponieważ tylko jedna odpowiedź wymienia Mono bez wchodzenia w szczegóły:

Chociaż C # jako język został pierwotnie opracowany w Microsoft jako część .NET Framework, został później znormalizowany przez ECMA , co oznacza, że ​​można opracować niezależne, zgodne ze standardami implementacje języka, i rzeczywiście tak było. Najważniejszym z nich jest Mono .

Mono to implementacja standardowego zestawu narzędzi zgodnych ze standardem .NET Framework zgodnego ze standardem ECMA, w tym kompilatora C # i implementacji CLI (Mono Runtime, odpowiednik CLR firmy Microsoft - wirtualnej maszyny .NET Framework). Jego celem jest uruchamianie aplikacji .NET na różnych platformach. Na dzień dzisiejszy obsługuje C # 4.0 i znaczną część funkcji .NET Framework . Oprócz dublowania implementacji Microsoft zespół Mono wprowadza również własne innowacje.

Tak, tak, jest możliwa i wykonalna praca w języku C # bez platformy .NET. Jest jednak mało prawdopodobne, aby Mono mogło konkurować udziałem Microsoft w rynku i pozycją platformy .NET Framework, nie teraz i nie w najbliższej przyszłości.

scrwtp
źródło
Czekałem, aż ktoś wytłumaczy Mono, aby poprawić błędne założenie, że nigdy nie widzisz C # bez powiązania z .NET. +1.
KChaloux
7

Książka Jona Skeeta, C # In Depth, dość zwięźle psuje platformę .NET. Jest często używany w połączeniu z

  1. Języki programowania (C #, VB)
  2. Środowisko wykonawcze (CLR), które uruchamia kod bajtowy, do którego te języki są kompilowane.
  3. Biblioteki frameworkowe (Windows Forms / ASP.NET)
mootinator
źródło
2

pozostałe odpowiedzi dobrze wyjaśniają, na czym polega każda technologia, ale myślę, że brakuje jednego z głównych powodów zamieszania. C # i C # .NET są zasadniczo synonimami, jednak VB.NET i VB są różne, a ASP i ASP.NET są również różne. VB ogólnie odnosi się do VB6 i starszych, a ASP odnosi się do klasycznej ASP. Technologie te zostały radykalnie przeprojektowane wraz z wydaniem platformy .NET i zamiast wymyślać nowe nazwy produktów, które Microsoft dołączył do .NET do prawie wszystkiego, ale C # był również nowy, więc obie nazwy naprawdę odnoszą się do tego samego.

Ryathal
źródło
0

Musisz rozróżniać języki, frameworki, CLR, wzorce i metody programowania.

ASP.Net używa zupełnie innego wzorca programowania do programowania Winforms, chociaż mają one te same podstawy. Możesz programować aplikacje ASP.net i .Net w różnych językach.

Potem jest Mono i język C # używane w kontekście Mono - prawdopodobnie warte trochę badań.

Przeczytaj poniższe linki:
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

Jeremy
źródło
„Możesz programować aplikacje ASP.net i .Net w różnych językach.” Nie jestem pewien, co masz na myśli. Mówisz, że możesz napisać program ASP.net w różnych językach. Ale myślałem, że ASP to język, a .NET to środowisko, które dodajesz.
Megan Walker
ASP.net to framework i postrzegam go jako metodologię programowania. ASP.net może być kodowany w dowolnym języku z tej listy en.wikipedia.org/wiki/List_of_CLI_languages, czego klasa ASP nie może.
Jeremy,
1
ASP nie jest językiem.
Marcie