Delphi, C++Builder & .NET 실시간 화면

sgcUI Realtime UI 팩

라이브 시스템을 따라가는 화면에 필요한 모든 것이 이미 사용 중인 sgcUI 제품 안에 들어 있습니다. 누가 접속해 있는지, 토스트 알림과 읽지 않음 배지가 있는 알림 수신함, 감사 추적이 있는 활동 피드, 실시간 로그 뷰어입니다. 서버가 WebSocket, MQTT 또는 서버 전송 이벤트로 데이터를 공급하거나, 코드에서 직접 구동할 수 있습니다.

VCLFireMonkeyWinFormsWPFAvalonia
sgcUI Realtime 데모: 접속 상태 표시점이 있는 팀 명단, 활동 피드, 알림 환경설정 위의 알림 수신함, 읽지 않은 수가 표시된 종 아이콘, 팀 아바타, 실시간 로그 그리드

다섯 가지 제품, 하나의 실시간 화면

Realtime UI 팩은 별도의 제품이 아닙니다. 각 구성 요소는 어울리는 sgcUI 제품 안에, 이미 사용 중인 유닛, 패키지, NuGet 패키지로 들어 있으며 해당 제품의 에디션을 따릅니다. 모든 구성 요소는 sgcUICore와 그것을 담고 있는 제품만 필요로 하며, sgcHTML은 필요하지 않습니다.

접속 상태와 아바타

누가 온라인, 자리 비움, 다른 용무 중, 오프라인인지를 아바타, 아바타 그룹, 접속 상태 표시점으로 보여 줍니다.

제품: sgcUICore.

접속 상태 →

알림

토스트 알림, 수신함, 범주와 채널별 환경설정, 툴바의 읽지 않음 배지를 갖춘 알림 모델입니다.

제품: sgcNavigation, sgcToolbar.

알림 →

활동 피드와 감사 추적

누가 어떤 객체에 무엇을 했는지를 피드, 감사 테이블, 대시보드 타일로 보여 줍니다.

제품: sgcDashboard.

활동 →

실시간 로그 뷰어

가장 최근의 로그 줄을 따라가는 그리드로, 일시 중지, 필터, 내보내기를 지원합니다.

제품: sgcGrid.

실시간 로그 →

실시간 소스

모든 모델에 데이터를 공급하는 sgcWebSockets의 WebSocket, MQTT, 서버 전송 이벤트 연결입니다.

제품: sgcUICore, sgcUICoreWS 브리지.

실시간 데이터 →

Delphi 7부터 Delphi 13까지 VCL, Delphi XE6부터 FireMonkey, C++Builder, .NET WinForms, WPF, Avalonia를 지원합니다. Realtime UI 팩 도움말 항목 읽기.

접속 상태와 아바타

모든 sgcUI 제품에서 누가 접속해 있는지 보여 줍니다.

TsgcUIPresenceModel은 사용자와 그 상태(온라인, 자리 비움, 다른 용무 중, 오프라인)를 상태 텍스트와 함께 관리합니다. 아바타 컨트롤이 모델을 따르므로 상태가 바뀌면 그 사용자의 모든 아바타와 표시점이 한꺼번에 다시 그려집니다.

  • 접속 상태 모델은 코드에서 AddOrUpdate와 SetStatus로, 또는 변경 하나당 실시간 메시지 하나로 변경을 받습니다.
  • 아바타, 들어가지 않는 사용자를 "+N" 칩으로 보여 주는 아바타 그룹, 상태 점과 상태 텍스트가 있는 접속 상태 표시점이 있습니다.
  • sgcDashboard의 활동 피드가 같은 모델을 읽으므로 모든 행위자에게 아바타와 상태가 표시됩니다.
제품
sgcUICore, 모든 sgcUI 제품이 공유
Delphi 및 C++Builder
TsgcVCLAvatar, TsgcVCLAvatarGroup, TsgcVCLPresenceIndicator와 대응하는 TsgcFMX 클래스
에디션
Community를 포함한 모든 에디션, 실시간 접속 상태 메시지도 포함

도움말: 접속 상태, 아바타와 접속 상태 표시점.

