240 likes | 494 Views
.Net FrameWork. C# Programming 강 성 관. .NET & C#. C# 은 자바처럼 완벽한 객체 지향적 언어이기 때문에 최소한 하나 이상의 클래스가 있어야 한다 . 대소문자를 구분한다 . .NET Platform 이란 마이크로 소프트의 어떤 프로그래밍 언어를 사용하여도 애플리케이션 개발이 가능하도록 디자인 된 환경이라고 해석 . C# 은 그 중 하나의 언어이며 또한 C# 은 프로그래밍 언어 중 유일하게 .NET Platform 을 염두해 두고 만들어진 언어입니다 .
E N D
.Net FrameWork C# Programming 강 성 관
.NET & C# • C#은 자바처럼 완벽한 객체 지향적 언어이기 때문에 최소한 하나 이상의 클래스가 있어야 한다. • 대소문자를 구분한다. • .NET Platform 이란 마이크로 소프트의 어떤 프로그래밍 언어를 사용하여도 애플리케이션 개발이 가능하도록 디자인 된 환경이라고 해석. • C#은 그 중 하나의 언어이며 또한 C#은 프로그래밍 언어 중 유일하게 .NET Platform을 염두해 두고 만들어진 언어입니다. • C#은 마이크로 소프트사의 .NET Platform(닷넷 플랫폼)에서의 애플리케이션 개발을 위해 최근에 만들어진 프로그래밍 언어 • C#은 Visual Basic의 간편함과 C,C++의 강력함, Delphi의 생산성, Java보다 완벽한 객체지향을 결합시켜 프로그래머의 개발시간과 비용을 최대한 단축시켜 최근의 IT발전속도에 발맞춰 갈수 있도록 디자인
.NET • 장치, 서비스, 컴퓨터가 인터넷을 통해 단순히 연결되어 있기 보다는 서로 협동하여 작업할 수 있는 환경 제공 • .NET Platform은 CLR(Common Language Runtime)이라는 라이브러리를 갖고 있으 며 모든 프로그래밍 언어가 CLR을 사용하여 애플리케이션 개발 - 여러 가지 다른 프로그래밍 언어가 한 인 터페이스를 사용한다고 할 수 있다.
윈도우 플랫폼 • 컴퓨터 주변 장치에 대한 접근을 추상화 응용 프로그램 Windows Monitor 컴퓨터 Scanner Camera
.NET 플랫폼 • 인터넷 서비스에 대한 접근을 추상화 응용 프로그램 .NET 프레임 웤 식당 인터넷 Credit Card 인터넷 서비스
.NET 구조 ASP.NET Window Forms Web service Web forms Controls Drawing ASP.NET application services Windows Application Services .NET Framework class Library (FCL) ADO.NET XML Threading IO NET Security Diagnostics Etc. Common Language Runtime (CLR) Memory Management Common Type System Lifecycle Monitoring
CLR • 다양한 언어로 작성된 프로그램에 대한 실행시간 환경 • 언어 간 호환성(Cross-language interoperability) 제공 • CTS(Common Type System) • CLS(common language specification) • CLR에서 실행되는 .NET 애플리케이션을 생성하기 위해서 컴파일러가 준수해야 할 규칙들
CLR 구조 Common Type System (Data Types, etc.) Intermediate Language (IL) Execution Support Security Garbage Collection, stack walk, code manager Class loader and memory layout
다중 언어 통합/지원 • CLR이 다중 언어를 지원 • 통합된 타입 시스템 사용 • 메타데이터를 사용한 언어간의 인터페이스 제공 • 기존 언어의 .NET framework에 통합 • MSIL로 번역하는 컴파일러 생성 • 언어의 데이터 타입 시스템이 CLR의 타입 시스템을 지원하도록 고려 • 현재 C++, C#, VB, Jscript, J#, IL 어셈블러에 대한 컴파일러 작성 중 • APL, COBOL, Component Pascal, Eiffel, Fortran, Haskell, Mercury, ML, Mondrian, Oberon, Perl, Python, RPG, Scheme, Smalltalk 등 20여 개의 언어를 지원 예정
다중 언어 통합 / 지원 C# 코드 Basic 코드 JScript 코드 Fortran 코드 Fortran 컴파일러 … C# 컴파일러 Basic 컴파일러 Jscript 컴파일러 Managed Module Managed Module Managed Module Managed Module CLR 윈도우 호환 운영체제
닷넷 프레임 워크 02 • CLR의 역할 CLR은 닷넷언어로 만들어진 코드를 읽고 해석하여 실행하는 일종의 가상머신(Virtual Machine)이다. Visual Basic .NET, C# 등과 같은 닷넷 언어는 윈도우 운영체제의 네이티브 코드(native code)로 컴파일 되지 않고, 마이크로소프트 중간 언어(MSIL, MicroSoft Intermediate Language)로 컴파일된다. 따라서 닷넷 애플리케이션은 윈도우에서 바로 실행할 수 없는데, 닷넷 프레임워크의 CLR에 있는 JIT(Just In Time) 컴파일러가 MSIL 코드를 네이티브 코드(실행가능 코드)로 변환해 실행 가능하게 해준다.
VB.NET C#.NET C++.NET Source Code VB.NET 컴파일러 VB.NET 컴파일러 VB.NET 컴파일러 비관리 컴포넌트 Managed Code MSIL MSIL MSIL JIT 컴파일러 공용언어 런타임(CLR) 고유코드 운영체제 서비스 닷넷 언어의 컴파일 과정
실행 코드 소스 코드 (C#, VB, C++, …) MSIL (EXE/DLL) 컴파일러 JIT 컴파일러 MSIL의 역할
<컴파일 흐름 간략히 보기> 소스 코드 컴파일 MS IL JIT Compiler CLR 실행 가능 코드 실 행
<소스코드가 컴파일되어서 실행되어지기 까지의 일련의 흐름> 소스 코드 MetaData Engine Compiler Linker EXE/DLL(IL/MetaData) 기본 클래스 라이브러리 Class Loader JIT 컴파일러 CLR Managed Native Code 실 행
다중 언어 통합 / 지원 • Managed Module • CLR의 실행을 요구하는 윈도우 PE(Portable executable) 파일 • IL과 metadata로 구성 • metadata는 모듈에 정의된 타입이나 멤버 등에 대한 상세한 기술을 포함
MSIL / JITers • MSIL • Microsoft intermediate language • .NET 언어의 중간언어 • CLR은 MSIL 코드를 JITer(Just in time compiler)를 사용하여 번역 • MSIL 코드는 처음 실행될 때, 기계 코드로 번역 • .NET이 지원하는 어느 언어를 가지고 프로그래밍을 하던지 똑같은 MSIL을 생성 • 사용된 연산자/제어 구문에 대한 정보와 메모리접근과 예외 처리 등의 정보가 들어있다. • 각종 형(Type)에 대한 정보도 포함되어 있어,플랫폼이 다르더라도 다른 것을 참조하지 않고서도 플랫폼에 맞게 해석되도록 구성
.NET 언어 • CLS(Common Language Specification)를 만족 • 언어간 상호 운용성 제공 • 다른 언어의 컴포넌트 사용 가능 • 다른 언어의 클래스를 재사용 가능 • 다른 언어의 클래스를 확장 가능 • 한 프로젝트 개발에 여러 언어 사용 가능 • 프로젝트는 여러 모듈로 구성 • 각 모듈은 서로 다른 언어로 개발 가능 • .NET이 현재 많은 기능을 COM Component로 구현하고 있는 Window 2000,XP,Vista 등에서 작동하기 때문에 .NET은 COM에 의존적이다.
.NET Framework Class Library • 개발자에게 다음 응용 프로그램을 개발하기 위한 기능 제공 • XML Web 서비스 • Web forms • Window forms • Window console applications • Windows services • Component library
.NET Framework Class Library • CLR의 모든 기능에 대한 인터페이스 제공 • 언어 상호 운용성 제공 • 언어는 단지 이 클래스 라이브러리 인터페이스를 기술하기 위한 구문 제공 • 모든 언어에게 공통된 클래스 라이브러리를 제공하는 것은 모든 언어가 동일한 능력을 갖는다는 것을 의미
개발 환경 • Visual Studio.NET • Windows NT 4, Windows 2000, Windows XP, Window .NET Server Family servers, 앞으로의 윈도우의 모든 상위 버전 • .NET 프레임워크 SDK
C# • C++의 power와 VB의 simplicity의 결합 • C# vs. C++ • Simpler than C++ • GUI, 재사용 컴포넌트 생성 용이 • Safer than C++ • Preprocessor macros, fall-through switch..case, pointers 제약 • Garbage collector 제공 • C++ 코드 포함 가능 (unsafe 키워드 사용)
C# • C# vs. Visual Basic • VB의 기능 확장: Visual Basic. NET • VB보다 clearer more concise syntax • Visual Basic. NET 코드 포함 가능 • C# vs. Java • Java 코드와 매우 유사 • Type safe enumeration, operator overloading 제공 • 현재상태로는 C#이 platform-independent 하지 않음. • C# 과 다른 .NET언어들은 현재 .NET Framework이 설치된 MS Window Platform에서만 실행된다.