.NET
Colin Fahey
1. .NET의 정의
다음과 같은 수집 ".NET"이라는 용어를 나타냅니다 기술 :
(1) Framework Class Library (FCL)
(2) Intermediate Language (IL)
(3) Common Language Runtime (CLR)
1.1 Framework Class Library (FCL)
the (FCL)는 광범위한 일련의 클래스를 사용하여 Framework Class Library 지원 :
* 컨테이너를 (Array, String, List, ...)
* 멀티 스레딩 (스레드, 스레드 풀)
* 네트워킹 (소켓, 프로토콜, 클라이언트, 서버)
* 파일 작업
* 데이터 스트림을
* 구문 분석 (정규 표현식 XML 처리)
* 수학 작전
* 예외 처리
* 언어 특징 (반사, 스택 추적, 동적 코드)
많은 다른 플랫폼을 구현 Framework Class Library (FCL) the ( Windows, Linux, MacOS, ... )합니다.
따라서, 하나의 프로그램을 사용하여 개발하지 않고 Framework Class Library (FCL) 수있습니다 대상 플랫폼의 차이점에 대한 지식이 중요합니다.
the (FCL)에 유용한 모델을 Framework Class Library 근본적인 개념이 컴퓨터 과학 (예 : "스레드, 소켓, 스트림" 등)를합니다.
어떤 의미에서 각각의 지원되는 운영 체제는 Framework Class Library (FCL) 현대, 높은 - 수준, 일관성있는 프로그래밍 인터페이스.
Framework Class Library the (FCL)는 하나의 가장 고급, 종합적이고 일률적으로 - 설계, 음 - 문서 컬렉션을 프로그래머 함수 및 데이터 형식을 사용할 수있습니다.
불행히도, 다음과 같은 멀티미디어 측면의 일부가 아닌 Framework Class Library (FCL) : 오디오 녹음, 오디오 재생, 비디오 녹음, 동영상 재생, 3 차원 렌더링, 조이스틱 입력 장치를 제어 ( CD/DVD, ... ) 등
Microsoft는 그들의 Windows을위한 도서관 .NET 버전의 운영 체제를 DirectX합니다.
C# 포장지에 해당하는 이미 OpenGL, OpenAL, GLUT, SDL 등 편리하지만, 이것은 매우으로 같은 멀티미디어 기능이 포함되어있는 것으로 판단 (FCL) 및 Framework Class Library의 핵심에 포함 "- 타임" 라이브러리를 엔드 - "사용자를 실행합니다."
의 문제 중 하나를 사용하는 프로그램을 개발하기위한 일련의 특정 도서관은 최종 - 사용자가 선택한 라이브러리에 대한 지원을 필요로합니다.
편리를 다운로드하고 설치하지 않은 경우 필요한 라이브러리, 최종 - 사용자가 필요로하는 프로그램을 사용하지 않는 이들 라이브러리를 선택하십시오.
최종 - 사용자 수도있습니다 꺼리는을 기다리는 온라인 위치에서 라이브러리를 다운로드합니다.
프로그램 개발을 필요로 할 경우에는 엔드 - 사용자를 찾아, 확보하고, 라이브러리를 설치, 모든 특정 프로그램의 지원을하지 않고, 다음 엔드 - 사용자가이 프로그램을 사용하지 않는를 선택합니다.
예를 들어, 많은 오픈 - 소스 프로젝트를 필요로 엔드 - 사용자가 검색, 다운로드 및 설치, 다양한 라이브러리를 다른 오픈 - 소스 프로젝트 (예 : openssl, zlib, libpng, libjpg, glut, 어떤 것은 시간 ...), - 소비, 복잡하게, 좌절감, 그리고 수도를 검색하는 결과를 엔드 - 사용자가 다른 프로그램이나 제품을 선택합니다.
the "Windows Update" 서비스를 확실히 도움이 1.1를 배포하는 버전을 실행 - 타임 라이브러리를 .NET 사용자가 Windows합니다.
이들을 실행 - 타임 라이브러리는 운영 체제에 포함되어있는 Windows XP합니다.
따라서, Windows 프로그램을 만들 것을 필요로 .NET 1.1 전적으로 합리적인합니다.
또한, Microsoft's의 실행 - 타임 라이브러리를 자유롭게 구현의 .NET Framework Class Library (FCL) 재배 포할 수있습니다, 그래서 이러한 라이브러리를 종료하는 개발자의 경우 공급 장치 - 사용자가 이미 라이브러리를하지합니다.
.NET 3.0 the Windows Vista 운영 체제를 실행 - 시간의 24 라이브러리 (.NET Framework Class Libraries의 조합과 같은 여러 새로운 라이브러리를 "Windows Presentation Foundation" (WPF)).
따라서, .NET 3.0 프로그램을 전개하고 .NET 2.0 설치 프로그램을 필요로하지 않습니다 Windows Vista - 시간 .NET 라이브러리를 실행합니다.
1.2 Intermediate Language (IL)
Intermediate Language the (IL)는 작은 세트를 간단하고 프로세서 - 독립적인, 운영 - 시스템 - 독립적인 지침을 완벽하게 표현하는 데이터 구조와 기능을 충분히 다양한 하이 - 레벨 프로그래밍 언어로 ( C++, C#, F#, Visual Basic, Java, Ocaml, ... )합니다.
하이 - 레벨 언어로 작성된 소스 코드를 컴파일해서 대응하는 "Intermediate Language" 양식을 수있습니다.
코드를 "Intermediate Language" 양식을 다른 코드를 쉽게 "Intermediate Language" 양식을 결합하여 사용할 수있습니다.
컴퓨터 프로그램 (또한 이름이 "소프트웨어)는" 여러 개의 다른 높이로 작성된 소스 코드가 포함될 수있습니다 - 레벨 언어 (예를 들면, C#, C++, 그리고 Visual Basic).
모든 소스 코드를 컴파일 (변환)을 결합하여 쉽게 "Intermediate Language" 형식을 사용하여 다른 컴파일된 코드를합니다.
프로그램을 컴퓨터에 "Intermediate Language" 양식은 보통으로 변환 - 구체적인 지침을 (예를 들어, CPU 지침을) 매우 직전에 집행 (예를 들면, IL로 변환하는 CPU 지침을 "Just-In-Time" (JIT)).
그러나 프로그램을 실행할 수도있습니다 Virtual Machine (VM)의 맥락에서 해석하는 Intermediate Language (IL) 지침을하도록 설계되었습니다.
각종 하이 - 레벨 언어로 작성된 코드 ( C#, F#, Ocaml, C++, Visual Basic, ... ), 컴파일을 Intermediate Language 수있습니다 (IL) 양식을 사용하여 모든 지원되는 플랫폼에 적합한 컴파일러를 ( Windows, Linux, MacOS X, ... ), 그리고 그 결과 파일, 임베디드 Intermediate Language (IL) 코드를 실행시킬 수있다는 플랫폼 - 독립적이고 모든 플랫폼상의 문제가있는 것 .NET Common Language Runtime (CLR)의 구현합니다.
the Intermediate Language (IL)에서 생성된 코드를 근본적으로 독립적인 플랫폼의 컴파일러는 컴파일러가 실행되는 것입니다.
1.3 Common Language Runtime (CLR)
the (CLR)은 Common Language Runtime 메커니즘에 대한 책임을 실행하는 코드를 Intermediate Language (IL) 양식을 제출합니다.
the Common Language Runtime (CLR) 다양한 서비스를 제공합니다.
the Intermediate Language (IL)의 코드를 변환할 수있습니다 Common Language Runtime (CLR) 지침을 기본으로하는 플랫폼 (예를 들면, CPU 지침).
이 플랫폼의 전환에서 Intermediate Language (IL) - 구체적인 정보 (예를 들면, CPU - 구체적인 것)의 지침을 실행을 사전에 문제가 발생할 수있습니다 (즉, "Ahead-Of-Time" (AOT) 전환), 또는 문제가 발생할 수있습니다 점차적으로이 프로그램을 실행 (예를 들어, "Just-In-Time" (JIT) 전환) 합니다.
the (JIT) 전환을 사용 Just-In-Time 프로그램을 실행에 대한 통계를 동적으로 변화하는 변환 코드를 최적화합니다 (예 : 식별 자주 - 사용하는 루프와 점포, 그리고 그들을 최적화 관측에 따르면 동작 (이것은 이미 그 자체 현재의 데이터 및 이벤트에 따라 달라집니다)).
할당된 메모리 the Common Language Runtime (CLR)을 대신하여 관리하는 프로그램을합니다.
이에 따라 프로그램을 활용할 수 CLR 할당된 메모리에 액세스 실패하지 않습니다 같은 메모리에 대한 참조를 지속하는 동안, 그리고 있도록 메모리를 할당이 취소되었습니다, 그리고 미래를 다시 한 번 메모리는 할당 후 프로그램을 이용할 수 disposes의 모든 할당에 대한 참조를 그러한 합니다.
이 프로그램을 감지하면 the Common Language Runtime (CLR)에 대한 참조를 더 이상은 메모리 할당, 그리고 메모리 할당 해제에 대한 것으로 표시합니다.
the Common Language Runtime (CLR) 중 하나는 다양한 "쓰레기 수집" 알고리즘을 사용합니다 (예 : "mark-and-sweep")를 확인하고 메모리 블록을 되찾을 프로그램을 더 이상 액세스할 수있습니다.
the Common Language Runtime (CLR) 예외 프로그램을 처리합니다.
the Common Language Runtime (CLR)의 보안 정책을 실시하고있습니다.
the "P/Invoke" 메커니즘을 사용하여로드 플랫폼 Common Language Runtime (CLR) - 구체적인 라이브러리 및 호출 (호출) 기능을 그 라이브러리를합니다.
2. Microsoft 의해 구현을 .NET ( FCL, IL, CLR )
2.1 소개
.NET 패러다임에 의해 구현되었습니다 ( FCL, IL, CLR ) the Microsoft합니다.
최신 버전을 "3.0"이 릴리스에 2006.10합니다.
.NET 3.0는 .NET 2.0 Framework Class Libraries 그리고 몇 개의 새 라이브러리로 구성되어있습니다와 같은 "Windows Presentation Foundation" (WPF)와 연관된 "Silverlight" (이전의 WPF/E, 이전 Sparkle, ...) 브라우저 플러그인에 대한 Firefox 및 Internet Explorer합니다.
두 개의 서로 다른 분열을 Microsoft the .NET 2.0 소프트웨어 패키지를 준다 :
(1) .NET Framework Version 2.0 Redistributable Package
이 재배포 가능 패키지가 필요로 엔드 - 사용자가 프로그램을 실행할 .NET 패러다임을 구축합니다. 이 패키지를 설치하기 전에 반드시에 의해 설치하여 사용하는 개발자들이 아래에 언급된 .NET Software Development Kit (SDK)합니다.
(2) .NET Framework Version 2.0 Software Development Kit
(SDK)의 소프트웨어 개발 키트가 필요합니다 C# 소스 코드를 컴파일하여 개발자가 프로그램 파일 Intermediate Language (IL)합니다.
이 패키지에 포함된 다양한 개발 도구와 설명서합니다.
2.2 .NET Framework Version 2.0 Redistributable Package
이 재배포 가능 패키지가 필요로 엔드 - 사용자가 프로그램을 실행할 .NET 패러다임을 구축합니다.
이 패키지를 설치하기 전에 반드시에 의해 설치하여 사용하는 개발자들이 아래에 언급된 .NET Software Development Kit (SDK)합니다.
다음과 같은 인터넷 페이지는 주요 .NET을 다운로드 페이지 :
이 링크를 ".NET Framework Version 2.0 Redistributable Package"라는 이름의 섹션 3 개의 하드웨어 플랫폼 : "Download x86 version", "Download x64 version", "Download IA64 version"합니다.
예를 들어, 다음 링크 "Download x86 version", 리드를 페이지 제목 "Microsoft .NET Framework Version 2.0 Redistributable Package (x86)"
(파일 이름 : dotnetfx.exe; 버전 : RC1; 게시 날짜 : 3/22/2006; 언어 : 영어, 다운로드 크기 : 22.4 MB)
로컬에 캐시된 버전 (전용 참조; 잠재적으로 사용하지 않음) :
(파일 이름은 원본 파일 이름이 변경되었습니다 "dotnetfx.exe"에서 여기로 혼란을 피하기 1.1 설치 프로그램의 버전 이름을 "dotnetfx.exe"도합니다.)
2.3 .NET Framework Version 2.0 Software Development Kit (SDK)
(SDK)의 소프트웨어 개발 키트가 필요합니다 C# 소스 코드를 컴파일하여 개발자가 프로그램 파일 Intermediate Language (IL)합니다.
이 패키지에 포함된 다양한 개발 도구와 설명서합니다.
다음과 같은 인터넷 페이지는 주요 .NET을 다운로드 페이지 :
이 링크를 ".NET Framework Version 2.0 Software Development Kit"라는 이름의 섹션 3 개의 하드웨어 플랫폼 : "Download x86 version", "Download x64 version", "Download IA64 version"합니다.
예를 들어, 다음 링크 "Download x86 version", 리드를 페이지 제목 ".NET Framework 2.0 Software Development Kit (SDK) (x86)"
(파일 이름 : setup.exe; 버전 : 2.0; 게시 날짜 : 11/7/2005; 언어 : 영어, 다운로드 크기 : 354.0 MB)
로컬에 캐시된 버전 (전용 참조; 잠재적으로 사용하지 않음) :
(파일 이름이 변경되었습니다 "setup.exe" 여기에서 기존 파일 이름을 혼동을 피하기 위하여 그것을 다른 모든 설치 파일의 이름 "setup.exe"합니다.)
3. Microsoft Visual C# : an (IDE) 프로그램을 Integrated Development Environment
3.1 소개
an (IDE) 프로그램을 이용하면 Integrated Development Environment 개발자가 소스 코드를 수정 및 실행 다양한 도구 (예 : 컴파일러, 디버거, ...) 시간의 문맥을 하나의 통합 프로그램을 작성하여 유용한 시각 표시 및 제어합니다.
"Microsoft Visual C# 2005 Express Edition"가 아니오 - 비용 (아니오 지불 필수) IDE에서 다운로드할 수있습니다 Microsoft합니다.
이외 - 데이터베이스를 개발,이 지역 구별하는 것은 거의 불가능하다 - 비용 제품을 소매 국가, "Microsoft Visual C# 2005"합니다.
나는 둘 다 자주 사용 제품, 전문적이며 recreationally, 그리고 나는 어떤 실질적인 차이는 아직 발견하는 제품.
3.2 공식적인 링크가
인터넷 사이트의 메인 페이지 :
이 페이지에 관한 "Visual C# Express Edition" :
"Download Now" 버튼을 클릭하여이 페이지의 오른쪽에있는 다운로드 옵션을 선택합니다.
(한 방법은 설치 프로그램을 시작 Microsoft에서 어떤 파일을 다운로드하는 동안은 각각의 설치를합니다.
두 번째 방법은 이미지를 다운로드 전체 CD-ROM "ISO" 수있는 미래의 오프라인 설치합니다.
the ISO 이미지, "VCS.iso" (451,837,952 바이트; CRC 55884F2C)를 32 - 비트 x86 영어, "Nero 7 Ultra"를 사용하여 CD-ROM을 레코딩할 수있습니다, 예를 들면. )
4. Mono Project을 구현 .NET ( FCL, IL, CLR )
4.1 소개
참여자에 의해 구현되었습니다 ( FCL, IL, CLR ) the .NET 패러다임으로 알려진이 그룹에서 Mono Project합니다.
4.2 공식적인 링크가
프로젝트 사이트 :
소프트웨어 다운로드 페이지 :
4.3 로컬로 캐시된 버전
로컬에 캐시된 버전의 설치 프로그램 (전용 참조; 잠재적으로 사용하지 않음) :
4.4 .NET 2.0 개발에 Mono
the "mcs" 컴파일러, 그리고 설명서, 지난해 11 월 2006, 대부분 C# 1.0과 관련된 FCL 1.1합니다.
그러나, C# 2.0 코드를 컴파일 수있습니다 "mcs" 컴파일러는 포함되어 있지 않습니다 무상표 또는 일반 - 기반 기능, 그러나 API을 제한하는 1.0합니다.
이렇게 전체 C# 2.0 개발, FCL 2.0 도서관, "gmcs" 컴파일러를 사용합니다.
페이지에 다음과 같은 내용의 Mono 사이트 :
5. SharpDevelop : 오픈 - 소스 (IDE) 프로그램을 Integrated Development Environment
5.1 소개
an (IDE) 프로그램을 통해 Integrated Development Environment 개발자가 소스 코드를 수정 및 실행 다양한 도구 (예 : 컴파일러, 디버거, ...) 시간의 문맥을 하나의 통합 프로그램을 작성하여 유용한 시각 표시 및 제어합니다.
SharpDevelop이 우수한를 엽니다 프로그램을 IDE - 소스 C# / .NET 개발합니다.
IDE 밀접하게 Microsoft Visual C# IDE이 유사합니다, 그리고, 일부를 존중, Microsoft 상품을 향해 SharpDevelop IDE이 개선합니다.
그러나, Microsoft Visual C#가의 일부 기능 (예 : 디버깅)을 SharpDevelop 프로그램이없는 (당시의 쓰기).
5.2 공식적인 링크가
간단한 인터넷 사이트를 메인 페이지 :
이 페이지에 관한 "The Open Source Development Environment for .NET" :
다운로드 페이지로 갖고있는 2.0의 버전에 대한 자세한 내용을 1.1 및 SharpDevelop :
5.3 로컬로 캐시된 버전
로컬에 캐시된 버전의 설치 프로그램 (전용 참조; 잠재적으로 사용하지 않음) :
6. 유용한 C# / .NET / IL 도구를
6.1 SciTech Software ".NET Memory Profiler"
이 프로 파일러 메모리 할당을 보여줍니다 및 기타 리소스를 할당, 그것을 실행하는 동안 컴파일 .NET 프로그램, 또는 조립을합니다.
실제 - 시간 그래프을 사용하면 사람이 볼 수에 대한 자세한, 어떻게 행동의 프로그램 (예를 들어 행위에 의해 발생한 사용자의 입력 또는 기타 이벤트)에 영향을 메모리 할당 및 쓰레기 수집합니다.
이 문서가 적용되는 실제 - 타임 테이블 목록을 사용하면 사람을 배우기에 대한 자세한 내용 메모리 할당합니다.
이 프로 파일러 즉시, 그리고 극적으로 밝혀 실제 - 시간을 낭비 메모리 사용 나는 Direct3D 프로그램을 개발합니다.
램프 및 급격하게 상승하는 패턴의 상품 "(오물 수거로" 인해)의 메모리 사용량이 그래프를 완벽하게 일치하는 정기적인, 매우 -의 3 차원 도면의 간단한 프로그램을 일시 중지합니다.
프로 파일러 활성화되어 나에게 배급을 수시로 임시 객체는 것을 발견한다면 많은 메모리를 축적, 트리거링 가비지 컬렉션을 자주하면서 각각의 쓰레기 수집을위한 충분한 시간을 그리기 몇 시간을 놓친 원인합니다.
프로 파일러 할당된 개체 유형의 실제 - 타임 테이블의 개체에 소비의 유형을 밝혀 가장 메모리, 소비의 메모리를 할당하고 있고, 어느 최고의 속도 (초당 바이트), 그리고 최고의 처리 속도가를 할당합니다.
실제 - 시간 그래프를 연구하고, 그리고 현실 - 타임 테이블을 사용하는 방식으로 연구에 초점을 나에게 어떤 데이터 유형을가 내 코드 곳에서 사용되고있습니다.
변화의 코드를 할당을 피하는의 임시 개체를 수시로을 크게 줄일 수있습니다 전반적인 속도의 메모리를 할당 및 폐기, 그리고 빈도를 줄일 수있습니다 따라서 가비지 컬렉션 트리거합니다.
("Bytes/sec"은 매우 노출 믿습니다 실제 - 타임 메모리 사용에 대한 통계에 더하여 "Live instances"합니다.
)보고에 매우 빠르게 업데이 트되는이 모든 테이블 형식으로, 그리고이 행이 정렬하는 방법을 선택할 수있습니다, 그리고 정렬 매개 변수를 변경하여 언제든지 공부가 실제 - 시간의 경험하고 유익한 프로그램을 매우 매력적인합니다.
메모리 할당 사용자 상호 작용에 대한 응답을 실행중인 프로그램을 배울 수, 그리고 시험 범위를 좁힐 수있습니다의 의견을 수렴하여 빠른 속도에 적응할 가장 - 재미있는 측면합니다.
(예를 들어, 다음과 같은 특성을 있었을 2006 July 버전 : 버전 2.6.89; 4.3 MB; USA $127.00;을 다운로드 14 - 일 - 한도 버전, 전혀 비용을 평가합니다.)
6.2 FxCop : .NET 코드를 분석기 / 비평
.NET 프로그램을 컴파일을 분석 FxCop (또는 컴파일된 어셈블리) 및 생성에 문제가 기존 소스 코드를보고 목록을 수있습니다.
성능 문제와 보안 문제가 발견되었습니다 수있습니다.
코딩 규칙 위반이 발견 수있습니다.
FxCop의 원래 소스 코드 액세스를 필요로하지 않습니다의 분석을 수행합니다.
컴파일 .NET 전용 프로그램 (IL을 포함)이 필요합니다.
그럼에도 불구하고, 특정 행 번호를 하이퍼 링크를 제공합니다 FxCop 보고서의 원래 소스 코드를합니다.
Microsoft Visual C# 2005 IDE가 활성화되면, 하이퍼 링크를 클릭하면 보고서가 원인이 IDE을 FxCop 관련성이 높은 소스 파일과 행 번호를 워프합니다.
FxCop가, 내 의견으로는, 다소 어색 Microsoft Visual C# 2005 IDE 방법으로 통합합니다.
그러나, 일단은 설정, 그리고 잠재적으로 아주 재미있는 FxCop - 귀중한 리포트 생성합니다.
이 보고서에 대한 자세한 내용을 개선하기 위해 기존 소스 코드를 방법에 대해서 조언을합니다.
을 분석하는 것 같아 보람을 FxCop를 사용하는 프로그램을 정기적으로합니다.
난 놀라지 않을 겁니다 또는 비즈니스에 필요한 경우 일부 소프트웨어 개발 프로젝트의 모든 코드를 작성한 개발자가 경고 또는 비판을 FxCop 수익률없습니다.
규칙을 FxCop에서 데이터베이스를 추가하거나 제거할 수있습니다 따르면,이 필요합니다.
FxCop는 오픈 - 소스, 무료 프로그램.
6.3 "Reflector for .NET" : decompiler / 분석기
인터넷 사이트에서 Lutz Roeder's :
"Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#, Visual Basic and IL."
한 사람 도울 수 "Reflector" 제 3 - 파티 라이브러리를 공부하는 방법에 기록합니다.
때로는 그것을 알고는 매우 유용하는 방법을 정확하게 조립하는 방법을 구현합니다.
예상치 못한 경우 또는 신비로운 방식으로 동작하는 방법을 사용하여 볼 수있습니다 "Reflector"을 구현합니다.
보고를 구현하여, 프로그래머는 구체적인 구현의 도서관 인한 문제를 해결 방법을합니다.
친구가 그 녀석을 도왔다고 "Reflector"의 동작에 대한 자세한 내용 저조한 - Microsoft의 구현 방법을 설명 Framework Class Libraries (FCL)합니다.
"Reflector" 수도 도서관 방법 설명서를 참조 때 유용합니다 이루어져 불과 몇 단어와 같은 "값" 또는 "이벤트 처리기를 설정합니다."
라이브러리 함수 호출이 실패하는 경우에는 알 수없는 이유 (이 모든 매개 변수를 유효한 것), 다음의 구현을 사용 "Reflector" 라이브러리 함수를 보면서 이런 생각을 공개하는 이유는 수도의 실패합니다.
"리버스 엔지니어링을" 수행 "Reflector"의 일부 .NET 프로그램이나 조립합니다.
다른 유틸리티, 아마 포함한 "Reflector" 자체 프로그램이나 어셈블리에 대한 소스 코드를 만들어 낼 수도있습니다 판단이 흐려지게 소스 코드를 기반으로 구축합니다.
이것은 물론 일부의 소스가 개발자와 그들의 투자에 대한 걱정합니다.
(2006 July : Reflector.zip이 버전 4.2.45.0)
7. 인터넷 토론 포럼
Google를 검색하는 최선의 방법은 모든 주제를 구체적인 질문에 대한 답변을 찾을지만 아래에있는 사이트를 반복 C# 및 .NET 질문에 대한 검색 결과에 표시됩니다.
아래의 사이트는 멋져 탐험을위한 C# 많은 멋진 일들을 끝내고 사람들이 .NET합니다.
재미있고 유용한 "The Code Project" 사이트에는 수천 개의 관련 기사, C#, C++, 그리고 다른 언어와 프로그래밍 패러다임합니다.
the "MSDN Code Gallery" 사이트에는 관련하여 많은 흥미로운 기사 및 코드 샘플 Microsoft 기술을합니다.
C#와 관련하여 다른 인터넷 사이트 .NET :
8. 일반 노트
8.1 플랫폼 독립성
the Intermediate Language (IL) 같은 Java "바이트 코드는" 플랫폼 독립적인합니다.
.NET - 준수 컴파일러를 어떤 플랫폼 독립적인 Intermediate Language (IL)의 코드를 양식을 생성 프로그램이나 어셈블리를합니다.
패키지로 프로그램을 실행 파일을 ("*.exe" 파일)을해야하는 어떤 플랫폼 - 종속 코드를 구체적인 운영 체제를 적절하게 해석 및 실행하기위한 목적으로이 소프트웨어를 실행 파일의 특정 운영 체제의 컨텍스트에서합니다.
그러나, 일부의 소프트웨어 파일을 실행 파일의 기본 서비스를 호출하는 유일한 .NET CLR 엔진, IL 코드를 제출하는 실행 파일을이 소프트웨어에 포함된 CLR 엔진을합니다.
Microsoft 구현을 제공합니다 .NET 유틸리티 (컴파일러, ...), Framework Class Library (FCL)의 구현과, Windows 운영 체제에 대해서만합니다.
구현의 제안 Mono Project the .NET 유틸리티 (컴파일러, ...), 및 구현의 Framework Class Library (FCL), 다음과 같은 운영 체제 : Windows, Linux, MacOS X, 그리고 BSD합니다.
8.2 속도에 비해 non-CLR C / C++
the .NET은 문맥에 Common Language Runtime (CLR)하는 측면 C# 프로그램을 실행합니다.
the CLR을 수행 프로그램을 통해 "오물 수거" 및 "관리되지 않는" 함수를 호출 라이브러리 (Intermediate Language (IL)의 모든 도서관에서 구현되지 않았습니다).
이상의 모든 기능을하지 순수 수학, 순수 문자열 조작, 또는 순수 메모리를 복사,이 라이브러리를 "관리되지 않는" 함수를 호출합니다.
모든 파일 작업, 소켓 작업, 드로잉 작업, 입력 작업 (마우스, 키보드), 출력 작업 (콘솔), 플랫폼 스레드를 운영, 정밀 타이머 작업에서, 윈도우 운영 등,이 "라이브러리를 관리되지 않는" 함수를 호출합니다.
불행히도, "관리되지 않는" 함수를 호출하는 메커니즘을 CLR에서 상당한 금액의 시간이 필요합니다.
이에 따라 프로그램을 실행하는 전반적인 속도를 CLR의 맥락에서 noticably보다 느리다는 "관리되지 않는" 기능을 직접적으로하는 프로그램을 호출할 수있습니다.
특정 종류의 소프트웨어, 속도가 중요합니다.
특정 종류의 소프트웨어를 위해, 속도에 중요한 차이를 만들 수의 주관이나 심리적인 경험을 한 사람이 소프트웨어를 사용합니다.
특정 종류의 소프트웨어를 위해, 속도의 차이를 만들 수 및 실패의 목표를 달성합니다.
멀티 스레딩 CPU 속도를 향상, 그리고 CLR 코드를 생성하는 기능을 개선하기 위해이 소프트웨어를 실행하는 도움의 맥락에서 빠른 CLR을 실행합니다.
그러나, 이외의 모든 코드가 실행 CLR, 그리고 도서관을 직접 호출하는 플랫폼은 피할 수없는 소프트웨어를 실행하는 것보다 훨씬 빠르게의 컨텍스트에서 실행 CLR합니다.
the CLR을 보장할 C#에 의해 만들어 같은 소프트웨어를 안전하게 관리되는 코드와 관리되지 않는 코드의 차이에 다리를 놓는 들어 섭니다 않을 수있는 비용이 감소합니다.
따라서, 어떤 프로그램이 매우 플랫폼 집중 (예 : 3 차원 시뮬레이션이나 게임, 파일 프로세서, 네트워크 서버 등)은 리히터 규모 명령을 실행했을 때보다 빠른 CLR 밖으로 CLR 내에서 실행합니다.
그 차이가 큰합니다.
또한, 모든 프로그램을 수행 낮은 - 수준 상당한 양의 데이터가 조작을 실행 CLR 내에서보다 훨씬 빠른 CLR 밖으로합니다.
CLR의 컨텍스트에서 실행하는 프로그램을 실행할 수있을 정도로 신속하게 많은 실용적인 목적으로 유용합니다.
CPU의 속도로 향상되고 더 나은 장점은 복수의 코드를 CPUs, 프로그램의 컨텍스트에서 실행에 사용할 수있습니다 CLR 더 많은 작업을 필요로 높은 비율을 계산합니다.
그러나, 중간에 2008 the CLR은 여전히 3 차원의 게임에 적합하지 않다고 어떤 정교하지 않는 한 매우 적극적인 노력이 만들어의 수를 줄이기 위해 함수 호출을 3 차원 라이브러리 (OpenGL 또는 Direct3D), 아마와 같은 개념을 사용하여 "쉐이더 프로그램" 및 "디스플레이 목록을;" 아무것도의 수를 줄이기 위해 함수 호출합니다.