토스트 알림, 수신함, 환경설정, 배지

데스크톱 애플리케이션을 위한 알림 센터입니다.

TsgcNotificationModel은 알림을 제목, 심각도, 범주, 읽음 상태와 함께 보관하고 읽지 않은 수를 관리합니다. 토스트 매니저, 수신함, 환경설정, 배지 링크가 모두 이를 따릅니다.

  • 토스트 알림: 읽지 않은 새 알림마다 토스트가 나타나며, 포인터가 위에 있으면 일시 중지됩니다.
  • 알림 수신함: 알림을 날짜별로 묶어 전체 또는 읽지 않은 것만 보여 주며, 모두 읽음으로 표시 기능이 있습니다.
  • 알림 환경설정: 범주마다 한 행, 채널마다 한 열이며 편집기를 제공합니다. 범주의 팝업 채널을 끄면 그 범주의 토스트는 나타나지 않고, 수신함에는 계속 표시됩니다.
  • 읽지 않음 배지: sgcToolbar의 TsgcToolbarBadgeLink가 툴바 또는 리본 항목에 읽지 않은 수를 표시하며, 99를 넘으면 99+로 표시합니다.
제품
sgcNavigation(모델, 토스트 알림, 수신함, 환경설정), sgcToolbar(배지 링크)
Delphi 및 C++Builder
TsgcVCLToastManager, TsgcVCLNotificationInbox, TsgcVCLNotificationPrefsEditor와 대응하는 TsgcFMX 클래스
에디션
Community를 포함한 모든 에디션. 실시간 알림 메시지와 리본을 배지 대상으로 쓰는 기능은 Registered입니다.

도움말: 알림, 토스트 알림, 알림 수신함, 알림 환경설정, 알림 실시간 메시지, TsgcToolbarBadgeLink.

활동 피드와 감사 추적

누가 무엇을 했고 무엇이 바뀌었는지 보여 줍니다.

TsgcDashboardActivityModel은 각 활동을 행위자, 동사, 객체와 바뀐 필드로 기록합니다. 활동 피드와 감사 추적은 같은 모델의 두 가지 뷰입니다.

  • 활동 피드: 최신 활동이 먼저 오며, 상대 시간과 접속 상태 모델에서 가져온 각 행위자의 아바타를 표시합니다.
  • 감사 추적: 행을 펼치면 바뀐 필드가 나오는 테이블입니다.
  • 둘 다 독립 컨트롤이며, 대시보드용 활동 타일과 감사 타일로도 제공됩니다.
제품
sgcDashboard
Delphi 및 C++Builder
TsgcVCLActivityFeed, TsgcVCLAuditTrail, TsgcVCLDashboardActivityTile, TsgcVCLDashboardAuditTile와 대응하는 TsgcFMX 클래스
에디션
Community를 포함한 모든 에디션. 실시간 활동 메시지는 Registered입니다.

도움말: 활동 피드, 활동 실시간 메시지, 활동 타일, 감사 타일.

sgcGrid의 실시간 로그 뷰어

화면이 멈추지 않으면서 수천 줄의 로그를 따라갑니다.

TsgcGridLogModel은 로그 줄을 시간, trace부터 fatal까지의 수준, 소스, 메시지와 함께 보관하고, TsgcGridLogLink는 이를 가상 모드의 sgcGrid에 표시합니다. 로그 모델은 스레드 안전이므로 작업자 스레드가 줄을 직접 추가할 수 있습니다.

  • 끝 따라가기: 위로 스크롤하면 따라가기가 멈추고 끝까지 다시 스크롤하면 재개되며, 일시 중지는 사용자가 읽는 동안 뷰를 멈춥니다.
  • 수준별 줄 색상, 수준, 소스, 텍스트별 필터, 강조 규칙, 내보내기를 지원합니다.
  • 소켓 스레드에서 한꺼번에 들어오는 로그 줄은 메인 스레드를 한 번만 거칩니다.
제품
sgcGrid
Delphi 및 C++Builder
TsgcGridLogModel과 TsgcGridLogLink를 TsgcVCLGrid 또는 TsgcFMXGrid와 함께 사용
에디션
Community를 포함한 모든 에디션. 실시간 로그 메시지는 Registered입니다.

