DCL HTTP Server Extension 3 n 1 2

  • Slides: 15
Download presentation

DCL HTTP Server Extension 3 기본개념 n 1. 2. 3. 4. 웹 서버 어플리케이션

DCL HTTP Server Extension 3 기본개념 n 1. 2. 3. 4. 웹 서버 어플리케이션 기술의 비교 서버기술 언어 번역 및 실행 이식성 데이터베이스 PHP Interpreter ○1 PHP lib ASP VBScript, JScript, Perl Interpreter △ 2 ADO ASP. NET VB, JScript, C#, C++, J# Compiler X ADO JSP (Java Servlet) JAVA Compiler, Interpreter(JVM) ○ JDBC Fast. CGI 3 (C++) (Compiler) ○ - DHE(DCL) C++ Compiler ○ DDBC 4 PHP의 데이터베이스 함수는 DBMS 종속되므로 DBMS 이식성이 없음 ASP의 경우 Perl을 사용하면 이식성이 있으나 ADO와 같은 Active. X를 사용하면 이식성이 없음 Fast. CGI는 CGI의 발전된 형태로 인터페이스만 제공 C++의 추상클래스 인터페이스, Informix, Inter. Base, My. SQL, Oracle 2005 -11 -12 한국방송통신대학교 정보과학과

DCL의 서블릿 개발환경 7 서블릿 프레임워크(DCLNet) n 서블릿 객체관련 클래스 n n n HTTP

DCL의 서블릿 개발환경 7 서블릿 프레임워크(DCLNet) n 서블릿 객체관련 클래스 n n n HTTP 프로토콜 관련 클래스 n n n n URLEncoder, URLDecoder Http. Cookie. Decoder, Http. Query. String. Decoder, Http. Form. Data Stored. Http. Form. Data, Buffered. Http. Form. Data. Input. Stream Http. Header, Http. Set. Cookie HTML 관련 클래스 n n Http. Servlet, Http. Servlet. Ex Http. Servlet. Context, Http. Servlet. Context. Ex Html. Entity. Encoder Html. Output. Stream Html. Template 기타 관련 클래스 n n String. To. String. Map String. To. String. Vector. Map 2005 -11 -12 한국방송통신대학교 정보과학과

DCL의 서블릿 개발환경 8 데이터베이스 연결성(DCLCore) n DDBC : DCL Database Connectivity n n

DCL의 서블릿 개발환경 8 데이터베이스 연결성(DCLCore) n DDBC : DCL Database Connectivity n n C++ 추상클래스를 사용하여 인터페이스를 정의 DSO로 구현된 드라이버 n n Informix, Inter. Base, My. SQL, Oracle Classes n n n n SQLConnection SQLQuery SQLField SQLParam SQLFields SQLParams SQLConnection. Pool SQLConnection. Ref 2005 -11 -12 한국방송통신대학교 정보과학과

DCL의 서블릿 개발환경 9 데이터베이스 연결성(계속) n Html. Template를 사용한 데이터베이스 예제 62: <table

DCL의 서블릿 개발환경 9 데이터베이스 연결성(계속) n Html. Template를 사용한 데이터베이스 예제 62: <table id="zipcode. Table" border=1 cellspacing=0 style="width: 100%; 534: Html. Template& text-align: center"> ZIPCODE = (*this)["ZIPCODE"]; 63: <col span="1" width="15%" style="text-align: center"/> 535: SQLQuery& q = m_p. Owner->session()->m_query; 64: <tr> 536: q. execute( 65: <th>우편번호</th> 537: "SELECT ZIPCODE“ 66: <th>주소</th> 538: ", CONCAT(SIDO, ' ', GUGUN, ' ', DONG) AS ADDRESS“ 67: <th>번지</th> 539: ", BUNJIn“ 68: </tr> 540: "FROM DCLWC_ZIPCODE “ 69: <!-- BEGIN ZIPCODE --> 541: "WHERE DONG LIKE '%" + (*it). value[0] + "%'“ 70: <tr onclick="select. Item(this); "> 542: ); 71: <td>$ZIPCODE</td> 543: q. fetch(); 72: <td style="text-align: left">$ADDRESS</td> 544: if (q. eof()) 73: <td>$BUNJI</td> 546: erase("ZIPCODE"); 74: </tr> 548: else 75: <!-- END ZIPCODE --> 549: { 76: </table> 550: while(!q. eof()) 551: { 552: ZIPCODE. assign(q. fields(), "  "); 553: append("ZIPCODE", ZIPCODE); 554: q. fetch(); 555: } 556: } 2005 -11 -12 한국방송통신대학교 정보과학과

DCL의 서블릿 개발환경 10 서블릿의 디버깅 n __DCL_DEBUG 버전으로 컴파일 할 경우 n n

DCL의 서블릿 개발환경 10 서블릿의 디버깅 n __DCL_DEBUG 버전으로 컴파일 할 경우 n n n 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: TRACE, ASSERT, 잘못된 동적 메모리 사용에 대한 정보 표시 ASSERT의 경우 Assert. Exception 예외 발생 서블릿 컨테이너에 의한 에러 표시 bool My. Servlet: : on. Initialize() __DCL_THROWS 1(Exception*) { #ifdef __DCL_DEBUG // Http. Servlet. Ex의 디버깅 정보 출력을 불가능하게 한다. // 기본값은 true이다. // m_b. Enable. Debug. Out = false; #endif __DCL_TRACE 1("File. Name: %sn", m_str. File. Name. cstr()); __DCL_TRACE 1("Config. Dir: %sn", m_str. Config. Dir. cstr()); __DCL_TRACE 1("Temp. Dir: %sn", m_str. Temp. Dir. cstr()); // __DCL_ASSERT(false); return true; } 2005 -11 -12 한국방송통신대학교 정보과학과

DCL의 서블릿 개발환경 11 서블릿의 디버깅(계속) n Http. Servlet. Ex의 디버깅 정보 표시 n

DCL의 서블릿 개발환경 11 서블릿의 디버깅(계속) n Http. Servlet. Ex의 디버깅 정보 표시 n n 서블릿의 실행 결과뿐만 아니라 TRACE, 잘못된 동적메모리 사용을 표시 40: void My. Servlet: : on. Service(Http. Servlet. Context. Ex& ctx) 41: __DCL_THROWS 1(Exception*) 42: { 43: ctx. set. Content. Type("text/html", "euc-kr"); 44: 45: // 디폴드 Html. Output. Stream의 디폴트 파라미터를 사용하여 46: // 스트림 객체를 구성한다. 47: Html. Output. Stream& out = ctx. get. Output. Stream(); 48: 49: out << "<html>n" 50: "<head><title>My. Servlet HTTP Service</title></head>n" 53: "<hr/>n" 54: "<p>Hello World !</p>n"; 55: 56: // 해제하지 않은 메모리 블록 57: char* p = new char[100]; 58: 59: __DCL_TRACE 1( 60: "서로다른 이름의 변수 개수 : %dn", 61: ctx. m_map. Query. count() 62: ); 63: } 2005 -11 -12 한국방송통신대학교 정보과학과

성능평가 14 Apache. Bench 실험결과(계속) n n line=200 (28525 bytes) line=2000 (284126 bytes) n

성능평가 14 Apache. Bench 실험결과(계속) n n line=200 (28525 bytes) line=2000 (284126 bytes) n 2005 -11 -12 한국방송통신대학교 정보과학과