최근 ASP에서 MVC 아키텍처를 구현하려고 노력할 계획입니다. 누군가 나에게 물었다 : ASP가 제거되었는데 왜 내가 아직도 그것을 공부하고 있습니까? 나는 또한 이것을 알고있다. Microsoft는 ASP 3.0을 포기하고 ASP.NET으로 전환 한 이후 ASP는 PHP와 JSP보다 훨씬 뒤쳐져 거의 동시에 시작되었습니다. 폐쇄 소스를 통한 오픈 소스의 이점은 PHP 및 ASP와 같습니다. ASP는 그것이 제거 될 것이며 아무도 그것을 저장할 수 없다고 말합니다. 그러나 ASP는 중국 시장, 특히 일부 중소 기업의 일부 응용 프로그램에서 ASP가 상당히 넓다는 점에 주목할 가치가 있습니다. 간단한 CMS는 문제가 없으며 배포하기가 간단합니다. 일부 기존 Windows 시스템에서는 .NET 프레임 워크를 직접 실행할 필요가 없으므로 프레임 워크를 준비해야합니다. 그러나 이것은 실험 프레임 워크이며, ASP가 PHP와 유사한 MVC 아키텍처를 구현할 수 있는지 확인하는 것입니다.
좋아, 너무 많이 말한 후, 그 주제로 돌아가 봅시다. 이 문제의 이유는 ASP 파일을 동적으로 포함해야하기 때문입니다. 아시다시피, ASP에는 SSI (서버 측 포함) 인 메소드가 하나만 포함되어 있으며 기본적으로 다음 두 가지 유형으로 나뉩니다.
코드 사본은 다음과 같습니다.
<!-#include file = "sample.asp"->
<!-#include virtual = "sample.asp"->
기본적 으로이 두 유형의 첫 번째는 더 많이 사용됩니다. #include Virtual에는 가상 디렉토리에서 사용할 수있는 가상 경로가 포함되어 있습니다. 그러나이 두 가지 모두 정적입니다. 동적으로 포함하려면 다음과 같이 쓸 수 없습니다.
코드 사본은 다음과 같습니다.
<!-#include file = "<%= myvar%>"->
<!-#include virtual = "<%= myvar%>"->
위의 글쓰기 방법이 잘못되었습니다. ASP가 스크립트 엔진을 시작하여 ASP < % %> 태그를 실행하기 전에 #include 지시문이 실행된다는 것을 이해할 수 있습니다. 다시 말해, #include는 ASP의 작업이 아니라 IIS의 번역 작업과 같은 서버 측 프로그램이므로 ASP 코드에주의를 기울이지 않습니다.
구현 방법, 포함, 요구 및 요구 사항 포함 및 요구 사항은 동적으로 PHP와 유사한 스크립트 방법을 포함합니까? ASP 서버 객체 인 Server.Execute의 메소드를 살펴 보겠습니다. 모든 ASP 기능을 검색하면이 기능이 동적 포함과 가장 유사하다는 것을 알 수 있습니다. 실험을 할 수 있습니다.
샘플 .inc.asp
코드 사본은 다음과 같습니다.
<%
응답. "Hello World!"
%>
test.asp
코드 사본은 다음과 같습니다.
<%
Server.Execute "sample.inc.asp"
응답. "나는 test.asp!"
%>
실제 출력은 "Hello World! I Am Test.asp!"여야합니다. Server.Execute가 동적 포함에서 잘 작동하지만 클래스 나 기능을 포함하려면 어떻게해야합니까? 다음으로 다음 실험을 수행하십시오.
샘플 .class.asp
코드 사본은 다음과 같습니다.
<%
수업 샘플
수업 종료
%>
test.asp
코드 사본은 다음과 같습니다.
<%
Server.Execute "sample.class.asp"
response.write typeName (평가 ( "새 샘플"))
%>
직접 실행, "Microsoft vbscript 런타임 오류 오류 '800A01FA'클래스가 정의되지 않았습니다. 'Sample'", 결과는 매우 실망 스럽습니다. 왜 이런 일이 발생합니까? 나는 MSDN을 찾아서 다음과 같은 설명을 찾았습니다. "#include를 사용하여 파일이 호출 페이지에 포함되면 실행 된 .asp는 사용하지 않습니다. 예를 들어, 호출 페이지에 포함 된 파일에 서브 루틴이있을 수 있지만 실행 된 .asp는 서브 루틴 이름을 인식하지 못합니다." 내가 직면 한 문제와 조금 다른 것 같습니다. Server.Execute Code-Isolated입니까? 그런 다음 다음 실험을 수행하십시오.