도움말: 로그 뷰어, TsgcGridLogModel, TsgcGridLogLink.

WebSocket, MQTT, SSE 실시간 소스

sgcUICoreWS 브리지의 실시간 소스는 서버가 sgcWebSockets 연결로 보내는 JSON 메시지를 받아 모델에 전달합니다. 컨트롤은 별도 코드 없이 즉시 따라갑니다.

소스sgcWebSockets 클라이언트읽는 이벤트메시지 선택 기준
TsgcUILiveSource_WebSocketTsgcWebSocketClientOnMessage, 모든 텍스트 메시지메시지 멤버에 대한 필터
TsgcUILiveSource_MQTTTsgcWSPClient_MQTTOnMQTTPublish, 모든 퍼블리시MQTT 토픽 필터
TsgcUILiveSource_SSETsgcHTTP1ClientOnSSEMessage, 이벤트 스트림SSE 이벤트 유형
  • 소스는 연결, 구독, 전송을 하지 않습니다. URL, 자격 증명, TLS, 재연결은 클라이언트의 몫이며, WatchDog가 다시 연결해도 훅은 유지됩니다.
  • 소스 하나가 바인딩을 통해 여러 모델에 데이터를 공급하므로 연결 하나로 화면 전체를 구동할 수 있습니다. 바인딩은 애플리케이션 봉투를 풀 수 있으며, 클라이언트 이벤트에 단 사용자 핸들러도 그대로 호출됩니다.
  • 모델은 항상 메인 스레드에서 호출됩니다. 소켓 스레드에 도착한 메시지는 큐에 쌓였다가 도착 순서대로 메인 스레드를 한 번만 거쳐 적용됩니다.
  • 브리지는 수신 전용입니다. 사용자가 알림을 읽거나 닫으면 애플리케이션이 같은 클라이언트로 자체 프레임을 보냅니다.

네 가지 메시지 형식

새로운 프로토콜은 없습니다. 각 모델은 자신의 피드의 실시간 메시지를 읽습니다. 변경 하나당 JSON 객체 하나이며, 피드를 지정하는 type 멤버와 op 멤버가 있습니다.

피드typeop모델
접속 상태presence, 선택upsert, remove, snapshot, clearTsgcUIPresenceModel
알림notification, 필수add, update, remove, read, unread, snapshotTsgcNotificationModel
활동activity, 필수add, update, remove, snapshotTsgcDashboardActivityModel
로그log, 선택append, batch, clearTsgcGridLogModel
messages.json
{"type":"presence","op":"upsert","user":{"id":"u7","presence":"away","statusText":"Lunch"}}
{"type":"notification","op":"add","notification":{"id":"n2","title":"Build 812 passed","severity":"success"}}
{"type":"activity","op":"add","item":{"id":"a20","actorId":"u7","verb":"updated","objectName":"Invoice INV-17"}}
{"type":"log","op":"append","entry":{"level":"warning","source":"api","message":"Slow query"}}
Delphi, 피드당 MQTT 토픽 하나
oSource := TsgcUILiveSource_MQTT.Create(Self);
oSource.Client := MQTT;
// 모델마다 바인딩 하나, 토픽으로 선택
oBinding := oSource.Bindings.Add;
oBinding.Target := PresenceModel;
oBinding.Topic := 'ops/presence';
oBinding := oSource.Bindings.Add;
oBinding.Target := NotificationModel;
oBinding.Topic := 'ops/notifications';
oBinding := oSource.Bindings.Add;
oBinding.Target := ActivityModel;
oBinding.Topic := 'ops/activity';
oBinding := oSource.Bindings.Add;
oBinding.Target := LogModel;
oBinding.Topic := 'ops/log/+';
// 소스는 구독하지 않습니다. 클라이언트의 OnMQTTConnect에서 구독하세요
MQTT.Subscribe('ops/#');

