📌client/server 환경의 이해
정보시스템의 구성 요소와 정보를 요청하는 클라이언트와 정보를 제공하는 서버로 분리하는 네트워크 아키텍처가 등장했는데 이를 클라이언트/서버 아키텍처라 한다.
(1) Client/Server 아키텍처 구성요소
* presentation Rules : 사용자 인터페이스를 담당(User Interface)
* Application logic(Business Rules) : 업무 프로세스(Business process)를 정의
* Data Access Rules : Data Service 를 담당하는 영역에 access 담당
W.S(웹서버, 정적컨텐츠)
웹브라우저의 요청을 받아 그에 따른 결과(응답)을 웹브라우저에 전송
주로 정적인 HTML, 이미지, CSS, 자바스크립트 파일을 웹브라우저에 제공할 때사용
주요제품) Apache,IIS 등
W.A.S(웹어플리케이션서버, 동적컨텐츠)
게시글 목록, 로그인 처리와 같은 기능, 즉 로직을 실행(처리)하고, 그 결과를 응답으로 웹 서버에 전달
1.로우데이터 확보(dao)
2.인포메이션화(service)
3.언어화시켜 컨텐츠로 만듬(view)/controller: 클라이언트의 요구사항분석
주요제품) Tomcat, Jeus 등
W.A.S가 필요한 이유
1 개발환경 상에서 없는 api를 빌려쓰기 위해
2 클라이언트가 언제 어디서 요청을 보낼지 몰라서 24시간 대기할 수 있는 80번 포트를 대기할 수 있는 상태로 한다
(특정포트 감시)
3 백그라운드에서 동작할 수 있는 어플리케이션을 운영하다가 관련 요청이 들어오면 서비스를 제공한다(=컨테이너)
* Client/Server 시스템 관련 용어
용어 | 정의 |
클라이언트 | 서버가 제공하는 서비스를 요청하고, 서버로부터 반환되는 응답을 사용자에게 맞는 적절한 방식으로 표현하는 기능을 가진 프로그램이나 시스템 |
서버 | 클라이언트에게 네트워크를 통해 서비스를 제공하는 프로그램이나 시스템 |
프로토콜 | 정보기기 사이에서 정보교환이 이루어질 경우, 통신규칙 및 방법에 대한 규약 |
TCP/IP | 패킷 통신 방식의 프로토콜인 IP와 전송조절 프로토콜인 TCP로 구성된 전송 규약 |
HTTP | Hyper Text Transfer Protocol는 웹상에서 정보를 주고받기 위해 정의된 규약으로 주로 HTML문서의 송수신을 위해 사용, 클라이언트와 서버사이의 직접적인 요청과 응답 처리를 위한 프로토콜이라 할 수 있다. |
미들웨어 | 분산 컴퓨팅 환경에서 서로 다른 기종의 하드웨어나 프로토콜, 통신환경 등을 연결하여, 응용프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어 |
1. 서블릿이란?
- HTTP protocol 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속하여 개발하며, Servlet은 컨테이너에 의해서 실행되고 관리된다.
- HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
- 서블릿은 외부 요청마다 프로세스보다 가벼운 스레드로써 응답한다.
2. JSP와 서블릿의 차이점
기능의 차이는 없고 컨테이너의 역할의 차이만 있다.
- JSP : HTML 문서 안에 java 코드를 포함하고 있다. MVC에서 View 역할
- 서블릿 : 자바 코드 안에 HTML을 포함하고 있다. 주로 MVC에서 컨트롤러 역할
3. 서블릿 컨테이너(톰캣 등)란?
- HTTP 요청을 받아서 Servlet을 실행하고 생명주기를 관리하는 역할을 한다.
- servlet과 웹서버가 통신할 수 있는 방법을 제공
- 멀티 스레딩을 지원하여 클라이언트의 다중 요청을 알아서 처리
4.JSP 컨테이너(톰캣 등)란?
JSP를 서블릿으로 변환하는 프로그램
- JSP 컨테이너 역시 서블릿으로 구현된 프로그램
- JSP 컨테이너가 JSP 파일을 서블릿 소스로 변환할 때의 기본 스펙은 컨테이너마다 동일하며, 상속관계나 생성되는 서블릿 클래스명만 다르게 생성된다
JSP 컨테이너는 JSP 파일을 서블릿 소스로 변환 및 컴파일까지만 담당하는 프로그램이며,
변환된 서블릿의 수행은 서블릿 컨테이너가 담당
5. 서블릿과 JSP의 특징
Servlet
Java 코드 안에 HTML 코드 (하나의 클래스)
data processing(Controller)에 좋다.
즉 DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이 트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)
JSP
HTML 코드 안에 Java 코드
presentation(View)에 좋다.
즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)
'웹기반 애플리케이션' 카테고리의 다른 글
JSP(Java Server Page)란? (0) | 2023.03.02 |
---|---|
자원의 종류와 식별 방법, URI(URL,URC,URN) (0) | 2023.02.27 |
서블릿(Servlet)이란? (0) | 2023.02.27 |
SOLID, MODEL1과 MODEL2의 차이 (0) | 2023.02.24 |
톰캣이란? (0) | 2023.02.21 |