최근에 본사 .NET Framework 팀의 Scott Guthrie 블로그에 드디어 .NET Framework 라이브러리 소스 코드를 공개한다는 내용이 올라 왔습니다. 마이크로소프트는 Visual Studio 6.0에서 MFC 라이브러리 소스 공개에 이어, 윈도우 임베디드 개발자들에게는 잘 알려져 있듯이 공유 소스 라이선스로 CE6 플랫폼 빌더 부터는 커널과 소프트웨어 소스를 모두 공개 했듯이, .NET Framework 버전이 3.5로 발전 하면서 .NET Framework 라이브러리 소스 코드를 공개할 예정입니다. 또한 앞으로 발표될 Visual Studio 2008 에서 통합 디버깅을 할 수 있도록 제공됩니다. 이처럼 마이크로소프트는 개발자 여러분들께 계속해서 응용 프로그램을 개발하는 데 편의를 제공하며 Scott Guthrie 블로그에 적힌 글들을 제가 번역했으니 하시는 개발 업무에 참고하시기 바랍니다!
저희 .NET Framework개발 팀은 .NET 개발자들에게 .NET Framework 라이브러리의 소스 코드를 검색하고 다운로드 할 수 있으며, 쉽게 디버깅을 할 수 있도록 지원 하는 일들을 하고 있습니다. 오늘 저는 곧 발표될 VS2008 및 .NET 3.5가 발표와 함께 아래와 같이 소스 코드를 공개할 계획을 알릴 수 있음을 매우 기쁘게 생각합니다.
마이크로소프트는 .NET 기본 클래스 라이브러리 (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text 기타 등등), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml) 및 WPF (System.Windows) 소스 코드를 제공을 시작으로 WCF, Workflow, and LINQ 라이브러리 등의 소스를 추가적으로 공개할 예정합니다. 참고로 소스 코드는 마이크로소프트 참조 라이브러리 (MS-RL) 라이선스 하에 공개될 예정입니다.
다시 말해서 메모장과 같은 어떠한 텍스트 편집기로도 볼 수 있는 표준 인스톨 방식으로써 .NET Framework 소스 라이브러리를 다운로드 할 수 있습니다. 또한 VS2008과 함께 통합 디버깅 지원 해 줍니다.
Visual Studio 2008 디버깅 지원 통합
VS2008 최종 버전에서는 .NET Framework 디버거 심볼(해당 소스 코드와 관련)을 동적으로 다운로드 할 수 있도록 디버거를 설정할 수 있도록 지원해 줍니다. 여러분은 단 번에 또는 요청에 따라 수동적으로 .NET Framework 심볼을 다운로드 할 수 있도록 설정할 수 있습니다.
.NET 응용 프로그램을 디버깅할 때 여러분의 코드에서 브레이크 포인트를 걸고자 할 때, 여러분의 응용 프로그램에서 .NET Framework의 클래스 및 메서드(method)의 줄 번호 및 파일의 상세 정보를 포함한 디버거 콜 스택을 볼 수 있도록 제공해 줍니다.
위의 그림에서 GridView1.DataBind() 메서드(method)를 호출하는 페이지에서 디버거 브레이크 포인트가 설정된 것을 볼 수 있습니다. 참고로 그 이전에는 DataBind() 메서드(method)가 어떻게 구현 되었는지에 대해 상세히 볼 방법이 없었습니다. 그러나 VS2008 에서는 F11 ("Step Into") 키를 누른 후 디버거와 함께 .NET Framework 구현 소스를 상세히 볼 수 있습니다.
VS2008은 마이크로소프트로부터 요구한 해당 .NET Framework 소스 파일을 자동적으로 검색하여 지원하게 될 것 입니다. 이것은 디버거를 시작하기 전에 ASP.NET GridView 및 BaseDataBoundControl 클래스 소스 코드가 여러분의 컴퓨터에 설치되지 않았음을 의미합니다. 따라서 여러분이 구현하고자 하는 소스 안(Step Into)으로 보기 위해 F11키를 눌렀을 때, VS는 자동적으로 마이크로소프트로부터 소스 코드를 다운로드 받고 IDE와 함께 해당 소스를 불러 올 것 입니다.
동적으로 파일들을 다운로딩 함으로써 여러분의 설치된 컴퓨터에서 .NET Framework의 지정된 버전과 소스 파일이 연결 되어야 함을 확인해야 합니다. (예를 들어, 여러분의 컴퓨터에 설치된 GDR 또는 서비스 팩 패치를 가지고 있다면, 그 해당되는 파일의 소스 코드를 다운로드 해야 합니다.)
.NET Framework 라이브러리 코드 안으로 들어감으로써 .NET Framework 소스와 마찬가지로 콜 스택 안으로 파고 들어 갈 수 있습니다. 예를 들어, 앞서 우리의 시나리오에서 콜 스택에서 마우스로 더블 클릭 한 다음 System.Web.UI.Page 클래스의 private형 ProcessRequest 메서드(method)를 검색할 수 있습니다.
(우리의 페이지가 예약된 쓰레드를 조정할 수 있는) mscorlib 에서 System.Threading.ThreadPool 구현할 수 있도록 좀 더 상세히 들여 다(Step Into) 할 수 있습니다.
VS 디버거의 "로컬 변수" 및 "조사" 창은 여러분의 소스 코드뿐만 아니라 .NET Framework 소스를 모두 지원해 주는 두 가지의 그림을 유의하게 보시기를 바랍니다.
요약
결론적으로 말해서 현실적으로 .NET 개발자에게 가장 가치가 있는 것은 .NET Framework의 소스 접근과 디버깅 통합 입니다. 소스 코드를 검토하고 디버깅하는 전반적인 절차에 있어서 어떻게 .NET Framework 라이브러리가 구현 되었는지 더 넓은 시각에서 보게 되었고, 역으로 개발자들은 더 성능 좋은 응용 프로그램과 .NET Framework를 더 올바르게 사용할 수 있도록 제공한다는 의의를 가지게 되었습니다.
우리의 소스 코드 공개 계획 및 어떻게 디버거가 그러한 .NET Framework 소스가 통합되는 지에 대해 더 자세히 알고 싶은 분이 있다면 Scott Hanselman 과 Shawn Burke 최근에 녹음한 포드캐스트를 들어 주십시오! 그리고 Visual Studio 2008 베타2를 다운로드 해서 사용해 보고 싶은 분들이라면 아래의 URL을 참고 하시기 바랍니다!
첫 만남, 첫 사랑. 첫 차 그리고 첫 집!! 여러분들도 이 단어들을 연상만 해도 왠지 설레고 입가에 웃음이 나올 것 입니다. 저 마다 다른 경험과 추억을 가지고 있겠지만 왠지 '처음'