실시간 소스는 Registered 에디션에만 포함되며, sgcUI의 모든 sgcWebSockets 브리지와 마찬가지로 sgcWebSockets가 필요합니다. 서버가 없거나 Community 빌드에서는 애플리케이션이 각 모델의 API를 대신 호출합니다. 접속 상태 모델의 AddOrUpdate와 SetStatus, 알림 모델의 Add 또는 Post, 활동 모델의 Add, 로그 모델의 Append입니다.

실시간 소스 도움말 항목 읽기

Realtime 데모

시뮬레이터로 구동되는, 12명 팀을 위한 운영 콘솔

어두운 테마의 Delphi VCL용 Realtime 데모: 팀 명단, 활동 피드, 알림 수신함과 환경설정, 종 아이콘 배지, 아바타 그룹, 실시간 로그 그리드

Suite 데모 Realtime은 팩으로 운영 콘솔을 만듭니다. 툴바에는 배지가 읽지 않은 수인 종 아이콘, 현재 사용자의 아바타, 팀의 아바타 그룹이 있습니다. 명단은 모든 팀원을 접속 상태 표시점과 함께 보여 주고, 한 탭에는 활동 피드가, 다른 탭에는 감사 추적이 있으며, 알림 수신함은 환경설정 편집기 위에 놓이고, 로그 그리드는 최신 줄을 따라가며, 토스트 알림은 오른쪽 아래에 나타납니다.

  • 실행 중에 밝은 테마, 어두운 테마, 고대비를 전환하거나 창을 오른쪽에서 왼쪽으로 반전할 수 있습니다
  • 결정적 시뮬레이터가 모든 변경을 해당 모델의 실시간 메시지로 만들므로 데모에는 서버도 sgcWebSockets도 필요하지 않습니다
  • --test result.txt로 실행하면 자체 점검이 번호가 붙은 PASS 또는 FAIL 줄로 하나씩 표시됩니다
플랫폼
Delphi VCL(Delphi 7~13)과 FireMonkey(Delphi 13), C++Builder, .NET WinForms, WPF, Avalonia
필요한 에디션
sgcDashboard가 포함된 에디션인 sgcUI Professional, Enterprise, All-Access 또는 체험판. Registered 빌드는 각 변경을 실시간 메시지로 적용하고, Community 빌드는 모델 API로 적용합니다.
소스
Demos\Suite\Delphi\Realtime (sgcUIRealtime.dpr), Demos\Suite\Delphi\RealtimeFMX (sgcUIRealtimeFMX.dpr), Demos\Suite\CBuilder\Realtime, .NET 폴더의 demos\Suite\Realtime

포함된 sgcUI 제품

다른 sgcUI 스위트 데모도 참조하세요.

밝은 테마의 Delphi FireMonkey용 Realtime 데모
FireMonkey, 밝은 테마
어두운 테마의 Delphi FireMonkey용 Realtime 데모
FireMonkey, 어두운 테마

WinForms, WPF, Avalonia의 같은 팩

모델, 컨트롤, 실시간 소스는 .NET에서도 이름이 같고 같은 JSON 메시지를 읽으며, 각 제품의 NuGet 패키지에 들어 있습니다.

  • 모델: TsgcUIPresenceModel(네임스페이스 esegece.sgcUICore), TsgcNotificationModel과 TsgcNotificationPreferences(esegece.sgcNavigation), TsgcToolbarBadgeLink(esegece.sgcToolbar), TsgcDashboardActivityModel(esegece.sgcDashboard), TsgcGridLogModel과 TsgcGridLogLink(esegece.sgcGrid).
  • 컨트롤: TsgcWinFormsAvatar, TsgcWinFormsToastManager, TsgcWinFormsNotificationInbox, TsgcWinFormsActivityFeed, TsgcWinFormsAuditTrail와 그 밖의 컨트롤이며, 각각 대응하는 TsgcWpf와 TsgcAvalonia 클래스가 있습니다.
  • 실시간 소스: 패키지 esegece.sgcUICore.sgcWebSockets의 TsgcUILiveSource_WebSocket, TsgcUILiveSource_MQTT, TsgcUILiveSource_SSE이며 Registered 전용입니다.
  • esegece.sgcNavigation.Community, esegece.sgcGrid.Community와 같은 NuGet의 무료 Community 패키지는 Delphi Community 빌드와 같은 부분을 제외합니다.
  • .NET 데모에는 모델, 시뮬레이터, 자체 점검이 들어 있는 공유 프로젝트 하나 위에 WinForms, WPF, Avalonia 호스트가 있습니다.

