해변(소프트웨어)

Seaside (software)
해변
Seaside logo
해변 로고
Seaside-development.png
개발 모드의 웹 응용 프로그램 스크린샷
개발자바닷가[1]
초기 릴리즈2002년; 20년 전(2002년)
안정된 릴리스
3.4.4 / 2021년 2월 7일; 18개월 전(2021-02-07)[2]
저장소
기입처스몰토크
운영 체제크로스 플랫폼
플랫폼IA-32, x86-64, ARM
이용가능기간:영어
유형웹 프레임워크
면허증.MIT
웹 사이트www.seaside.st Edit this on Wikidata

Seaside는 "Squeak Enterprise Aubergines Server with Integrated Development Environment"의 약자인 컴퓨터 소프트웨어이며, 프로그래밍 언어 Smalltalk로 웹 애플리케이션을 개발하기 위한프레임워크입니다. 소프트웨어는 MIT 라이선스에 따라 무료 오픈 소스 소프트웨어로 배포됩니다.

Seaside는 웹 페이지가 각각 페이지의 작은 부분을 캡슐화하는 개별 상태 저장 구성요소의 트리로 구축되는 구성요소 아키텍처를 제공합니다.Seaside는 연속성을 사용하여 서로 다른 [3]구성요소 간의 여러 독립 흐름을 모델링합니다.따라서 Smalltalk의 일부 구현의 실행 스택을 조작할 수 있는 능력에 기반한 연속 기반 웹 프레임워크입니다[4].

주요 기능

Seasiday의 연속 이행은 2002년 출시 이후 처음 몇 년간의 존재에 대한 관심의 대상이었다.속행은 롤백 및 재개를 위한 메커니즘을 제공합니다.이것은 새로 고침 버튼과 뒤로 버튼이 처리 흐름을 방해할 수 있는브라우저 환경에 유용한 프로비저닝입니다.이를 통해 웹 브라우저의 '뒤로' 및 '앞으로' 버튼을 사용하더라도 서버 측 상태를 적절하게 유지하는 등 웹 응용 프로그램 실행 시 발생하는 많은 일반적인 문제가 해결됩니다.계속 서버를 사용하면 개발자는 확장 가능한 방법으로 [5]서버 상태를 유지할 수 있습니다.2002년 이후 JavaScript의 웹 브라우저 구현이 개선됨에 따라 클라이언트 브라우저가 상태를 더 잘 추적할 수 있게 됨으로써 Seaside의 연속성 측면은 덜 중요해졌다.

Seaside의 특징은 애플리케이션 내에서 개발 도구에 대한 액세스와 디버깅 지원을 제공하는 통합 개발 환경입니다.개발 모드에서는 처리되지 않은 오류가 웹 페이지에 보고됩니다.개발자는 웹 페이지에서 직접 프로그램 코드 및 상태에 액세스하여 변경할 수 있으므로 통합 개발 환경(IDE)[6] 내에서 버그를 식별하고 수정할 수 있습니다.

Seaside 어플리케이션은 상호작용하는 컴포넌트 세트입니다.각 페이지는 페이지 보기에 걸쳐 상태를 저장하며 HTML 스트림에 렌더링할 수 있습니다.따라서 컴포넌트를 한 번 작성한 후 어플리케이션의 다른 곳에서 재사용하는 것은 간단합니다.Seaside는 또한 프로그래머가 구성요소 상호 작용의 높은 수준의 논리를 설명할 수 있도록 하는 태스크의 개념을 지원합니다.

Seaside는 템플릿 지향적이지 않으며 HTML 템플릿을 생성하거나 사용하는 것을 제공하지 않습니다. HTML 마크업은 프로그래밍 방식으로 생성됩니다(Seaside 기반의 Pier 콘텐츠 관리 프레임워크는 템플릿을 위한 wiki-markup 구문을 제공합니다).Seaside는 폐쇄 콜백을 사용하여 링크를 클릭하거나 양식을 제출할 때 수행할 액션을 지정합니다.Seaside의 개발자와 사용자들은 이것이 컨텐츠와 프레젠테이션(캐스케이딩 스타일시트(CSS))[7]에서 구조(마크업)를 분리하는 데 도움이 된다고 주장한다.Seaside의 구성요소, 콜백 및 폐쇄 조합은 복잡한 워크플로우와 코드 [8]표현 사이의 의미적 차이를 크게 줄일 수 있다.

Seaside는 script.aculo.us 및 jQuery와의 통합을 통해 Ajax를 지원합니다.Seaside는 Comet 스타일의 서버 푸시 [9]기술도 지원합니다.Seaside는 Smalltalk 기반 웹 서버 구현 또는 Smalltalk 이외의 웹 서버 구현(Nginx, Apache)과 함께 사용할 수 있습니다.

철학

