.NET Framework, C#, ASP.NET 상관관계(Java 와 비교)
.NET 은 Java 의 JVM에 대응하는 것임. 일종의 가상 실행환경. Java 에서도 중간코드인 class 을 만들듯이 .NET 도 중간코드를 만들어낸 것을 .NET 실행기가 동작시킴.
그리고, 이런 중간코드를 만드는 언어가 1개가 아님. Java 역시 오랫동안 Java 만이 JVM 에서 동작했지만, 이젠 Groovy, Scala, Jython 등 몇 개의 언어가 있음. .NET 역시 Visual Basic.NET, C#.NET, Visual C++.NET 같이 여러 언어들이 존재함. 그 중 Visual C#.NET 이 흔히 말하는 C#임.
그리고 Java 에서 일반 프로그래밍을 할 땐 그냥 main 만들고 java 파일들을 만들어서 개발하지만, 웹사이트를 개발할 땐 WAS 연동해서 하기 위해서 Servlet 이나 JSP 등을 이용하고 HttpRequest, HttpResponse 등을 사용하듯이, .NET 에서 웹사이트를 개발하기 위해서 필요한 웹기술들이 ASP.NET 이라는 이름으로 제공됨(ASP.NET은 .NET을 사용하여 최신 웹앱 및 서비스를 빌드하기 위해 Microsoft에서 만든 오픈 소스 웹 프레임워크). C# 이나 Visual Basic.NET 등에서 ASP.NET 에 맞게 개발하면 웹사이트로 동작하는 것. 조심해야 할 것은 ASP 는 ASP.NET 와 다름. 보통 ASP 는 Classic ASP 로 부르기도 하고 그냥 ASP 라고 부르기도 하는데, 구버전이고 ASP.NET 과는 호환되지 않음.
1. .NET Framework
.NET Framework는 예전에 넣고 뺄 수 있었지만 Window10에서는 운영체제의 한 부분으로 들어가 운영체제와 긴밀한 관계가 있어짐.
C#은 MS에서 C,C++,Java의 장점만을 모아서 만든 가장 밀고 있는 언어임. 그러기에 많은 기능(라이브러리)를 제공하려고 해 많은 라이브러리가 존재함.
- 구성 요소
클래스 라이브러리와 CLR (Common Language Runtime)
우리가 기본적으로 다루는 부분 = 클래스 라이브러리
코딩된 내용이 파일로 작성됨. 이 파일을 실행하는 순간 데이터(*.exe)를 CLR로 넘김. exe파일의 소스코드를 OS에 맞게 재컴파일하게 되고 모든 OS에 실행되는 기계화 코드를 만들어냄.
- 클래스 라이브러리
C# 언어 + 클래스 라이브러리 = C# 프로그래밍
MSDN을 참고 msdn.Microsoft.com = MSDN의 소스코드는 표준코드라서 참고하면 좋음.
클래스 라이브러리
BCL(Basic Class Library) : 기본 클래스
Window Form : 윈도우 응용 프로그램 제작을 위한 클래스 라이브러리
ASP.NET : 웹 클래스 라이브러리
ADO.NET : 데이터베이스 클래스 라이브러리
- CLR(Common Language Runtime)
역할
컴파일된 C# 코드를 실행하는 역할
- MSIL, IL(intermediate Language), 중간언어
Visual Studio에서 C#코드를 컴파일한 코드
*.exe, *.dll (어셈블리, assembly)
닷넷 언어인 VB, C# 등의 공통 언어
exe파일 자체가 바로 실행할 수 있는 기계어가 아니라 닷넷 프레임워크가 exe파일을 OS에 맞게 재컴파일해서 실행하는 것임. 또한 닷넷 프레임워크에서 작성한 C#,Visual Basic이든 간에 여기서 작성한 exe 코드들은 언어에 상관없이 서로 호환됨. 이것을 중간언어라 부름.
2. C#
C#은 마이크로소프트사가 2000년 6월에 C와 C++의 강점, 그리고 비주얼 베이직의 편의성을 결합하여 만든 객체지향 프로그래밍 언어다. 이러한 C#은 그 당시 시장에서 가장 주목을 받고 있던 언어인 JAVA를 염두에 두고 만들어졌기 때문에 JAVA의 장점까지 두루 가지고 있다.
C#은 .NET 프레임워크를 기반으로 하여 견고하고 보안성이 높은 프로그램을 제작할 수 있는데, 윈도우용 프로그램은 물론 모바일 프로그램, 클라이언트-서버 프로그램, 데이터베이스 프로그램, 웹 기반 프로그램, 사물인터넷(IoT) 프로그램에 이르기까지 다양한 종류의 어플리케이션을 만드는 데 사용할 수 있다. 다시 말해, 우리가 어떤 프로그램을 구상하더라도 C#으로 모두 만들 수 있다는 뜻이다. 그리고 C#의 개발 목적 자체가 .NET 프레임워크를 구현하기 위함인 만큼 .NET 프레임워크 위에서 C#보다 강력한 언어는 없다고 단언할 수 있다.
- C#의 장점
1. 객체 지향 프로그래밍(OOP)을 지원
C#은 객체 지향 프로그래밍을 지원하므로, 코드의 재사용성이 높고 유지보수가 용이하다. 객체 지향 프로그래밍의 다형성, 캡슐화, 상속 등의 개념을 적용하여 코드의 구조를 더욱 직관적이고 유연하게 만들 수 있다.
2. 간단하고 쉬운 문법
C#의 문법은 C, C++, Java 등의 다른 프로그래밍 언어와 유사하다. 또한, 가독성이 좋고 쉬운 문법을 가지고 있기 때문에, 새로운 개발자가 쉽게 배우고 코드를 작성할 수 있다.
3. 안정성과 보안성이 뛰어나며, 메모리 관리가 자동화
C#은 .NET 프레임워크에서 실행되므로, 안정성과 보안성이 뛰어나며, 메모리 관리가 자동화된다. 또한, 예외 처리를 통해 런타임 오류를 방지할 수 있다.
4. 다양한 플랫폼에서 실행
C# 언어는 .NET 프레임워크를 기반으로 하기 때문에, 다양한 플랫폼에서 실행될 수 있다. 또한, .NET Core를 이용하여 리눅스, 맥 OS 등 다양한 운영 체제에서도 실행할 수 있다.
5. 대규모 응용 프로그램 개발에 적합
C#은 대규모 응용 프로그램 개발에 적합한 언어이다. .NET 프레임워크를 기반으로 하기 때문에, 대규모 프로젝트를 관리하고, 효율적으로 개발할 수 있다. 또한, Visual Studio IDE와 함께 사용하여, 코드 작성부터 디버깅까지 편리하게 개발할 수 있다.
- C# 프로그램 실행 과정
C# 언어 -> 컴파일 -> MSIL -> CLR -> 실행
*.exe 결과물