Daha İnce sgcWebSockets Derlemeleri — Gömülü JS Kaynağını Hariç Tutun

· Özellikler

Çalıştırılabilirlerini profilleyen müşterilerden gelen köklü bir soru «sgcWebSockets ekledikten sonra EXE'm neden büyüdü?» sorusudur. Bu büyümenin bir kısmı, sgcWebSockets çalışma zamanı paketlerinin varsayılan olarak gömdüğü bir kaynak dosyasından gelir: sgcResources.RES. Bir sgcWebSockets sunucusunun HTTP üzerinden uzak bir tarayıcıya sunabileceği JavaScript istemci paketini içerir — çoğu Delphi ve C++Builder uygulamasının hiç kullanmadığı bir özellik.

sgcWebSockets 2026.6 ile başlayarak, bundan vazgeçebilirsiniz. Kaynak-sürümü Setup, Seçenekler sayfasında yeni bir Include Resources onay kutusu kazanır; bunun işaretini kaldırmak, çalışma zamanı paketleri derlenmeden önce sgcVer.inc içindeki yeni bir SGC_RESOURCES derleyici yönergesinin tanımını kaldırır. Kaynak basitçe hiçbir zaman bağlanmaz — ne BPL'lere ne de müşterilerinizin EXE'lerine.

Neler kaldırılır

sgcWebSockets kaynağındaki {$R} yönergesi artık {$IFDEF SGC_RESOURCES} içine sarmalanmıştır:

// sgcWebSocket_Protocol_Base_Server.pas
{$IFDEF SGC_RESOURCES}
{$R sgcResources.RES}      // sgcWebSockets JS client bundle
{$ENDIF}

SGC_RESOURCES tanımsız olduğunda, bağlayıcının gömecek bir şeyi yoktur. Kaynak, kaynağa karşı bağlanan her çalıştırılabilirden basitçe kaybolur.

Bu kaynağa ne zaman ihtiyacınız yoktur

Gömülü paket yalnızca bir sgcWebSockets sunucusu gerçekten paketlenmiş JS istemcisini uzak bir tarayıcıya sunduğunda gereklidir. Bu, TsgcWSProtocol_JS_* bileşenleriyle veya GET /sgcwebsockets.js'e paketlenmiş JavaScript'i döndürerek yanıt veren herhangi bir sunucuyla gerçekleşir.

Şunlar için gerekli değildir:

Nasıl etkinleştirilir

En temiz yol yükleyicidir. sgcWebSockets kaynak-sürümü kurulumunu çalıştırdığınızda, Options düğmesine basın ve yeni girdinin işaretini kaldırın:

[ ] Include Resources

Yükleyici, herhangi bir paketi derlemeden önce sgcVer.inc içindeki {$DEFINE SGC_RESOURCES} satırını {.$DEFINE SGC_RESOURCES} olarak yeniden yazar, böylece tasarım zamanı ve çalışma zamanı BPL'leri gömülü paket olmadan üretilir.

sgcWebSockets zaten kuruluysa ve değişikliği manuel olarak yapmayı tercih ediyorsanız, <sgc-install-folder>\Source\sgcVer.inc'i açın, şu satırı bulun:

{$DEFINE SGC_RESOURCES} { RESOURCES }

ve süslü ayracı yorum satırı yapın:

{.$DEFINE SGC_RESOURCES} { RESOURCES }

Ardından çalışma zamanı / tasarım zamanı paketlerini ve uygulamanızı yeniden derleyin. IDE'de Project > Build All Projects bölümüne gidin veya her zamanki derleme betiğinizi çalıştırın.

Tasarrufu ölçme

Tasarrufu kendi projenizde doğrulamak istiyorsanız, değişiklikten önce ve sonra ayrıntılı bir bağlayıcı haritası (linker map) oluşturun. Yeniden derledikten sonra, oluşturulan *.map dosyasını açın ve kaynak bölümüne kaydırın — sgcResources.RES gitmiş olmalıdır. sgcWebSocket_Protocol_Base_Server için .text modül boyutu da biraz düşer, çünkü kaynağı yükleyen yardımcı kod ölü-kod-eleme ile çıkarılır.

Kesin tasarruf, derleme yapılandırmanıza ve hangi sgcWebSockets sürümünü kullandığınıza bağlıdır, ancak tipik bir yalnızca-istemci derlemesinde EXE belirgin şekilde küçülür. Bu seçeneği mevcut sürüm-düzeyi anahtarlarıyla (WebAuthn / HTTP2 / OAuth-sunucusunu çıkarmak için {$UNDEF SGC_EDT_ENT} veya yalnızca-istemci kodunda uses sgcWebSocket yerine uses sgcWebSocket_Client kullanmak) birleştirirseniz, toplam azalma önemli olabilir.

Geriye dönük uyumluluk

sgcVer.inc içindeki varsayılan {$DEFINE SGC_RESOURCES} olarak kalır, dolayısıyla mevcut projeler tam olarak önceki gibi derlenmeye ve çalışmaya devam eder. Yeni bayrak kesinlikle vazgeçmelidir (opt-out): ister yükleyici onay kutusuyla ister sgcVer.inc'i kendiniz düzenleyerek kaynağı açıkça devre dışı bırakmadıkça hiçbir şey değişmez.

SGC_RESOURCES'i devre dışı bırakır ve ardından paketlenmiş JS istemcisini sunmaya çalışan bir sunucu metodu çağırırsanız (örneğin, bir TsgcWSProtocol_JS_* yanıt işleyicisi), temiz bir EResNotFound alırsınız — gerçekten ihtiyaç duyduğunuz bir şeyi kapattığınızın bariz bir işareti. Tanımı yeniden etkinleştirip yeniden derlemeniz yeterlidir.

Kullanılabilirlik

Yeni seçenek, yalnızca kaynak-sürümü yükleyicilerinde (Standard, Professional ve Enterprise) sgcWebSockets 2026.6'da gelir. Trial yükleyicisi, paketlenmiş JS istemci demolarının kutudan çıkar çıkmaz çalışması için kaynağı gömülü tutar.

Aktif aboneliği olan müşteriler yeni derlemeyi müşteri alanından edinebilir. Daha fazla boyut-azaltma anahtarı için sorular veya öneriler mi? Bize ulaşın — kodu yazan kişilerden bir yanıt alacaksınız.