2009-06-12 5 views
1

ASP.NET이 작동하는 방식과 XML 태그에서 컨트롤을 렌더링하는 방법을 자세히 다루는 기사를 찾고 있습니다. 예를 들어, ASP.NET에서 다음과 같은 마크 업을 가져 와서 표시되는 결과를 얻는 방법은 무엇입니까?ASP.NET 구문 분석 페이지는 어떻게 작성합니까?

<asp:Label ID="MyLabel"><%= myObject.Text%></asp:Label>

ASP.NET의 내부 동작에 대해 자세히 알고있는 기사를 아는 사람이 있습니까?

+0

당신이 웹 서버 컨트롤을 HTML 태그로 렌더링하는 방법을 물어? – TStamper

+0

기본적으로 저는 제 질문을 로터리 방식으로 묻습니다. XML 파일에서 마크 업을 자동으로 읽고 무언가를 생성합니다. 웹 폼과 약간 닮은 것을 생성합니다. 이유는 모르겠지만 일반적으로 XML 구문 분석에 어려움을 겪고 있습니다. ASP.NET에서 ASPX 페이지를 구문 분석하는 방법에 대해 더 많이 이해하고 싶다면 내가 성취하고자하는 것을 구현하는 방법을 더 잘 이해할 수있을 것입니다. . – senfo

+0

Google (또는 Bing!) "asp.net 페이지 수명주기" 나는 그것이 당신이 찾고있는 것이라고 생각합니다. –

답변

2

반사경 -> System.Web.UI 확장 -> PageParser 클래스 -> 디 컴파일 ->

(죄송합니다, snarky려고 노력하지 즐기십시오,이는 내가 그것의 이해를 얻을 수 있었던 유일한 방법 나)

+0

와우, 언제 사람들이 반사경을 사용하도록 장려 했나요? –

+4

그냥 .NET Reflector를 사용하여 HtmlLink 태그가 렌더링 중에 href 값을 왜곡하고 있는지 판단합니다. 커버 아래를 볼 수 있다는 것은 가방에 넣을 수있는 매우 강력한 도구입니다. –

5

은 어떤처럼, 각 ASP.NET 페이지는 .NET 클래스로 컴파일이다 다른. 컨트롤 (ASCX)은 같은 방법으로 컴파일됩니다. C# 및 VB.NET 용 컴파일러처럼 ASP.NET 마크 업용 컴파일러가 있습니다. ASP.NET 마크 업을 원시 MSIL로 컴파일되는 "또 다른"언어로 생각할 수 있습니다.

네이티브 ASP.NET 마크 업은 PageParser에 의해 처리됩니다. 이 클래스에는 재미 있고 유용한 메소드가 하나 있다는 것을 알 수 있습니다 (GetCompiledPageInstance). 의미 하듯이이 페이지는 기본 .NET 클래스로 페이지를 컴파일합니다. 이를 재정의 할 수 있습니다 (예 : 자신 만의 마크 업을 만들어 자신의 파서/컴파일러 작성). Spark은 ASP.NET 마크 업에 대한 대중적인 대안입니다.

각 클래스는 궁극적으로 Page 또는 Control에서 상속됩니다. 이 두 클래스에는 Render() 메서드가 있습니다.이 메서드는 클래스의 사용자 지정 기능을 실행 한 후 HTML을 출력 스트림에 씁니다.

큰 차이점은 컴파일은 종종 C#이나 VB.NET 코드와 다른 시간에 발생한다는 것입니다. 프레젠테이션 .NET 언어를 기능적 .NET 언어에서 분리 할 수있는 기능이므로 실제로는 기술적 인 요구 사항이 아닙니다. ASPX 및 ASCX 페이지는 웹 서버의 컨텍스트에서 요청 될 때 ASP.NET 런타임에 의해 컴파일됩니다. 그런 다음 컴파일 된 어셈블리는 a) 웹 응용 프로그램이 종료되거나 b) ASPX 파일 중 하나에서 파일 시스템 변경이 감지되어 다시 컴파일을 트리거 할 때까지 메모리에 보관됩니다.

It is possible to compile ASPX 페이지를 C#/VB.NET /와 함께 사용하면 전체 응용 프로그램을 단일 어셈블리로 배포 할 수 있습니다. 여기에는 두 가지 장점이 있습니다. 하나는 단일 DLL을 쉽게 배포 할 수 있다는 것입니다. 둘째, LOOOONG 대기 시간을 없애기 때문에 ASP.NET 웹 응용 프로그램에 "처음으로 발생"할 수 있습니다. 모든 페이지가 사전 컴파일되므로 어셈블리는 각 파일을 컴파일하는 대신 첫 번째 요청시 메모리에로드하기 만하면됩니다. 나는 항상이 사이트가 마음에

관련 문제