닷넷 - 해당되는 글 4건
크리에이티브 커먼즈 라이선스
Creative Commons License
네임스페이스의 기본적인 기능은 명칭의 선언 영역을 격리하여 명칭끼리의 충돌을 방지하는 것이지만 클래스를 기능별로 분류하는 역할도 한다. 닷넷의 라이브러리는 워낙 방대하기 때문에 모든 클래스들을 같은 범위에서 정의하면 명칭 충돌뿐만 아니라 명칭 검색 시간도 굉장히 오래 걸릴 것이다. 그래서 클래스들을 기능에 따라 그룹을 분류하여 네임스페이스에 체계적으로 정리해 놓았다. 닷넷의 루트 네임스페이스는 System이며 System안에 기능별로 네임스페이스가 나누어져 있고 이 안에 클래스들이 정의되어 있다. 네임스페이스가 3중, 4중으로 중첩되어 있는 경우도 많다. 닷넷 라이브러리의 주요 네임스페이스는 다음과 같다. 이 네임스페이스 체계는 닷넷이 정의하는 것이므로 언어에 상관없이 동일하다. 

(네임스페이스)System - (설명)타입, 메모리 관리 등 핵심 클래스 
(네임스페이스)System.Collections - (설명)배열, 연결 리스트 등의 컬렉션 클래스 
(네임스페이스)System.IO - (설명)파일 입출력 및 네트워크 관련 클래스 
(네임스페이스)System.Windows.Forms - (설명)윈도우즈 폼과 컨트롤
(네임스페이스)System.Drawing - (설명)GDI+ 
(네임스페이스)System.Web - (설명)웹 개발에 관련된 클래스 
(네임스페이스)System.Xml - (설명)XML 관련 클래스들 
(네임스페이스)System.Security - (설명)보안, 암호, 권한 관련 클래스 
해당 기능을 쓰고 싶다면 기능을 제공하는 클래스들의 소속 네임스페이스에 대한 using 선언을 해야 하며, 그러기 위해서는 어떤 클래스가 어떤 네임스페이스 소속인지를 알아야 한다. 

using System; 
선언은 System 네임스페이스 안에 정의된 클래스들을 사용할 것이므로 준비하라는 지시사항이다. 컴파일러는 이 선언을 읽고 이후 나타나는 명칭들이 using 선언된 네임스페이스에 있는지 검색해 볼 것이다. using선언은 C의 #include와 유사해 보이지만 물리적인 파일을 포함하는 것이 아니라 논리적인 네임스페이스를 참조한다는 점이 다르다. 
using 선언은 꼭 필요한 것들만 선언하는 것이 좋다. 닷넷 라이브러리의 모든 네임스페이스들을 using 선언해 놓으면 명칭들을 자유롭게 쓸 수 있어서 좋기는 하겠지만 컴파일러가 명칭을 찾아야 할 범위가 넓어지므로 컴파일 시간이 오래 걸리고 명칭 충돌 확률이 높아진다.  
저작자 표시
신고

'Study > C#' 카테고리의 다른 글