도움말: .NET 패키지, Realtime UI 팩.

Community와 Registered

모든 구성 요소는 해당 제품의 에디션을 따릅니다. .NET Community 패키지는 Delphi Community 빌드와 같은 부분을 제외합니다.

구성 요소제품CommunityRegistered
실시간 메시지를 포함한 접속 상태 모델, 아바타, 아바타 그룹, 접속 상태 표시점sgcUICore
알림 모델, 토스트 알림, 수신함, 환경설정sgcNavigation
실시간 알림 메시지sgcNavigation—
툴바와 함께 쓰는 배지 링크sgcToolbar
리본과 함께 쓰는 배지 링크sgcToolbar—
활동 모델, 활동 피드, 감사 추적, 두 타일sgcDashboard
실시간 활동 메시지sgcDashboard—
로그 모델과 로그 링크sgcGrid
실시간 로그 메시지sgcGrid—
WebSocket, MQTT, SSE 실시간 소스(sgcUICoreWS 브리지, sgcWebSockets 필요)sgcUICore—

sgcUI 스위트에서 sgcNavigation, sgcToolbar, sgcGrid는 모든 에디션에, sgcDashboard는 Professional부터 포함됩니다. sgcUICore는 모든 제품에 포함되며, 모든 제품은 Delphi용과 .NET용으로 단독 판매도 됩니다. 기능 비교표, 에디션 도움말 항목, 가격을 참조하세요.

자주 묻는 질문

아니요. 각 구성 요소는 어울리는 sgcUI 제품 안에 들어 있습니다. 접속 상태와 아바타는 sgcUICore, 알림은 sgcNavigation, 읽지 않음 배지는 sgcToolbar, 활동 피드와 감사 추적은 sgcDashboard, 로그 뷰어는 sgcGrid에 있습니다. 해당 제품과 함께 같은 유닛, 패키지, NuGet 패키지로 제공됩니다.

sgcUICoreWS 브리지의 실시간 소스에만 필요합니다. 모델과 컨트롤은 sgcUICore와 자신의 제품만 필요로 하며, 서버가 없는 애플리케이션은 코드에서 구동합니다. 어떤 구성 요소도 sgcHTML은 필요하지 않습니다.

변경 하나당 JSON 객체 하나를 WebSocket으로, MQTT 브로커를 통해, 또는 서버 전송 이벤트로 보내는 모든 서버입니다. 네 가지 메시지 형식은 문서화되어 있으며 소스는 자체 프로토콜을 정의하지 않습니다. 바인딩은 기존 애플리케이션 프로토콜의 봉투를 풀 수도 있습니다.

브리지는 수신 전용입니다. 사용자가 알림을 읽거나 닫으면 애플리케이션이 같은 sgcWebSockets 클라이언트로 자체 프레임을 보냅니다. 실시간 소스 도움말 항목에 예제가 있습니다.

아니요. 소켓 스레드에 도착한 메시지는 큐에 쌓였다가 메인 스레드를 한 번만 거쳐 적용되므로, 로그 1,000줄이 한꺼번에 들어와도 한 번만 거칩니다. 로그 모델은 스레드 안전이므로 작업자 스레드가 직접 추가할 수도 있습니다. Delphi 7부터 2009까지는 메인 스레드에서 알리는 클라이언트의 기본 알림 방식을 유지하세요.

모든 구성 요소의 모델과 컨트롤, 그리고 실시간 접속 상태 메시지입니다. 알림, 활동, 로그 모델의 실시간 메시지, 배지 대상으로서의 리본, 실시간 소스는 Registered 전용입니다.

제품 페이지: sgcNavigation, sgcToolbar, sgcDashboard, sgcGrid, sgcWebSockets, sgcUI 스위트.

최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

sgcUI로 실시간 화면을 만드세요

All-Access 체험판에는 모든 sgcUI 제품이 포함되어 있어 팩의 모든 구성 요소를 사용해 볼 수 있습니다.