sgcWebSockets 2026.10이 출시되었습니다. 이번 버전에는 두 가지 흐름이 있습니다. sgcHTML은 비즈니스 웹 애플리케이션에 필요한 부분들을 갖추어 더 이상 손으로 작성하지 않아도 되게 했고, 암호화는 외부 라이브러리를 단 하나도 추가하지 않고 포스트 퀀텀으로 전환했습니다.
웹 애플리케이션: 지루한 부분, 끝냈습니다
세션, 로그인, CSRF. 새로운 TsgcHTMLAuth 컴포넌트와 그 세션 저장소는 쿠키를 유지하고, 로그인과 로그아웃 요청에 응답하고, 유휴 세션을 종료하고, 실패한 로그인 시도를 제한합니다. CSRF 토큰은 meta 태그에 담겨 전달되고, htmx가 모든 요청에 알아서 이를 추가하며, 서버는 이를 가지고 있지 않은 post 요청을 거부합니다.
FAuth := TsgcHTMLAuth.Create(Self);
FAuth.SessionStore := TsgcHTMLSessionStore_Memory.Create(Self);
FAuth.CookieName := 'app_session';
FEngine.Auth := FAuth;
라우트처럼 읽히는 라우트. 경로 매개변수, 메서드 필터, 그리고 헤더, 쿠키, 본문에 대한 접근:
with FRouter.Routes.Add do
begin
Path := '/customers/{id}/edit';
Methods := [hrmGet, hrmPost];
RequireLogin := True;
RequireRoles := 'admin,sales';
end;
테스트할 수 있는 페이지. DispatchDirect는 뒤에 소켓이 전혀 없어도 요청에 응답하며, 새로운 유닛이 생성된 HTML을 읽어 id, 클래스, 태그, 속성으로 요소를 찾고 페이지를 저장된 사본과 비교하므로, 마크업의 의도치 않은 변경을 고객이 아니라 테스트가 알아차립니다.
애플리케이션처럼 느껴지는 내비게이션. 페이지는 전체 새로고침 없이 전환되며 스크롤 위치와 사용자가 입력하던 내용을 유지하고, 로딩 바, 연결이 끊겼을 때의 대화상자, 요청이 실패했을 때의 메시지를 제공합니다. 이 모든 것은 기본적으로 꺼져 있습니다.
네 가지 핵심 기능
이들 각각에는 별도의 글이 있고 마지막에 링크되어 있으니, 여기서는 그것이 무엇인지만 소개합니다:
- MCP Apps. 문단 대신 페이지로 응답하는 MCP 도구로, ChatGPT, Claude 또는 VS Code 안에서 렌더링되며, 다른 sgcHTML 페이지와 동일한 컴포넌트로 구성됩니다.
- AI 페이지 생성기. 페이지를 설명하거나 디자이너에게 스크린샷을 건네주면, 등록된 컴포넌트들로부터 승인하거나 폐기할 수 있는 후보를 만들어줍니다.
- CRUD 컴포넌트. TDataSet 위에서든 직접 작성한 SQL 위에서든, 목록, 검색, 페이징, 폼, 삭제, 그리고 한 데이터셋의 쓰기 경로를 IDE 마법사와 명령줄 생성기와 함께 제공합니다.
- AI Data Pack. grid, 데이터 테이블, 피벗에 평범한 언어로 질문할 수 있으며, API 키가 전혀 없어도 응답하는 규칙 기반 파서를 갖추고 있습니다.
Push, 두 가지 방식
Server sent events는 이제 WebSocket 대신 업데이트를 전달할 수 있으며, 연결이 끊긴 동안 놓친 내용을 다시 재생해주고, 일반 HTTP 서버에서도 동작합니다. Web Push는 닫혀 있는 브라우저에도 도달합니다. 여기에는 알림 수신함과 환경설정 테이블이 함께 제공되며, 알림 컴포넌트가 특정 사용자가 어떤 채널을 받을지 결정합니다.
AI: 곧바로 활용할 수 있는 답변
TsgcAIChat은 새로운 ChatJSON 메서드를 통해 OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok, Mistral에서 사용자가 제공한 스키마를 따르는 JSON을 요청할 수 있으며, 이 메서드는 응답을 파싱하고 읽을 수 없을 경우 파싱 오류를 첨부해 다시 한 번 묻습니다. 채팅 컴포넌트는 이제 이미지도 주고받으며, BaseUrl은 이제 Ollama뿐 아니라 모든 제공자에서 지원되어, 어느 것이든 프록시나 로컬 게이트웨이로 지정할 수 있습니다.
암호화: Object Pascal로 구현한 포스트 퀀텀
ML-KEM(FIPS 203), ML-DSA(FIPS 204), SLH-DSA(FIPS 205), X-Wing 하이브리드 키 캡슐화, 포스트 퀀텀 X.509 인증서와 인증 기관, 그리고 ML-DSA로 서명된 JWT. 이 모든 것이 외부 라이브러리 없이 sgcCrypto 패키지 안에서 Object Pascal로 작성되었으며, NIST의 알려진 응답 벡터에 대해 검증되었습니다.
그 위에는 역시 순수 Pascal로 작성된 네이티브 TLS 1.3 엔진이 있습니다. 클라이언트나 서버는 OpenSSL도 SChannel도 없이 TLS로 통신하며, RFC 10024의 하이브리드 포스트 퀀텀 그룹을 협상하고, ALPN, S N I, 클라이언트 인증서, 그리고 운영체제 신뢰 저장소의 선택적 사용을 지원합니다.
고전 암호화 쪽도 같은 작업에서 강화되었습니다: 블라인딩된 상수 시간 RSA, 상수 시간 타원곡선 스칼라 곱셈과 Ed25519, 테이블을 쓰지 않는 AES와 GHASH, 가져온 개인 키를 공개 키 절반과 대조해 검증하는 절차, 그리고 최소 형태가 아닌 DER 서명의 거부.
언급할 만한 수정 사항
- RSA와 ECDSA 키를 사용한 JWT 서명 및 검증 문제, 그리고 OpenSSL을 정적으로 링크했을 때 32비트 애플리케이션에서 발생하던 메모리 손상.
- PFX 파일을 사용하는 모든 연결마다 Windows 키 저장소에 개인 키 사본을 남기고, 최신 Windows 버전에서 클라이언트 인증서를 전송하지 않던 SChannel 핸들러.
- Windows 저장소의 인증서를 사용하는 동시 SChannel 연결이 핸드셰이크에 실패하던 문제.
- OAuth2 서버가 RSA 키로 서명된 DPoP 증명을 거부하던 문제.
- 서명이 URL 안전 방식으로 인코딩되지 않았던 CloudFront 서명 URL.
.NET
.NET 라이브러리도 보조를 맞춥니다: ASP.NET Core를 위한 ClaimsPrincipal 브리지가 포함된 인증과 세션, 라우터, 테스트 도우미, SPA 내비게이션, 네이티브 엔드포인트를 갖춘 SSE 전송, 구조화된 출력, AI Data Pack, Web Push, MCP Apps, 그리고 어댑터가 포함된 CRUD 컴포넌트까지, 모두 Delphi와 동일한 API 이름을 사용합니다.
업그레이드
새로운 것은 모두 추가적이며 기본적으로 꺼져 있습니다. 새 유닛을 넣고 패키지를 다시 빌드하면, 기존 애플리케이션은 이전과 정확히 똑같이 동작합니다.
전체 버전
- ChatGPT와 Claude 안에서 Delphi 앱 실행하기
- 스크린샷을 Delphi 웹 페이지로 바꾸기
- OpenSSL DLL 없는 Delphi TLS 1.3
- 5분 만에 만드는 Delphi 웹 CRUD 페이지
- 쉬운 영어로 Delphi 그리드에 질문하기
- Delphi에서 닫힌 브라우저에 도달하기
영상으로 보기
이에 관한 짧은 영상이 eSeGeCe 채널에 있습니다.
질문, 피드백, 마이그레이션 도움이 필요하신가요? 문의하기 — 코드를 작성한 사람들에게서 직접 답변을 받으실 수 있습니다.