지난 몇 년간 웹 개발 분야에서 다음과 같은 몇 가지 모범 사례가 널리 받아들여지고 있습니다.

  • 가능한 한 상태를 적게 공유합니다.
  • 깨끗하고 신중하게 선택된 의미 있는 URL을 사용합니다.
  • 템플릿을 사용하여 모델을 프레젠테이션에서 분리합니다.

해변은 의도적으로 이 모든 규칙들을 어긴다.Avi Bryant는 이것을 '이단적인' 프레임워크라고 표현한다.그는 웹 개발의 통념에 대한 신중하고 합리적인 거절이 웹 애플리케이션을 [10]개발하는 데 매우 효과적인 모델로 이어졌다고 주장한다.

포트

Seaside의 주요 개발은 Pharo Smalltalk에서 [11]구현됩니다.다른 Smalltalk 방언용 포트가 있습니다.Seaside의 최초 개발은 2000년대 초에 Squak에서 이루어졌다.Michel Bany는 Seaside 버전 2.7을 통해 VisualWorks에 포트를 구현했습니다.Cincom Systems는 2008년 초에 VisualWorks의 일부로 Seaside를 지원합니다.Instantiations는 2009년에 VAST(VA Smalltalk) Platform 버전 8.0에서 Seaside 지원을 발표했습니다.VAST Platform은 최신 버전을 통해 Seaside를 계속 지원하고 있습니다.Esteban Maringolo는 2.8 포트와 Dolphin [12]Smalltalk X6용 기타 애드온(script.aculo.us 등)을 유지 보수했습니다.Gemstone Systems는 Gemstone/[13]S 포트를 구현했습니다.GemStone용으로 [14]2.8 포트가 완성되었으며 3.0의 예비 버전은 GNU Smalltalk 3.0a 이후에 [15]실행됩니다.

비판

  • 다른프레임워크에 비해 Seaside는 메모리 집약적입니다.1개의 세션에 수백 킬로바이트의 RAM이 축적될 수 있습니다.이후 릴리스 버전 2.8에서는 이 사이즈가 대폭 축소되었습니다(예: 이전에는 일반적인 200KB 사이즈가 50KB가 됩니다).
  • Seaside는 기본적으로 Representational State Transfer(REST; 대표 상태 전송)를 따르지 않습니다.대신 Uniform Resource Locator(URL; 유니폼리소스 로케이터)는 세션키 정보를 보유하고 있어 의미 있는 URL을 명시적으로 생성해야 합니다.

이를 이용한 오픈 소스 프로젝트

많은 오픈 소스 프로젝트에서 Seaside를 사용하고 있으며, 그 중 일부는 다음과 같습니다.

  • Magritte – Seaside와 긴밀하게 통합된 메타 기술 프레임워크
  • Pier – Seaside용 콘텐츠 관리 시스템 및 고급 애플리케이션 프레임워크
  • ADK 프로젝트

이를 이용한 독자 프로젝트

많은 독점 프로젝트가 Seaside를 사용하고 있으며, 그 중 일부는 다음과 같습니다.

  • Dabble DB – 웹 기반 데이터베이스 애플리케이션[16]
  • Cmsbox – netstyle.ch에 의해 스위스 시장용으로 제공되는 콘텐츠 관리 시스템(CMS).

「 」를 참조해 주세요.

레퍼런스

  1. ^ 바닷가 팀
  2. ^ "Releases · SeasideSt/Seaside". GitHub.
  3. ^ Seaside – 다중 제어 흐름 웹 애플리케이션 프레임워크
  4. ^ IBM DeveloperWorks: 국경을 넘나드는: Continuations, Web 개발, Java 프로그래밍
  5. ^ Seaside: 다이내믹 웹 애플리케이션 구축을 위한 유연한 환경
  6. ^ Seaside 어플리케이션 디버깅
  7. ^ Avi Bryant는 Seaside가 템플릿을 사용하지 않는 이유를 설명합니다.
  8. ^ 웹 애플리케이션 프레임워크: 비교 연구
  9. ^ 스크린캐스트:바닷가 혜성 채팅 어플리케이션
  10. ^ "'Web Heresies: The Seaside Framework' Session notes, OSCON 2006". Archived from the original on 2014-08-30.{{cite web}}: CS1 maint: bot: 원래 URL 상태를 알 수 없습니다(링크).
  11. ^ "Seaside 2.9는 현재 Pharo에 구현되어 있으며 레퍼런스 구현으로 사용됩니다."
  12. ^ Seaside for Dolphin Smalltalk 블로그
  13. ^ Seaside2.6g
  14. ^ 씨사이드 2.8
  15. ^ Seaside는 GNU Smalltalk, GNU Smalltalk FAQ에서 실행됩니까?
  16. ^ Wayback Machine에서의 InfoWorld Archived 2007-02-12의 Jon Udell 기사

외부 링크