130 likes | 477 Views
CSP (Caché Server Page). 2006 년 1 월 5 일 ㈜미르테크 김형식 E-Mail : hskim@mirtech.co.kr. Introduction to CSP. CSP 란 ? CSP Architecture Web Architecture 비교 CSP Configuration CSP Application 개발 방법. CSP 란 ?. CSP 란 ? CSP (Caché Server Page)
E N D
CSP (Caché Server Page) • 2006년 1월 5일 • ㈜미르테크 김형식 • E-Mail : hskim@mirtech.co.kr
Introduction to CSP • CSP 란? • CSP Architecture • Web Architecture 비교 • CSP Configuration • CSP Application 개발 방법
CSP 란? • CSP 란? • CSP (Caché Server Page) • High-performance, Highly scalable Web application을 개발하기위한 Intersystems사의 기술 • CSP의 특징 • 가볍고 빠른 웹 아키택처 • Web Application이 Cache Server에서 동작. • Cache Application Tag (CATs) • 일반 HTML Tag처럼 사용 가능하며 Browser 또는 Server에서 수행 • Hyper-Events • Browser에서 발생하는 Event를 Server에 전달하고 Server의 연산결과를 현재 화면에 즉시 반영하도록 지원하는 작은 애플릿 프로그램. (화면의 Refresh가 불필요) • 단순한 세션 관리 • 캡슐화된 세션관리 오브젝트를 제공하여 웹페이지간 상태정보를 유지 가능.
CSP Architecture • 동작개요 ①WEB 문서 요청 ② 요청된 문서가 *.CSP 또는 *.CLS 일 경우에는 CSP Gateway에게 처리를 넘긴다. ③ C:\CacheSys\csp\bin\csp.ini 내용을 참조하여 Cache Server에게 처리내용을 전달한다. ④요청된 WEB 문서와 대응되는 해당 Class의 OnPage Method를 호출하여 그 결과를 HTTP Response로 CSP Gateway에게 전달한다. ⑤ HTTP Response를 WEB Server로 전달한다. ⑥ HTTP Response를 WEB Browser로 전달한다. HTTP Client Web Browser Internet Explorer 1 Web Server 6 Web Server IIS, Apache 2 CSP Gateway 5 C:\CacheSys\csp\bin\CSPms.dll 3 Caché Server 4 CSP Server %SYS의 %cspServer.obj
Web Architecture 비교 • CSP Architecture의 장점 • Caché 기반 웹 어플리케이션은 데이터와 가까운 Caché 서버 위에서 수행됩니다. 이것은 더욱 빠르게 수행되게 해주는데, 그 이유는 데이터를 가져오거나 변경하는데 필요한 모든 프로세스간 통신을 없애주기 때문입니다. • 대부분의 자원 집중적(resource-intensive)인 작업들을 강력한 Caché 데이터 서버로 넘겨줌으로써 웹 서버가 더 많은 클라이언트를 다룰 수 있도록 자유롭게 해 줌으로써, 확장성이 향상됩니다. • 모든 코드가 한 장소에 있게 되므로, 더욱 쉽고 빠르게 Caché 기반 e-어플리케이션을 전개하고 적용할 수 있게 해 줍니다.
CSP Configuration • Web Server에 Installation Files (IIS 일 경우) (※) Configuration 파일 (CSP.ini)과 event log 파일(CSP.log) 도 이곳에 저장됨. • Configuration • IIS Manager (Web Server에서 설정) • 가상디렉토리 정의 • 권한설정( ‘read’‘execute’) • *.cls, *.csp 문서에 대한 CSPms.dll 파일 연결 • CSP Gateway Manager (Web Server에서 설정) • http://localhost/csp/bin/cspmssys.dll로 연결하여 설정 (결과는 csp.ini 파일로 저장됨) • CSP Server Configuration (Caché Server에서 설정) • Caché 환경설정관리자/CSP 탭 에서 설정 (결과는 cache.cpf 파일로 저장됨)
CSP Application 개발 방법 • The CSP Samples • http://localhost:1972/csp/samples/menu.csp • The CSP Tutorial • Building Web Applications With Caché ( http://127.0.0.1:1972/csp/docbook/DocBook.UI.Page.cls?KEY=TWEB_preface ) • CSP Application 개발 방법 (방법1) Class-Based Development (방법2) HTML File-Based Development Class Test.Hello Extends %CSP.Page [ ProcedureBlock ] { ClassMethod OnPage() As %Status { Write “<html>” Write “ <head>/head>” Write “ <body>” Write “ <b>Hello !!</b>” Write “ </body> Write “</html>” Quit $$$OK } } <html> <body> <b>Hello!!</b> <script language="CACHE" runat="server"> Write "<ul>",! For i = 1:1:10 { Write "<li> This is item ", i,! } Write "</ul>",! </script> </body> </html> Caché Studio-> Class 생성->편집->저장 Caché Studio->CSP 생성->편집->저장 (이렇게 저장된 csp 파일은 Compile과정을 거처 내부적으로 Class로 변환됨)
%CSP.Page class • CSP 란? • CSP Architecture • Web Architecture 비교 • CSP Configuration • CSP Application 개발 방법
Class parameters • class parameter 목록 • parameter CHARSET • parameter CONTENTTYPE • parameter CSPFILE • parameter CSPURL • parameter DOMAIN • parameter ENCODED [= 0] • parameter ERRORPAGE • parameter EXPIRES • parameter NOCHARSETCONVERT • parameter PAGETIMING [= 1] • parameter PRIVATE [= 0] • parameter TIMINGSLOTS [= 48]
final classmethod • Final classmethod 목록 • final classmethod %ClassName(fullname As %Boolean = 0) returns %String • final classmethod %PackageName() returns %String • final classmethod ConvertParameter(url As %String, ByRef name As %String, ByRef value As %String) returns %Status • final classmethod Decrypt(data As %String) returns %Binary • final classmethod Encrypt(data As %Binary) returns %String • final classmethod EscapeHTML(in) returns %String • final classmethod EscapeURL(in) returns %String • final classmethod HyperEventBody() returns %String • final classmethod HyperEventCall(methodName As %String, args As %String, type As %Integer = 0) returns %String • final classmethod HyperEventFrame() returns %String • final classmethod HyperEventHead(iframeOnly As %Boolean) returns %String • final classmethod Include(url As %String) returns nothing. • final classmethod InsertHiddenField(url As %String, name As %String, value As %String, extra As %String = "") returns %String • final classmethod InsertHiddenFields(url As %String, ByRef query As %String) returns %String • final classmethod Link(link As %String, ByRef query As %String, addQ As %Boolean = 0) returns %String • final classmethod QuoteJS(in) returns %String • final classmethod RewriteURL(url As %String) returns %String • final classmethod UnescapeHTML(in) returns %String • final classmethod UnescapeURL(in) returns %String
final classmethod • classmethod 목록 • classmethod IsPrivate() returns %Boolean • classmethod OnPage() returns %Status • classmethod OnPreHyperEvent() returns %Status • classmethod Page(skipheader As %Boolean = 1) returns %Status • classmethod ShowError(sc As %Status) returns nothing. • classmethod StartTimer(name As %String) returns nothing. • classmethod StopTimer(name As %String) returns nothing.
final classmethod • abstract classmethod 목록 • abstract classmethod OnHTTPHeader(ByRef OutputBody As %Boolean) returns %Status • abstract classmethod OnPostHTTP() returns nothing • abstract classmethod OnPreHTTP() returns %Boolean