제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개
.NET Platform의 역사 DOS (1980) : DOS, Windows3.0 … Win16(1990): Windows 3.0 ~ Windows Me Win32(1995): Windows 95 ~ Windows Vista Windows CE .NET(2002) : Windows Server 2003 Windows Vista Windows CE 5.0
.NET Framework 개요 여러 환경에서 응용 프로그램을 개발하기 위한 플랫폼 현재 Windows 운영체제에서만 실행, 차후 FreeBDS, Linux, Mac., PDA 등에서 실행되는 버전 개발 다양한 응용 프로그램 개발 – Windows 응용 프로그램, 웹 응용프로그램, 웹 서비스 등 모든 종류 가능 언어 독립적 – 다양한 언어 사용 개발 가능
.NET Framework (cont..) .NET Framework 내용 방대한 코드라이브러리로 구성 용도와 목적에 따라 다른 모듈 구성 CTS(Common Type System) – 상호운영성을 위한 데이터의 기본적인 특징 정의, .NET 언어가 되기 위한 규약 CLR(Common Language Runtime) - .NET Framework Application을 실행하는데 필요한 실행 엔진, 응용 프로그램 실행 시 자동 연결•실행
• 이해하기 쉽고 빠른 개발 모델의 제공 – 기존의 Win32 API, MFC 등을 이용한 프로그래밍 보다 쉬운 개발 모델을 제공하며, Visual Studio.NET의 RAD(Rapid Application Development) 개발 도구로서의 기능이 강화되었다. • 자동으로 자원 관리 – 공통 언어 런타임은 프로그램에서 사용되는 자원을 자동으로 추적하여 자원의 누출 등을 방지하고, 사용하지 않은 자원은 가비지 컬렉션(garbage collection) 기능에 의해 자동으로 해제한다. • 형식 안전성 – 불안전하거나 잘못된 형식 캐스팅, 초기화하지 않은 변수 등의 여부를 조사하여 이로 인한 프로그램의 불안전성을 막는다. • 예외에 대한 대비와 디버깅 – 예외가 발생했을 때 예외에 대한 리포팅과 강력한 예외 처리 기능을 지원하며 강력한 디버깅 기능을 지원한다. • 배포, 설치, 삭제에 용이함 - .NET 응용 프로그램은 레지스트리에 의존하는 바가 적으며, 기존에 쉽지 않았던 인스톨, 배포 기능을 파일들을 단순히 복사하듯이 쉽게 관리할 수 있게 되었고, 삭제 기능도 파일들을 삭제하듯이 쉽게 관리하게 되었다.
.NET Framework Class Library CLR(Common Language Runtime) .NET Framework (cont..) .NET Framework 구성 프로그래밍언어 스크립팅 언어 웹 서비스 사용자 인터페이스 ASP.NET ADO.NET(데이터와 XML) .NET Framework Class Library CLR(Common Language Runtime) 메시지 큐잉 COM+ IIS WMI Win32(윈도우 플랫폼)
.NET Framework (cont..) 응용 프로그램 작성 어셈블리(Assembly) C# 언어와 VS.NET의 추가적인 도구 사용 컴파일 – 2단계의 과정을 통한 실행 가능한 형태로 변환 MSIL(MicroSoft Intermediate Language) – 운영체제에 국한되지 않은 중간 언어, 직접 실행 불가능 JIT(Just-In-Time) – MSIL 코드를 원시코드로 컴파일, OS가 실행할 수 있는 응용프로그램의 형태 어셈블리(Assembly) 프로그램의 실행 및 배포 단위 실행파일(.exe), 라이브러리파일(.dll) 포함 메타데이터에 의한 자기서술적 특징 파일복사에 의한 응용 프로그램 배치 가능
.NET Framework (cont..) 관리되는 코드 가비지 컬렉션 링킹 CLR에 의한 관리 기능을 이용하여 실행되는 코드 응용프로그램이 사용하던 메모리를 해제 링킹 응용 프로그램 코드를 여러 개의 소스코드 파일로 나눈 후, 그것을 단일한 어셈블리로 합쳐서 컴파일 하는 것 코드를 여러 파일로 나누어 작업 → 완료시 파일은 코드 단위 작업 효율성 증가
.NET Framework (cont..) 전체 구조 MSIL코드로 컴파일 결과는 어셈블리 형태 C# 응용 프로그램 코드 시스템 런타임 .NET CLR 네이티브 코드 C# 응용 프로그램 코드 컴파일 컴파일 어셈블리 MSIL코드로 컴파일 결과는 어셈블리 형태
.NET Framework (cont..) MSIL(MicroSoft Intermediate Language) 언어마다 다르게 작성 필요할 때마다 단위별로 Compile하여 사용 호환성이 높다 실행시 CPU에 따른 최적화 가능 첫번째 실행새 JIT컴파일 시간이 필요함 Cache사용에 따른 메모리 과다 사용
.NET Environment Visual Studio.NET 차세대 운영환경을 개발하기 위한 도구 .NET Framework가 상위레벨로 존재 → 유연한 구조 CLS(Common Language Specification, 개발언어 인터페이스)는 VB.NET, C#에 맞는 런타임 인터페이스 제공 상위의 언어(C#, VB.NET, C++, Jscript 등)는 동일한 하부구조의 존재로 자신에게 맞는 언어로 프로그래밍 하나의 프로그램을 여러 언어로 작성가능 자유로운 디버깅
.NET Environment (cont..) 편리함, 향상된 생산성 – 동적 도움말, 자동 숨김 기능, 향상된 코드 편집기능 등 새롭고 현대적인 언어 C# 포함 통합개발환경(1) 사용자를 위한 환경설정 시작 페이지는 웹 형식으로 구성 – 웹 브라우저 기본 내장 MSDN 도움말 활용 가능 다양한 기능이 있는 도구 모음
.NET Environment (cont..) VS.NET 초기화면
.NET Environment (cont..) 도구상자 윈도우 컨트롤 웹폼 컨트롤 데이터 컨트롤 자주 사용되는 코드 등록 가능 컨트롤 추가 방법 – 컨트롤을 폼으로 드래그, 도구상자의 컨트롤 더블 클릭
.NET Environment (cont..) XML 데이터 교환의 표준으로 사용 데이터 교환 시 SOAP 이용 XML과 XSD를 간단하게 작성할 수 있도록 지원
.NET Environment (cont..) 서버탐색기 서버 상태 리소스를 한눈에 보임 현재 사용 중인 모듈과 프로세스의 리스트, 서비스 항목을 볼 수 있음
.NET Environment (cont..) 코드 편집기 코딩시 라인별 오류를 알려줌 프로시저별로 코드 내용을 펼치거나 줄여서 볼 수 있음
.NET Environment (cont..) 솔루션 탐색기 솔루션 – 프로젝트보다 큰 범위, 연관된 다수의 프로젝트 포함가능 해당 솔루션을 구성하는 프로젝트들과 각각의 프로젝트를 구성하는 네임스페이스, 클래스, 소스 코드 등을 디렉토리화 하여 관리 가능 팝업 메뉴를 통한 기능 지원
.NET Environment (cont..) 클래스 뷰 클래스에 대한 정보 표시, 편집 시 사용
.NET Environment (cont..) 속성 창 컨트롤의 속성과 이벤트에 대한 설정 기능 기본 내용에서 바뀐 부분은 볼드체로 표시 컨트롤 더블 클릭 시 이벤트 핸들러에 자동으로 바인딩 기능 지원
.NET Environment (cont..) 동적 도움말 현재 개발자가 시행하고 있는 작업 내용을 자동으로 보여줌 버튼에 대한 작업 시 동적으로 버튼에 대한 도움말을 보여줌
.NET Environment (cont..) 작업 목록과 출력 창 프로젝트가 컴파일 될때의 정보를 표시 직접 입력 및 VS.NET에 의한 자동 생성 작업 목록(Task) 출력 창(Output Window)
C# 소개 .NET CLR안에서 실행되는 언어 중 하나 다른 언어들의 장점을 도입하고 문제점을 제거하여 설계 데이터에 특정한 형식이 부여되면 그와 관계없는 형식으로 변환할 수 없음 형식의 안전을 위해 길고 장황한 코드를 작성필요 .NET 코드라이브러리가 제공하는 모든 기능들을 완전하게 활용
C# 소개 (cont..) C#으로 작성할 수 있는 응용 프로그램 Windows 응용 프로그램 Web 응용 프로그램 Web Service 데이터 베이스 엑세스를 위한 응용 프로그램(ADO.NET) 네트워킹 구성 요소, 그래픽 출력, 복잡한 수학 연산 등을 위한 도구
C# 소개 (cont..) C# 프로그램의 구조 객체 지향 언어, 클래스 단위의 프로그램 방식 반드시 하나이상의 메인 메서드를 갖는 클래스가 존재 Main() 메서드
.NET Component 정의 - 바이너리 수준에서 조립하여 사용할 수 있는 소프트 웨어 부품 요건 1. 동적 연결 library 2. 언어간 호환 3. OOP방법론 기존 Component - COM, CORBA
Distribute Component .NET Remoting ASP .NET XML Web Service C/S 양측 다 .NET FrameWork가 설치되어야 함 .NET의 모든 기술 사용가능 수행력이 높다 ASP .NET XML Web Service XML 문서를 이용한 통신 호환성이 높다 Platform에 구애받지 않는다(Client) Method만 사용가능