2010-04-26 5 views
2

C#이 개방형 표준이지만 .NET이 아닌 이유는 무엇입니까? 이것의 요점은 무엇입니까? Microsoft가 .NET의 일부만 열어보기로 결정한 이유는 무엇입니까?C#이 개방형 표준이지만 .NET이 아닌 이유는 무엇입니까?

+5

C#은 공개 표준이므로 다른 사람들이 언어를 컴파일 할 컴파일러를 작성할 수 있습니다. .NET에 대한 표준은 개방형 표준입니다. 정확히 무엇이 표준화되어 있습니까? API 문서는 모든 사용자가 사용할 수 있으므로 누구나 클래스를 구현하여 호환 라이브러리 (예 : 모노) –

+0

API 문서를 공개한다고해서 문서화 된 내용만을 기반으로 자신의 클린 룸 구현을 만들 수 있음을 의미하지는 않습니다 행동. –

답변

8

ECM은 .NET 런타임의 다양한 부분을 C#, CLI, CLS와 같이 실제로 표준화했습니다.

7

.NET은 런타임이고 C#은 언어입니다. C#은 Mono와 같은 다른 런타임에서 컴파일하고 실행할 수 있습니다. Mono 이외의 다른 런타임은 실제로 인식하지 못하고 있지만 C#의 사양이 열려 있기 때문에이를 읽고 자신의 런타임을 만들 수 있습니다. ;)

+3

런타임을 전혀 사용할 수도 없습니다. 정적으로 C#을 컴파일하는 것을 막을 수있는 방법은 없습니다. –

+1

DotGNU도 하나입니다 ... http://www.gnu.org/software/dotgnu/ – Lucero

+0

CLR의 공유 소스 구현 인 Rotor도 있습니다. –

4

Java, C, C++ 등과 같이 C#은 언어 정의에 불과합니다. 그 자체로는 아무것도하지 않습니다. 사용자가 프로그램이나 프로 시저를 정의하고 외부 라이브러리와 인터페이스를 정의 할 수있는 방법을 정의합니다.

반면 .NET Framework는 언어가 아닙니다. 그것은 클래스 라이브러리와 개발 프레임 워크입니다.

2

사실 실제로는 언어에 대해 ECMA 334 대신 런타임 API에 대한 공개 표준 (ECMA 335)이 있습니다.

the source code for Microsoft's implementation of .Net is available이 있으며 multiple separate implementations (가장 두드러진 것이 mono)입니다.

특허 침해에 대한 추가 우려가 있습니다. 그러나 Microsoft는 두 사양을 모두 포함하는 .Net 플랫폼에서 legally binding and irrevocable community promise을 발행했습니다 (많은 사람들이 법적으로 구속력있는 부분을 놓칩니다).

+0

.NET 라이브러리 소스의 하위 집합 만 사용할 수 있습니다. 게다가, CLR에 대한 소스 코드는/공개되지 않을 것입니다 - Microsoft는 "참조 구현"을 발표했지만 진짜는 공개하지 않았습니다. – noctonura

1

프레임 워크라고 가정합니다. 나는 그들이 Windows에서 라이브러리 구현을 제어하려고한다고 생각한다. Mono가 수행 한 것처럼 자신의 출처를 기반으로하는 프레임 워크 전체 또는 일부의 호출 호환 가능 버전을 구현하는 누군가를 막을 수있는 방법은 없습니다.

+0

또한 .NET Framework의 많은 부분은 Windows에서만 의미가 있지만 개방형 표준은 플랫폼에 독립적이어야합니다. –

관련 문제