→ web service, web resources, web APIs를 포함하는 Web app개발을 지원하기 위해 만들어진 소프트웨어 프레임워크
- Web Framework를 사용하면 Dynamic Web Page 개발을 위해 필요한 작업들을 손쉽게 수행할 수 있음
Web Framework의 등장배경
- 1993년, user input 반영 등과 같이 사용자와 상호작용 가능한 dynamic page를 제공하기 위해서, 웹 서버에서 외부 app을 사용하기 위해 도입됨
- 하지만, CGI는 각각의 요청이 독립된 Process로 동작하기 때문에, 많은 user request가 있을 시 서버에 부하가 컸음
- 1995년, 서버와 언어가 완전히 통합된(language specific한 서버) 개발환경이 처음 등장하고, CodFusion, PHP와 같은 새로운 웹 관련 언어가 도입됨
- 위와 같이 dynamic web page를 만들기 위한 언어들이 일반적인 task해결을 위한 libs들이 있긴 했지만, 작업을 위해선 더욱 다양한 종류의 libs들이 필요했음
- 그래서 1990년대 후반에, 웹 개발에 유용한 많은 libs들을 개발자가 사용할 수 있는 "full stack" 프레임워크들이 등장하기 시작함
- 예시
- JAVA EE(Servlet, JSP,...)
- ASP.NET
- Django
- Ruby on Rails
- Laravel
- Spring MVC
- ...
- 예시
Framework 아키텍쳐의 유형
MVC(Model-Veiw-Controller)
- 대부분의 프레임워크들은 MVC 아키텍쳐 패턴을 따름
- MVC 패턴의 중심 컴포넌트
- app의 유저 인터페이스에 독립적인 dynamic data scturcture 임
- conteroller로부터 user input을 받음
- model이 직접적으로 data, logic, app의 규칙들을 관리함. app의 data 관리에 책임이 있는 부분
- model의 정보를 특정 형식으로 그림
- 유저가 보는 화면
- user input에 응답하고 data model objects와 상호작용을 수행함
- user input을 validate하고 model에 넘겨줌
- Model
Push-based VS. Pull-based
Push-based(Action-based)
- 대부분의 웹 프레임워크는 push-based 아키텍쳐를 따름
- 필요한 작업을 수행하기 위해 action을 사용하고, 그 결과를 그리기 위한 view layer에 data를 "push" 함
- 대표적인 프레임워크
- Spring MVC, Django, Ruby on Rails, ...
Pull-based(Component-based)
- pull-based 아키텍쳐의 프레임워크들은 필요할 때 복수의 controller에서 결과를 "pull"할 수 있는 view layer에서 부터 시작함
- 하나의 view가 여러개의 controller를 포함할 수 있음
- 대표적인 프레임워크
- JBoss Seam, JavaServer Faces, Lift, ...
Three-tier 구조
- 웹 프레임워크는 client-server 소프트웨어 아키텍쳐 패턴인 Three-tier 아키텍쳐를 따름
- MVC 패턴과 다른 개념임
Three-tier Architecture
- Presentation tier
- data를 표현하고 유저와 상호작용하는 계층
- HTML, ...
- Logic(App, business, or middle) tier
- logic을 실행함으로써 app의 기능을 담당하는 계층
- Spring MVC, Node.js, ...
- Data tier
- data를 저장하고 관리하는 계층
- SQL, Maria DB, ...
Framework Applications 종류
- 프레임워크는 하나의 프로그래밍 언어에 기반하여 web 개발을 위한 문제 해결을 지원하기 위해 만들어짐
Server-side
- Spring MVC / node.js / Jenkins.js / Ruby on Rails, ...
Client-side
- React / Vue / Angular
- 참고: React는 프레임워크가 아닌, 라이브러리를 표방하기는 함
- 하지만 프레임워크와 라이브러리의 차이가 칼같이 discrete하기 어려워, 프레임워크에 포함시킴
Frameworks의 주요 특징
Inversion Of Control
- 추후 자세히 다룰 예정
Web Template System
- view 개발을 돕는 web template system(template engine + content resource + template resource) 존재
Caching
- bandwidth 사용량, server load, 사용자가 느끼는 '랙' 등을 줄이기 위해 web documents를 캐싱 가능
Security
- 일부 웹 프레임워크는 웹 서버가 app 사용자를 식별하고 정의된 기준에 따라 기능에 대한 액세스를 제한할 수 있는 authentication과 authorization 프레임워크와 함께 제공됨
Database Access, Mapping, Configuration
URL mapping
- url Rounting
AJAX
- Ajax(Asynchronous Javascript and XML) 기술 지원
Web Services
- 일부 프레임워크는 웹 서비스를 만들고 제공하기 위한 도구를 제공
Web Resources
- 많은 수의 Web 2.0 RESTful 프레임워크들는 현재RDF(Resource Description Framework)의 개념을 기반으로 일종의 Semantic Webontology에서 리소스 모음을 구축하기 위한 리소스 지향 아키텍처(ROA) 인프라를 제공
출처
Model-view-controller - Wikipedia
Multitier architecture - Wikipedia
'Web' 카테고리의 다른 글
CGI(Common Gateway Interface)란? (0) | 2021.07.30 |
---|---|
Static VS Dynamic Page (0) | 2021.07.30 |
Web Server와 (Web) Application Server의 정의 (0) | 2021.07.29 |
mobile에서 pc의 localhost에 sw 설치, 코딩 없이 접근하기 (0) | 2021.07.14 |