[C# : 배열의 메서드]  (0) 2010.07.25
[C# : 콘솔의 여러가지 기능]  (0) 2010.07.25
[.NET : 닷넷의 네임스페이스]  (0) 2010.07.25
[.NET : 닷넷의 장점]  (0) 2010.07.25
[.NET : 닷넷의 구성요소]  (0) 2010.07.25
[.NET: 닷넷의 구조]  (0) 2010.07.25
Trackback 0 | Comment 0
크리에이티브 커먼즈 라이선스
Creative Commons License
@장점
- 닷넷의 가장 큰 장점은 플랫폼에 독립적인 응용프로그램을 만들 수 있다는 것이다. 플랫폼 독립성은 중간 코드와 JIT 컴파일러에 의해 구현된다. 닷넷이 필요해진 이유이기도 하다 소프트웨어를 딱 한 번만 작성해서 수정없이 어디에서나 실행된다는 것은 정말 큰 매력이다.
- 언어 상호 운용이 가능하다. CLS를 만족하고 관리코드를 생성해 낼 수 있다면, 어떤 언어로든 닷넷 응용 프로그램을 개발할 수 잇다. 오로지 자바 언어만 인정하는 자바와는 비교되는 부분이다. 언어 상호 운용성은 언어 독립성보다는 한 단계 더 상위의 개념으로서 다른 기종의 언어끼리 교차 호출, 교차 상속, 교차 디버깅 까지도 가능하다.
- 닷넷은 플랫폼 자체가 객체 지향적이며 닷넷 언어들도 모두 완전한 객체 지향언어이다. C수준의 API 함수로만 구동되는 윈도우즈와 비교되는 부분이다. 객체 지향은 절차식에 비해 직관적이고 개발 속도가 빨라 생산성이 높고 배우기도 훨씬 더 쉽다.
- 응용 프로그램을 배포하기 쉽다. 어셈블리가 자신에 대한 정보인 메타 데이터를 내장하고 있으므로 단순히 복사하기만 하면 설치 완료된다. 레지스트리에 의존하는 COM과는 달리 시스템에 부하를 주지 않으며 DLL처럼 덮어쓰기에 의해 이전 프로그램이 영향을 받는 경우도 없다.
- 프로그래밍 환경이 아주 쾌적하다. CLR은 가비지 컬렉션 기능을 제공하며 할당한 객체를 해제 하지 않아도 자동으로 해제한다. C++은 할당 후 반드시 직접 해제해야 하는데 이런 문제로 인해 여러 가지 부작용이 나타나고 메모리 누수로 인해 시스템에도 악영향을 미쳤다. 닷넷에서는 이런 문제가 없어 프로그래밍하기 편리하다. 필요한 만큼 생성해서 쓰고 다 쓴 후 그냥 내버려두면 된다. 또한 비주얼 스튜디오 닷넷 같은 막강한 컴파일러의 지원을 받을 수 있다. .
- 닷넷의 활용범위는 광범위하다. 일반적인 응용프로그램뿐만 아니라 데이터베이스 접속도 할 수 있으며 웹 응용 프로그램 개발도 지원한다. 분산 환경의 서버, 클라이언트도 작성할 수 있고 모바일 응용 프로그램까지도 만들 수 있어 필요한 거의 대부분의 응용 프로그램 제작이 가능하다.
- 방대한 양의 클래스 라이브러리(BCL)가 제공된다. BCL에는 윈폼, 웹폼, ADO, 리모팅 등의 기능을 제공하는 클래스들이 체계적으로 잘 정리되어 있다. 그 뿐만 아니라 XML, 정규식, 이미지 출력, 네트워킹 등 웬만한 기능이 다 포함되어 있어 공짜로 쓸 수 있다. 게다가 BCL은 개별 언어가 아닌 닷넷 플랫폼에 의해 제공되는 것이므로 모든 닷넷 지원 언어들이 이 라이브러리의 서비스를 받을 수 있다. 닷넷 프레임워크는 닷넷 언어들이 공유하는 거대 규모의 라이브러리이다.
저작자 표시
신고

'Study > C#' 카테고리의 다른 글

[C# : 배열의 메서드]  (0) 2010.07.25
[C# : 콘솔의 여러가지 기능]  (0) 2010.07.25
[.NET : 닷넷의 네임스페이스]  (0) 2010.07.25
[.NET : 닷넷의 장점]  (0) 2010.07.25
[.NET : 닷넷의 구성요소]  (0) 2010.07.25
[.NET: 닷넷의 구조]  (0) 2010.07.25
Trackback 0 | Comment 0
크리에이티브 커먼즈 라이선스
Creative Commons License

닷넷은 플랫폼 독립성과 언어 독립성을 확보하기 위해 다음과 같은 여러가지 장치들을 제공한다. 대부분 Common으로 시작하는데 그만큼 닷넷이 공용성과 일반성에 역점을 두었다는 뜻이다.

@CLR(Common Language Runtime)
- 닷넷 실행 엔진을 의미한다. 자바의 가상 머신(JVM)과 개념적으로 동일하다. 런터임이란 프로그램이 실행되기 위한 핵심 모듈들의 집합이다. CLR은 닷넷 프로그램 실행에 필수적인 런타임들의 집합이되 이름이 의미하듯이 모든 언어에 공용으로 사용된다. 어떤 언어로 만든 프로그램이든지 IL을 JIT로 컴파일 한후 CLR과 연결되므로 제작 언어에 상관없이 CLR의 서비스를 받을 수 있다. 닷넷 응용프로그램은 운영체제와 직접 통신하지 않으며 반드시 CLR을 거쳐야 한다. CLR은 물론 플랫폼별로 따로 제공된다. CLR이 호스트 운영체제와의 통신을 책임지므로 응용 프로그램은 운영체제에 대해서 독립적이다. 응용프로그램은 호스트 운영체제는 거의 신경 쓸 필요가 없고 오로지 CLR과의 약속만 잘 지키면 된다.

@CTS(Common Type System)
- CTS는 모든 닷넷 언어들이 공동으로 사용하는 타입 체계를 정의한다. 언어끼리 함수를 호출하려면 인수나 리턴값에 대해 서로의 타입을 알 수 있어야 한다. 예를 들어, C++에서 int형의 값을 넘기면 VB에서는 Integer 타입으로 이 값을 받아 들일 것이다. 이때 int와 Integer는 같은 타입이라는 것을 두 언어가 모두 알고 있어야 하며 물리적인 포맷이 같아야 한다. CTS는 닷넷 지원 언어들이 공동으로 사용하는 타입에 대한 약속이며, IL에서 사용 가능한 타입들의 집합이다. CTS에는 정수, 실수 같은 기본형뿐만 아니라 클래스, 배열 같은 좀 더 복잡한 타입까지 계층이 잘 정의되어 있다.

@CLS(Common Language Specification)
- 각각의 언어들은 다른 언어와 구분되는 아주 고유한 특성들을 가지기도 한다. 예를 들어 명칭의 대소문자를 구분하는가, 다중 상속은 지원하는가, 연산자 오버로딩은 가능한가 등은 언어마다 다르다. 이렇게 언어마다 특성이 각각 다르면 언어 상호 운용이 아주 어려워진다. 그래서 닷넷은 언어들이 지켜야 하는 최소한의 사양을 정의하는데 이를 CLS라 한다. CLS는 닷넷용 언어가 되기 위한 최소한의 규정이다.

@BCL
- 닷넷에는 여러 가지 복잡한 기능을 제공하는 바대한 기본 클래스 라이브러리(BCL)이 탑재되어 있다. 닷넷은 플랫포이면서 라이브러리라고 할 수 있는데 사실 플랫폼은 응용 프로그램 제작을 위한 라이브러리를 포함할 수밖에 없다. 플랫폼이 라이브러리를 제공하지 않으면 응용프로그램 개발자들이 해야 할 일들이 너무 많아지기 때문이다. 마치 윈도우즈가 방대한 Win32 API를 제공하는 것처럼 닷넷도 같은 개념의 BCL을 제공한다. BCL은 마이크로소프트가 미리 작성하여 제공하는 잘 정리된 클래스들의 거대한 집합이다. 제공되는 클래스드릐 규모가 엄청날 뿐만 아니라 객체 지향적이고 문서화도 잘 되어 있어서 잡스러운 처리들의 대부분은 BCL을 호출하기만 하면 된다.

BCL에 포함된 클래스의 목록과 기능
- 기본 타입에 대한 정보 제공
- 배열, 연결 리스트, 큐 등의 컬렉션 클래스
- 그래픽 라이브러리(GDI+)
- 스레드와 동기화 클래스
- 각종 컨트롤
- 파일 입출력
- 네트워크와 인터넷 프로그래밍
- 데이터베이스 액세스
응용 프로그램 제작에 필요한 기능들의 대부분이 BCL에 이미 구현되어 있으므로 공짜로 쓸 수 있는 기능들이 아주 많다. 더구나 BCL은 언어 차원이 아니라 닷넷 플랫폼 차원에서 제공하는 라이브러리이므로 모든 언어들이 공유할 수 있다는 면에서 더 매력적이다.
저작자 표시
신고

'Study > C#' 카테고리의 다른 글

[C# : 배열의 메서드]  (0) 2010.07.25
[C# : 콘솔의 여러가지 기능]  (0) 2010.07.25
[.NET : 닷넷의 네임스페이스]  (0) 2010.07.25
[.NET : 닷넷의 장점]  (0) 2010.07.25
[.NET : 닷넷의 구성요소]  (0) 2010.07.25
[.NET: 닷넷의 구조]  (0) 2010.07.25
Trackback 0 | Comment 0
크리에이티브 커먼즈 라이선스
Creative Commons License
@플랫폼 독립
- 닷넷은 한번 작성한 프로그램을 운영체제에 상관없이 실행할 수 있다. 또한 닷넷 프로그램을 개발하는 언어에도 제약이 없어서 최소한의 규격을 만족하는 모든 언어를 활용할 수 있다. 이것이 가능한 이유는 닷넷 지원 컴파일러들이 IL(Intermediate Language)이라고 하는데 자바의 바이트 코드와 동일한 개념이다. 
물론 IL은 어디까지나 중간 코드일뿐이므로 직접적으로 실행할 수는 없다. IL이 실행되려면 기계가 이해할 수 있는 네이티브 코드로 변환하는 과정을 거쳐야 한다. 중간 코드를 기계어로 컴파일하는 작업은 JIT(Just In Time)컴파일러가 담당하는데 각 플랫폼별로 JIT컴파일러가 따로 제공된다. 그래서 JIT컴파일러만 바꾸면 어떤 플랫폼에서나 실행 가능한 것이다. 
닷넷 프로그램은 IL로만 컴파일되고 실행 직전에 플랫폼별 JIT 컴파일러에 의해 기계어 코드로 변환되어 실행된다. 물론 중간 코드를 생성함으로 인한 불이익도 있다. CPU가 IL을 직접해석하지 못하므로 컴파일 과정을 거쳐야 실행할 수 있는 번거로움이 있고 컴파일 후 실행단계를 거치므로 네이티브 언어보다 성능이 떨어진다. 하지만 인터프리터 방식으로 동작했던 초기의 자바와는 달리 닷넷의 JIT는 컴파일 방식으로 동작하므로 속도가 더 빠르다. 또한 꼭 필요한 부분만 컴파일하고 한번 컴파일한 것은 캐시한 후 두번 컴파일 하지 않도록 되어 있다.

 
저작자 표시
신고

'Study > C#' 카테고리의 다른 글

[C# : 배열의 메서드]  (0) 2010.07.25
[C# : 콘솔의 여러가지 기능]  (0) 2010.07.25
[.NET : 닷넷의 네임스페이스]  (0) 2010.07.25
[.NET : 닷넷의 장점]  (0) 2010.07.25
[.NET : 닷넷의 구성요소]  (0) 2010.07.25
[.NET: 닷넷의 구조]  (0) 2010.07.25
Trackback 0 | Comment 0

강군v's Blog is powered by Daum & tistory

 

티스토리 툴바