웹 프레임워크
Web framework웹 서비스, 웹 자원, 그리고 웹 API를 포함한 웹 응용 프로그램의 개발을 지원하기 위해 설계되는 웹 프레임워크(WF)이나 웹 애플리케이션 프레임워크(공군 여군 부대)는 소프트웨어 프레임워크입니다.웹 프레임워큰 표준 방식의 배포하고 작성하는 월드 와이드 웹에 웹 응용 프로그램을 빌드 하는 데를 제공한다.웹 프레임워크를 공통적인 활동 웹 개발에서 공연과 관련된 자동화하는 데 목적이 있다.예를 들어, 많은 웹 체계 데이터베이스 접근,templating 틀과 세션 관리를 위해, 그리고 그들은 종종 코드 재사용을 촉진하다. 도서관을 제공한다.[1]비록 그들은 종종 동적 웹 사이트의 개발 대상으로 그들은 또한 정적 웹 사이트에 적용 가능하다.[2]
역사
월드 와이드 웹의 디자인은 본질적으로 역동적이지 않았기 때문에 초기 하이퍼텍스트는 웹 서버에 게시된 손으로 코딩된 HTML 텍스트 파일로 구성되었습니다.게시된 페이지를 수정하려면 페이지 작성자가 수정해야 합니다.1993년에는 사용자의 [3]입력을 반영하는 동적 웹 페이지를 제공하기 위해 외부 애플리케이션을 웹 서버와 인터페이스하기 위해 Common Gateway Interface(CGI; 공통 게이트웨이 인터페이스) 표준이 도입되었습니다.
그러나 CGI 인터페이스의 최초 실장은 각 요구가 개별 프로세스를 [4]시작했기 때문에 일반적으로 서버 로드에 악영향을 미칩니다.최근의 실장에서는, 서버 자원의 설치 공간을 삭감해, 일반적인 퍼포먼스의 [citation needed]향상을 실현하기 위해서, 다른 테크놀로지 중에서도 영속적인 프로세스를 이용하고 있습니다.
1995년에 완전히 통합된 서버/언어 개발 환경이 처음 등장했고 ColdFusion, PHP, Active Server [citation needed]Pages와 같은 새로운 웹 고유의 언어가 도입되었습니다.
동적 웹 페이지를 만들기 위한 대부분의 언어에는 공통 태스크를 지원하는 라이브러리가 있지만 웹 응용 프로그램에는 HTML(예: 자카르타 서버 페이스)[citation needed] 작성 등 특정 태스크에 특정 라이브러리가 필요한 경우가 많습니다.
1990년대 후반에는 성숙하고 "풀 스택" 프레임워크가 등장하기 시작했습니다.이 프레임워크는 종종 웹 개발에 유용한 여러 라이브러리를 하나의 통합 소프트웨어 스택으로 모아 웹 개발자가 사용할 수 있도록 했습니다.그 예로는 ASP가 있습니다.NET, Java EE, WebObjects, web2py, OpenACS, Catalyst, Mojolicious, Ruby on Rails, Laravel, Grails, Django, Zend Framework, Sails.js, Yi,[5] CakePHP [6]및 Symfony.[citation needed]
프레임워크 시스템의
대부분의 웹 프레임워크는 모델 뷰 컨트롤러([citation needed]MVC) 패턴을 기반으로 합니다.
Model–view–controller(MVC)
많은 프레임워크가 MVC 아키텍처 패턴을 따라 데이터 모델을 비즈니스 규칙(컨트롤러)과 사용자 인터페이스(뷰)로 구분합니다.이것은 일반적으로 코드를 모듈화하고, 코드 재사용을 촉진하며, 여러 인터페이스를 적용할 수 있기 때문에 좋은 프랙티스로 간주됩니다.웹 어플리케이션에서는 이를 통해 모바일브라우저와 데스크톱브라우저에 대해 다른 웹 페이지를 제공하거나 기계에서 읽을 수 있는 웹 서비스 인터페이스를 제공하는 등 다양한 뷰를 표시할 수 있습니다.
Push-based와 장 pull-based
대부분의 MVC 프레임워크는 "액션 기반"이라고도 불리는 푸시 기반 아키텍처를 따릅니다.이러한 프레임워크는 필요한 처리를 수행하는 작업을 사용하여 데이터를 뷰 계층에 "푸시"하여 [7]결과를 렌더링합니다.Django, Ruby on Rails, Symfony, Spring MVC, Stripes, Sails.js, CodeIgniter[8] 등이 이 아키텍처의 좋은 예입니다.이에 대한 대안으로 "컴포넌트 기반"이라고도 하는 풀 기반 아키텍처가 있습니다.이러한 프레임워크는 뷰 레이어에서 시작하여 필요에 따라 여러 컨트롤러에서 결과를 "풀"할 수 있습니다.이 아키텍처에서는 여러 컨트롤러를 단일 뷰에 포함할 수 있습니다.Lift, Tapestry, JBoss Seam, Jakarta Server Faces 및 Wicket은 풀 기반 아키텍처의 예입니다.Play, Struts, RIFE 및 ZK는 푸시 기반 및 풀 기반 애플리케이션컨트롤러 [citation needed]콜을 모두 지원합니다.
Three-tier 조직
3계층 조직에서는 애플리케이션이 클라이언트, 애플리케이션 및 [9][10][11][12]데이터베이스라는3개의 물리 계층으로 구성되어 있습니다.데이터베이스는 보통 RDBMS입니다.애플리케이션에는 비즈니스 로직이 포함되어 서버에서 실행되며 [13]HTTP를 사용하여 클라이언트와 통신합니다.웹 응용 프로그램의 클라이언트는 응용 프로그램 [14][15]계층에서 생성된 HTML을 실행하는 웹 브라우저입니다.이 용어는 MVC와 혼동해서는 안 됩니다.MVC에서는 3계층 아키텍처와 달리 컨트롤러인 "중간층"[16][17]에서 비즈니스 로직을 멀리하는 것이 좋습니다.
Framework응용 프로그램
프레임워크는 특정 언어의 기능을 강화하는 Zend Framework 및 Ruby on Rails와 같은 범용 도구에서 특정 사용자 애플리케이션을 중심으로 구축된 네이티브 언어 프로그래밍 가능 패키지(예: cont)에 이르기까지 단일 프로그래밍 언어에 기반한 인터넷 애플리케이션 구축을 지원하기 위해 구축되었습니다.ent 관리 시스템, 일부 모바일 개발 도구 및 일부 포털 도구.[18]
범용 웹 사이트에 대한 프레임워크
웹 프레임워크는 브라우저 및 프로토콜(예: 상태 비저장)의 아키텍처 규칙에 따라 작동해야 합니다.웹 페이지는 서버에 의해 제공되며 브라우저에서 JavaScript를 사용하여 수정할 수 있습니다.어느 쪽이든 장점과 [citation needed]단점이 있습니다.
서버측의 페이지를 변경하는 경우는, 통상, 페이지를 갱신할 필요가 있습니다만, 어떠한 언어도 사용할 수 있어 처리 능력이 향상됩니다.클라이언트측의 변경에 의해, 페이지를 데스크탑 애플리케이션이라고 하는 느낌의 작은 덩어리로 갱신할 수 있습니다만, JavaScript 에 한정되어 유저의 브라우저로 실행할 수 있기 때문에, 처리 능력이 제한되는 경우가 있습니다.일반적으로 두 가지 조합이 사용됩니다.[19]JavaScript를 많이 사용하고 페이지의 일부만 새로 고치는 응용 프로그램을 단일 페이지 응용 프로그램이라고 하며 일반적으로 클라이언트 측 JavaScript 웹 프레임워크를 사용하여 [citation needed]코드를 구성합니다.
서버 사이드
- 아파치 위켓
- ASP.NET 코어
- 케이크 PHP
- 촉매
- 코드 시그니터
- CppCMS
- 장고
- 플라스크
- Jam.py
- Yii
- 라라벨
- 모고리우스
- Ruby on Rails(레일의 루비)
- 돛.js
- 심포니
- 봄 MVC
- 표시하다
- WT(Web 툴킷)
- Zend 프레임워크[20]
클라이언트 사이드
예를 들어 Backbone.js, AngularJs, Angular, EmberJS, ReactJs, jQuery UI, Svelte 및 Vue.js [21]등이 있습니다.
토론 포럼, 위키와 웹 로그.
- WikiBase/WikiWikiWeb[citation needed]
특징들
프레임워크는 일반적으로 프로그램의 제어 흐름을 설정하고 프레임워크 사용자가 다양한 이벤트를 [22]노출함으로써 해당 흐름에 "연결"할 수 있도록 합니다.이 "제어 반전" 설계 패턴은 프레임워크의 정의 원칙으로 간주되며, 모든 사람이 유사한 방법으로 [22]맞춤화할 수 있는 팀에 공통 흐름을 적용함으로써 코드에 도움이 됩니다.예를 들어, Ruby's Sinatra(Express.js에 영감을 준)와 같은 일부 인기 있는 "마이크로프레임웍스"는 HTTP 요청 전후에 "미들웨어" 후크를 허용합니다.이러한 미들웨어 함수는 어떤 것이든 가능하며 사용자는 로깅, 인증 및 세션 관리 및 [23]리다이렉트를 정의할 수 있습니다.
웹 템플릿 시스템
캐싱
웹 캐싱은 대역폭 사용량, 서버 부하 및 인식된 "지연"을 줄이기 위해 웹 문서를 캐싱하는 것입니다.웹 캐시는 웹 캐시를 통과하는 문서의 복사본을 저장하므로, 특정 조건이 충족될 경우 이후 요청이 캐시에서 처리될 수 있습니다.일부 응용프로그램 프레임워크는 문서를 캐시하고 데이터베이스 액세스 또는 템플리트 [citation needed]해석과 같은 페이지 준비의 다양한 단계를 건너뛰는 메커니즘을 제공합니다.
보안.
일부 웹 프레임워크에는 인증 및 인가 프레임워크가 포함되어 있어 웹 서버가 애플리케이션 사용자를 식별하고 정의된 기준에 따라 기능에 대한 액세스를 제한할 수 있습니다.Drupal은 페이지에 대한 역할 기반 액세스를 제공하는 하나의 예이며 사용자를 만들고 역할을 [citation needed]할당하기 위한 웹 기반 인터페이스를 제공합니다.
데이터베이스 액세스, 매핑 및 구성
많은 웹 프레임워크가 데이터베이스 백엔드에 통합 API를 생성하여 웹 애플리케이션이 코드 변경 없이 다양한 데이터베이스로 작업할 수 있도록 하고 프로그래머가 보다 높은 수준의 개념을 사용할 수 있도록 합니다.또한 일부 객체 지향 프레임워크에는 객체를 튜플에 [24]매핑하는 객체 관계 매핑을 제공하는 매핑 도구가 포함되어 있습니다.
일부 프레임워크에서는 Introspection 사용 및/또는 잘 알려진 규칙을 준수하여 웹 응용 프로그램 구성을 최소화합니다.예를 들어, 많은 Java 프레임워크는 Hibernate를 지속 레이어로 사용합니다.이것은 필요한 정보를 유지할 수 있는 데이터베이스 스키마를 런타임에 생성할 수 있습니다.이를 통해 애플리케이션 설계자는 데이터베이스 스키마를 명시적으로 정의하지 않고도 비즈니스 객체를 설계할 수 있습니다.Ruby on Rails와 같은 프레임워크는 반대로 작동할 수도 있습니다. 즉, 데이터베이스 [24]스키마를 기반으로 런타임에 모델 객체의 속성을 정의합니다.
웹 프레임워크가 제공하는 기타 기능으로는 트랜잭션[25] 지원 및 데이터베이스 마이그레이션 [24]도구가 있습니다.
URL 매핑
프레임워크의 URL 매핑 또는 라우팅 기능은 프레임워크가 URL을 해석하는 메커니즘입니다.Drupal 및 Django 등의 프레임워크에서는 제공된 URL을 정규 표현을 사용하여 미리 결정된 패턴과 대조하고 있습니다.또 다른 프레임워크에서는 제공된 URL을 기본 엔진이 인식할 수 있는 패턴으로 변환하는 개서 기술을 사용하고 있습니다.또 다른 기술은 Zope에서 사용하는 그래프 트래버설입니다.여기서 URL은 (모델과 뷰의)[citation needed] 객체 그래프를 통과하는 단계에서 분해됩니다.
패턴 매칭 또는 개서를 사용하여 요청을 라우팅 및 처리하는 URL 매핑 시스템은 보다 짧은 "친절한 URL"을 사용할 수 있도록 하여 사이트의 단순성을 높이고 검색 엔진에 의한 더 나은 인덱싱을 가능하게 합니다.예를 들어, "/page.cgi?cat=science&cat=cat=science=cat"로 끝나는 URL을 단순히 "/page/science/cat"로 변경할 수 있습니다.이를 통해 URL을 기억, 읽기 및 쓰기가 쉬워지고 검색 엔진에 사이트의 구조 레이아웃에 대한 더 나은 정보를 제공합니다.그래프 트래버설접근법에서도 친근한 URL이 작성되는 경향이 있습니다."/page/science"와 같은 짧은 URL은 기본적으로 존재하는 경향이 있습니다. 이는 단순히 "/page/science/physics"[citation needed]에 대한 긴 트래버스의 짧은 형식이기 때문입니다.
에이잭스
Ajax는 "Asynchronous JavaScript and XML"의 줄임말로 웹 응용 프로그램을 만들기 위한 웹 개발 기술입니다.그 목적은 사용자가 변경을 요구할 때마다 웹 페이지 전체를 새로고침할 필요가 없도록 소량의 데이터를 백그라운드에서 교환함으로써 웹 페이지의 응답성을 높이는 것입니다.이는 웹 페이지의 대화성, 속도, 유지 보수성 및 [26]사용성을 높이기 위한 것입니다.
JavaScript에서는 Ajax 프로그래밍이 복잡하기 때문에 Ajax 지원만을 다루는 수많은 Ajax 프레임워크가 있습니다.일부 Ajax 프레임워크는 더 큰 프레임워크의 일부로 내장되어 있습니다.예를 들어 jQuery JavaScript 라이브러리는 Ruby on [citation needed]Rails에 포함되어 있습니다.
"Web 2.0" 리치 웹 애플리케이션 개발에 대한 관심이 높아지면서 Ajax와 JavaScript에서 직접 프로그래밍하는 것의 복잡성이 너무 뚜렷해져서 개발자들이 Java, Python, Ruby와 같은 고급 언어로 코딩할 수 있도록 컴파일러 기술이 개입했습니다.첫 번째 컴파일러는 Morfik이었고 구글 웹 툴킷은 Pyjs와 RubyJs의 형태로 Python과 Ruby에 대한 포트가 그 뒤를 이었다.이러한 컴파일러와 관련 위젯 세트 라이브러리는 리치 미디어 Ajax 응용 프로그램의 개발을 데스크톱 [citation needed]응용 프로그램 개발의 개발보다 훨씬 더 유사하게 만듭니다.
웹 서비스
일부 프레임워크는 웹 서비스를 만들고 제공하기 위한 도구를 제공합니다.이러한 유틸리티는 다른 웹 [27]응용 프로그램과 유사한 도구를 제공할 수 있습니다.
웹 리소스
많은 새로운 Web 2.0 RESTful 프레임워크는 현재 Resource Description Framework(RDF;[citation needed] 자원 기술 프레임워크)의 개념을 기반으로 일종의 시맨틱 웹 온톨로지 내에서 자원 컬렉션을 구축하기 위한 자원 지향 아키텍처(ROA) 인프라스트럭처를 제공하고 있습니다.
「 」를 참조해 주세요.
- JavaScript 기반 웹 프레임워크 비교(클라이언트 측)
- 서버측 웹 프레임워크 비교
- 응용 프로그램 서버
- 응용 프로그램 프레임워크
- 응용 프로그램 보안
- 구성에 대한 규칙
- 반복하지 마세요(DRY)
- 웹 서비스 프레임워크 목록
- 리치 웹 애플리케이션(구식)
- 솔루션 스택
- 모바일 개발 프레임워크
레퍼런스
- ^ Multiple (wiki). "Web application framework". Docforge. Archived from the original on 2015-07-23.
- ^ "Top Open-Source Static Site Generators". StaticGen.
- ^ "CGI: Common Gateway Interface". Archived from the original on 2009-04-09.
- ^ "CGI". www.ibm.com. Retrieved 2021-05-07.
- ^ "Yii PHP Framework".
- ^ "CakePHP".
- ^ Thomson, Kris (2003-10-29). "Clarification on MVC= Pull and MVC Push". Retrieved 2007-07-29.
- ^ "What are the fundamental differences between Struts and JSF". Struts.apache.org. 2011-02-14. Retrieved 2013-06-14.
- ^ Microsoft. "Three-tiered distribution". Retrieved 2011-09-19.
- ^ Oracle. "clustering_concepts_10en" (PDF). Retrieved 2011-09-19.
- ^ Robert R. Perkoski. "Introduction to Web Development". Archived from the original on 2013-11-07.
- ^ IBM. "Using Client Access Express in a three tier environment". Retrieved 2011-09-19.
- ^ Oracle. "Understanding the Three-Tier Architecture". Retrieved 2011-09-19.
- ^ Microsoft. "Pragmatic Architecture: Layering". Retrieved 2011-09-19.
- ^ Arokia. "3-Tier Web Architecture". Retrieved 2011-09-19.
- ^ "ASP.NET MVC Controller Best Practices". Archived from the original on 2011-10-11. Retrieved 2011-09-19.
- ^ Jamis Buck. "Skinny Controller, Fat Model". Archived from the original on 2015-05-16.
- ^ "Getting Started With Web Frameworks". Wired Magazine. Retrieved 2018-04-02.
- ^ KLIMUSHYN, Mel (6 April 2015). "Web Application Architecture – Client-Side vs. Server-Side". Atomic Spin. Retrieved 2016-03-06.
- ^ "Home - Zend Framework". framework.zend.com. Retrieved 2020-02-09.
- ^ "AngularJS vs. Backbone.js vs. Ember.js". www.airpair.com. Retrieved 2016-06-04.
- ^ a b Fowler, Martin. "bliki: InversionOfControl". martinfowler.com. Retrieved 2016-03-06.
- ^ Xue, Qiang. "Capital One Engineering – Philosophies that Shaped Successful Frameworks". www.capitalone.io. Retrieved 2016-03-06.
- ^ a b c "Active Record Basics". Ruby on Rails. Retrieved March 20, 2021.
Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.
- ^ "Active Record Transactions". Ruby on Rails. Retrieved March 20, 2021.
- ^ "What is AJAX". www.dlsweb.rmit.edu.au. Retrieved 2021-05-07.
- ^ Maximilien, E.M. (December 19, 2006). "Web Services on Rails: Using Ruby and Rails for Web Services Development and Mashups". IEEE Xplore. Chicago. doi:10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.