sgcHTML pozwala budować interfejs webowy w Delphi, z komponentów, bez pisania JavaScriptu. Dotychczas te strony działały na serwerze sgcWebSockets. Teraz możesz serwować te same strony z dowolnej aplikacji Embarcadero WebBroker oraz z serwerów DataSnap, dzięki czemu istniejące zaplecze REST może zyskać pełny frontend webowy bez opuszczania Delphi. Szczegóły, komponenty i kod znajdują się na nowej stronie WebBroker & DataSnap.
Działa to, ponieważ sgcHTML jest rendererem, a nie serwerem. Warstwa komponentów i węzłów zamienia twoją stronę w zwykły ciąg HTML, bez zależności od jakiegokolwiek gniazda, transportu czy klasy serwera. Ten ciąg może być treścią TWebResponse równie łatwo, jak odpowiedzią serwera WebSocket, co właśnie umożliwia obie poniższe integracje.
Dowolna aplikacja WebBroker
Komponent TsgcHTMX_Engine_Server_WebBroker implementuje standardowy interfejs IWebDispatch. Upuść go na swoim TWebModule lub wywołaj jego DispatchRequest z TWebActionItem, a będzie serwował stronę sgcHTML, wbudowane zasoby CSS i JavaScript oraz twoje trasy htmx. Działa na samodzielnym TIdHTTPWebBrokerBridge, pod ISAPI, jako moduł Apache oraz jako CGI, więc pasuje do dowolnego hosta WebBroker, który już wdrażasz.
uses
Web.HTTPApp, sgcHTMX_Engine_Server_WebBroker, sgcHTMX_Router;
// Any WebBroker host: the engine's Owner is the web module,
// so the standard WebBroker dispatcher calls it automatically
FEngine := TsgcHTMX_Engine_Server_WebBroker.Create(WebModule1);
FEngine.Router := FRouter; // your htmx routes and the page
Interaktywność korzysta ze zwykłych rund HTTP htmx, więc WebSocket nie jest potrzebny. Jeśli wolisz, istnieje tryb klasyczny bez htmx w ogóle, ze zwykłą nawigacją pełnostronicową i standardowymi wysyłkami formularzy, który działa przy wyłączonym JavaScripcie. Jedyną rzeczą, której zwykły WebBroker nie potrafi, jest wypychanie danych, ponieważ pod CGI i ISAPI żądanie i odpowiedź są właścicielami gniazda. Aby uzyskać aktualizacje na żywo na zwykłym hoście WebBroker, użyj odpytywania htmx lub przejdź do poniższych serwerów mostkujących.
DataSnap, z aktualizacjami na żywo na jednym porcie
sgcWebSockets dostarcza już gotowe do użycia serwery mostkujące, które zastępują indyjski TIdHTTPWebBrokerBridge w aplikacji DataSnap lub WebBroker, dzięki czemu serwer zyskuje WebSockets, HTTP/2 lub HTTP.sys na tym samym porcie. sgcHTML teraz podłącza się do nich bezpośrednio. Przypisz Server silnika do swojego serwera mostkującego, a strona, jej zasoby i wypychanie fragmentów WebSocket na żywo działają na tym samym porcie co punkty końcowe REST DataSnap.
uses
sgcWebSocket_Server_WebBrokerBridge,
sgcHTMX_Engine_Server_WebBrokerBridge, sgcHTMX_Router;
// A DataSnap / WebBroker bridge server
FServer := TsgcWSHTTPWebBrokerBridgeServer.Create(Self);
FServer.Port := 8080;
FEngine := TsgcHTMX_Engine_Server_WebBrokerBridge.Create(Self);
FEngine.Router := FRouter; // your htmx routes and the page
FEngine.Server := FServer; // share the DataSnap port
FServer.Active := True;
// push a live HTML fragment to every connected browser
FEngine.BroadcastFragment(BuildStatsFragment);
Silnik przejmuje tylko własne ścieżki, stronę, zasoby i twoje trasy. Wszystko inne przechodzi nietknięte, więc REST /datasnap/* i akcje już obecne na twoim TWebModule działają dokładnie tak jak wcześniej, a każdy posiadany przez ciebie handler OnCommandRequest jest łączony w łańcuch i uruchamia się jako pierwszy. Ten sam wzorzec obejmuje wszystkie trzy serwery mostkujące: TsgcHTMX_Engine_Server_WebBrokerBridge obsługuje most Indy przez HTTP/1.1 oraz most HTTP/2, a TsgcHTMX_Engine_Server_HTTPAPI_WebBrokerBridge obsługuje most HTTP.sys.
Jedno zaplecze, dwie twarze
Miłą konsekwencją hostowania na DataSnap jest to, że jeden zestaw metod serwera może pełnić podwójną rolę. Twój TDSServerModule jest twoim API REST i JSON pod /datasnap/rest dla dowolnego klienta zewnętrznego, a jednocześnie jest źródłem danych, z którego twoje strony sgcHTML renderują się w tym samym procesie. Logikę biznesową piszesz raz i otrzymujesz z niej zarówno maszynowe API, jak i ludzki interfejs webowy, na jednym serwerze, na jednym porcie.
Trzy dema na start
Produkt zawiera trzy dema, które budują tę samą małą aplikację w różnych stylach, więc możesz wybrać to, które pasuje do twojego projektu:
Demos\60.HTML\11.WebBroker, aplikacja WebBroker z zapleczem DataSnap i interaktywnością htmx, w wersji samodzielnej i ISAPI.Demos\60.HTML\12.WebBrokerHTML, ta sama aplikacja w klasycznym stylu zwykłego HTML, bez htmx, z nawigacją pełnostronicową i standardowymi wysyłkami formularzy, ponownie z zapleczem DataSnap.Demos\40.DataSnap\Server_Indy_HTTP_HTML, pulpit sgcHTML czasu rzeczywistego, który aktualizuje się przez WebSockets, podczas gdy metody REST DataSnap odpowiadają na tym samym porcie.
Wymagania i dostępność
Silnik WebBroker obsługuje Delphi 7 do Delphi 13. Ścieżka mostu DataSnap wymaga edycji Delphi, która zawiera DataSnap, czyli Enterprise lub Architect. WebBroker i DataSnap to frameworki Delphi i C++Builder, więc ta historia hostowania jest specyficzna dla tych dwóch kompilatorów. Port sgcHTML .NET hostuje zamiast tego na ASP.NET Core i osiąga tam ten sam rezultat.
Wszystko opisane tutaj jest dostępne już teraz. Pełny opis, dokumentacja komponentów i przykłady kodu znajdują się na stronie WebBroker & DataSnap.
Pytania, opinie lub pomoc w podłączeniu sgcHTML do twojego serwera DataSnap? Skontaktuj się z nami. Otrzymasz odpowiedź od ludzi, którzy napisali ten kod.
