일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 물이 만들어내는 전 세계의 아름다운 장관
- Coursera
- Wiki
- 동물에 관한 매혹적인 사실
- c#
- 남아프리카
- andrew ng
- 5장
- Never
- 위젯
- Enough
- 8장
- 장관을 이루는 세계 곳곳의 등대 사진
- 아름다운 자연폭포
- Fear
- 아름다운 풍경
- Death
- 전 세계의 잊지 못할 명소들
- 이탈리아
- 6장
- 장관을 이루는 일몰과 일출
- 4장
- 3장
- CLR via C#
- 그루지야
- 제프리 리처
- 오늘일기
- 무료
- ML
- 사진: 세계의 웅대한 산
- Today
- Total
목록CLR via C# (44)
오진이 블로그
목차2부. 타입 설계4장. 타입의 기초네임스페이스와 어셈블리2부. 타입 설계4장. 타입의 기초네임스페이스와 어셈블리네임스페이스는 서로 관련이 있는 타입들을 논리적으로 그룹화하기 위한 수단으로, 개발자들은 특정한 타입을 쉽게 찾을 수 있도록 활용하곤 한다.컴파일러의 입장에서 네임스페이스는 타입의 이름을 길게 확장하면서 더 고유한 이름을 가질 수 있도록 만들어주는 쉬운 방법으로, 몇 개의 단어와 이들 사이를 구분하는 점 기호로 구성되는 이름이다.C#에서 using 지시자를 사용할 것인지의 여부는 전적으로 여러분의 선택에 따르는 문제이며 필요하다면 네임스페이스를 포함하는 전체 타입 이름을 매번 기술해주어도 상관 없다.💡중요 CLR은 네임스페이스에 관하여 아무것도 알지 못한다. 어떤 타입을 사용하려고 할 때, ..
목차2부. 타입 설계4장. 타입의 기초타입 간 캐스팅하기2부. 타입 설계4장. 타입의 기초타입 간 캐스팅하기CLR의 중요한 기능들 중 하나는 타입 안전성이다. 실행 시점에서 CLR은 객체의 정확한 타입이 무엇인지 항상 파악하고 있다.타입 안정성은 CLR에서 다른 어떤 부분보다 중요하고 철저하게 지켜진다.C#의 is와 as 연산자로 캐스팅하기C# 언어에서 캐스팅 연산을 다루는 또 다른 방법은 is 연산자를 사용하는 것이다.C#의 is 연산자는 어떤 객체가 주어진 타입과의 호환성이 있는지 여부를 판정하여, 참 또는 거짓으로 결과를 반환하는 기능이 있다. 이 연산자는 절대 예외를 발생시키지 않는다.CLR의 타입 검사는 보안을 강화하지만, 성능에 관한 일정한 비용이 발생하는데, 비용이 발생하는 원인은 CLR이 ..
목차2부. 타입 설계4장. 타입의 기초2부. 타입 설계4장. 타입의 기초타입들을 다루기 위한 기본적인 사항공용 언어 런타임모든 타입들 간의 최소 공통 분모타입 안정성, 네임스페이스, 어셈블리, 그리고 어떤 객체를 다른 객체 타입으로 캐스팅(Casting) 하는 방법타입, 객체, 스레드, 스택, 그리고 관리되는 힙이 실행 시점에 어떻게 한데 어우러져 시스템을 형상하는지에 대한 설명모든 타입은 System.Object를 상속한다모든 타입들은 궁극적으로 System.Object 타입으로부터 파생되는(Derived) 것으로 하고 있다.CLR은 모든 객체들을 반드시 new 연산자에 의하여 만들도록 하고 있다.new 연산자가 하는 일할당하려는 타입과 별도의 인스턴스가 없는 System.Object 타입을 포함한 그..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리실행 중에 타입에 대한 참조를 어떻게 찾아내는가1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리실행 중에 타입에 대한 참조를 어떻게 찾아내는가참조된 타입을 찾아낼 때 CLR은 다음 세 위치 중 한 곳에서 타입을 찾아내게 된다.같은 파일: 같은 파일 안에 들어있는 타입에 대한 엑세스는 컴파일 시점에 파악이 완료되며 이를 "초기 바인딩"(Early Bound)이라고 이야기하기도 한다. 파일에서 직접 타입을 로드하며, 실행을 계속한다.다른 파일, 같은 어셈블리: 실행 시점에서 찾는 타입이 어셈블리의 대표 매니페스트상의 ModuleRef 테이블에 서술된 파일 안에 찾는 내용이 들어있을 것이라는 전제에서 출발한다. CLR은 어셈블..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리를 개별적으로 배포하기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리를 개별적으로 배포하기어셈블리를 GAC에 설치하면 몇 가지 장점이 있다. GAC를 이용하면 수많은 응용프로그램들이 어셈블리를 공유할 수 있으면서도, 전반적인 메모리 사용량을 크게 감소시킬 수 있다. 더 나아가서 새로운 버전의 어셈블리를 배포하는 일이 단순해지며 이 장 후반에서 설명할 게시자 정책(Publisher Policy)을 이용하여 모든 응용프로그램들이 새 버전의 어셈블리를 사용하도록 할 수 있다. 그리고 어셈블리의 버전별로 Side-by-Side 관리를 지원한다. 하지만 GAC는 관리자 권한 없이 어셈블..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리서명 연기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리서명 연기서명 연기를 이용하면 조직에서 사용하는 공개 키만을 이용하여 어셈블리를 만들 수 있도록 해주고 비밀 키는 요구하지 않는다.서명 연기를 이용한 어셈블리의 개발 과정 요약 정리어셈블리를 개발하는 도중에는 조직의 공개 키만을 포함하는 파일을 얻어 /keyfile과 /delaysign 컴파일러 스위치와 함께 해당 파일을 인자로 지정하여 어셈블리를 컴파일해야 한다. csc /keyfile:MyCompany.PublicKey /delaysign MyAssembly.cs어셈블리를 만들고 난 다음, 다음의 명령 줄을 실행하여 CLR이 해시와 내용 검증을 하지 않고 만들어..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리로 조작을 방지하기1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리강력한 이름의 어셈블리로 조작을 방지하기비밀 키를 이용하여 어셈블리를 서명하고 어셈블리 안에 공개 키와 서명을 추가하여 CLR이 어셈블리가 최초로 만들어진 이후로 훼손되거나 수정되지 않았음을 판별할 수 있다.어셈블리가 GAC에 설치될 때, 시스템은 매니페스트를 포함하는 파일의 내용을 해시 값으로 계산하여 PE 파일 안에 들어있는 RSA 디지털 서명 값(나중에 공개 키로 역서명(Unsigning)을 해보게 될 값이기도 하다)의 해시 값을 비교해본다.만약 같은 값으로 계산되면, 파일의 내용이 외부에서 훼손되지 않았음을 확인할 수 있다.응용..
목차1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리1부. CLR의 기본3장. 공유 어셈블리와 강력한 이름의 어셈블리파일 이름이 전체 경로로 지정되어 있다면, CSC.EXE에서는 지정된 파일을 로드하여 그 안에 들어있는 메타데이터 정보를 사용하여 어셈블리를 빌드할 것이다.경로 없이 파일 이름만 지정하면 CSC.EXE에서는 다음의 순서에 따라 어셈블리를 찾기 위하여 경로 탐색을 하게 될 것이다.작업 중인 디렉터리CSC.EXE 파일과 CLR의 DLL들이 포함되어있는 디렉터리/lib 컴파일러 스위치를 통하여 지정된 모든 디렉터리들LIB 환경 변수에 지정된 모든 디렉터리들컴파일러/CLR이 설치된 디렉터리에 복사되는 어셈블리들은 장치 독립적이다. Uploaded by Notion2Tistory v..