Merhaba arkadaşlar, bu makalede sevgili @vkamadan üstadın UniGui'ye Genel Bakış isimli makalesinden esinlenerek sizlere TMS'nin Web Core isimli ürünü hakkında kısa bir bilgi vermek istiyorum.

Bildiğiniz gibi Delphi'de IntraWEB, UniGUI vb. araçlarla web yazılımları geliştirmesi yapabiliyoruz. Ben de yıllarca IntraWEB+CGDevTools ikilisini kullanarak proje yaptıktan sonra UniGUI'ye geçmiştim. Şimdilerde UniGUI kullanımım devam etmekle beraber, TMS'nin geliştirdiği Web Core isimli ürüne yavaş yavaş geçiş yapıyorum.
Neden TMS ?
IntraWEB ve UniGUI gibi frameworklerde uygulamanız ya bir ISAPI DLL dosyası olarak ya da EXE dosyası olarak derlenmek zorundadır. Bu kötü bir şey değildir, ister EXE dosyasını kullanarak UniGUI'nin dahili web sunucusunu kullanırsınız ister DLL dosyasını Internet Information Server üzerine tanıtarak IIS üzerinden kullanırsınız. Her türlü işiniz çözülmüş olur. TMS'nin iyi tarafı şu, projeniz derlendiğinde DLL veya EXE dosyası değil, HTML+CSS+JS dosyaları oluşuyor. Bu da, istediğiniz web sunucusunda, istediğiniz platformda web yazılımınızı çalıştırabilirsiniz demek.
Aynı zamanda TMS, PWA diye adlandırılan ve tam ekran çalışan mobil web siteleri yapmaktan, Bootstrap kullanımına, Electron ile masaüstünde de sanki normal VCL uygulaması gibi çalışabilen web uygulamaları geliştirmeye, Miletus ile RaspBeryPI ve diğer bazı IoT ortamlarına web yazılımı geliştirmeye kadar bir çok konuda ucu açık geliştirme imkanı sunuyor. Ayrıca TMS Web Core'u Lazarus üzerine de kurabiliyorsunuz.
Benim en sevdiğim şey ise, TMS'nin FNC diye adlandırdığı, kendilerinin de "devrimsel" diye adlandırdığı, tek bir kurulum ile Hem VCL hem FMX hem de WEB ortamında kullanılan bileşen paketlerinin kullanımına izin vermesi. Yani Web Core'un yanında FNC UI Pack vb. gibi onlarca FNC paketinden birini daha alırsanız inanılmaz görsellikte uygulamalar geliştirebilirsiniz.
Kurulum Süreci
TMS'nin kurulumu EXE Dosyası ile yapılıyor. UniGUI gibi EXE ile kurduktan sonra proje dosyalarını açıp tekrar compile edip sonrasında derlenmiş paketlerden yükleme yapmak gerekmiyor. Tüm kurulum sürecini TMS kendisi hallediyor. Delphi'yi açtığınızda TMS Web Core kullanıma hazır hale geliyor.
Başlayalım
Öncelikle Delphi'de Yeni bir proje oluşturalım. New > Other'ı seçelim:

Açılan Pencerede görebileceğiniz gibi, TMS Web Core ile bir çok ortam için web yazılımı geliştirebiliriz. Biz en temel olarak TMS Web Application'ı seçelim :

Karşımıza VCL formlarından alışık olduğumuz tasarım ekranı gelecektir. Ben örnek olarak bir edit ve bir buton koydum. Butonun click özelliğine de showmessage fonksiyonu ile edite girilen yazıyı mesaj olarak vermesini istedim. Bu ekranda VCL formları gibi alıştığınız şekilde ekran tasarımı yapabilirsiniz. Ekstra bir şey yapmaya gerek yok.

TMS Web Application seçildiğinde Delphi'nin Araç kutusunda da bu projede kullanabileceğimiz tüm araçlar gelecektir :

TMS Web'in yanısıra FNC paketlerini de satın aldığınızda tasarımda ve kodda kullanabileceğiniz 500+ civarında bileşeniniz oluyor ki, bu diğer tüm geliştirme ortamlarından daha fazla. Aklınıza gelebilecek hemen herşey için bir kontrol mevcut. İster kameraya erişin, ister barkod okutun, İster ReCaptcha kullanın, ister cihaz yönünü belirleyin, yani her şeyi yapabilmek için bir bileşen kullanımınıza hazır. Aslında her bileşeni gösterir şekilde Toolbox'un ekran resmini çekeyim dedim ama ekrana hepsini sığdıramadım.
Uygulamamızı çalıştırdığımızda tarayıcı penceresi açılacak ve tasarladığımız şekilde uygulamamız karşımıza gelecektir :

Bilgisayarımızda kendi kullandığımız bir web sunucusu yok ise, veya proje ayarlarından sunucu ayarını yapmamışsak tıpkı Visual Studio'da Asp.Net projelerini test ederken çalışan geçici web sunucusu gibi, TMS'nin de uygulamaları deneyebilmek için çalıştırdığı web server devreye girecektir :
(TMS, bu web server'ı sadece tek bir kullanıcının (o da bu durumda yazılımı geliştiren kişi oluyor) uygulamayı test edebilmesi için geliştirdiğini ve 'production' olarak dağıtılmasının uygun olmadığını söylüyor)

Sunucu simgesine çift tıkladığımızda ise bize o anda hangi projenin hangi klasörden çalıştığını gösterecektir :

Projemizin klasörüne baktığımızda ise, Sadece HTML ve JavaScript dosyaları göreceğiz.

Burada Project1.JS dosyasının boyutunun biraz büyük olduğu dikkatinizi çekecektir. İsterseniz tüm proje için tek bir .JS dosyası, isterseniz de her bir form için ayrı ayrı .Js dosyaları oluşturmasını ayarlayabiliriz. Bunun için Project Options penceresinden aşağıdaki ayarı yapmamız yeterli :

Projede normal bir web sitesi tasarlar gibi istediğiniz her türlü bileşeni form ekranında kullanabilirsiniz :

Burada kullanımı oldukça basit, kurulumu ve öğrenmesi kolay, çok zengin bir bileşen paketine sahip, ortaya çıkan projeyi dağıtması kolay bir üründen bahsediyoruz. Ama ne yazık ki UniGUI, IntraWEB vb. diğer tüm frameworkler gibi bu da ücretli. Ben hem Web Core hem de FNC paketlerini alacak kadar şanslı bir ortamdayım, ve şunu çok rahat söyleyebilirim. Unigui'den TMS'ye geçince kendimi inanılmaz özgür hissettim. Daha geçen gün bir Linux sunucu üzerinde sıfır hata ile yazılımımızı çalıştırdık.
UniGUI'den farklı olarak, ayrıca bir Runtime paketi vb. kurmak da gerekmiyor. İtiraf edeyim, yukarıda yeni proje penceresinde görebileceğiniz gibi bilgisayarımda uniGUI'de kurulu olmasına rağmen uzun süredir TMS'den başka bir ortamda web uygulaması geliştirmedim.
Ticari gizli bilgi olduğu için şirket ismi paylaşamasam da size bir sır vereyim, ülkemizde yüzlerce markanın da kullandığı meşhur bir e-ticaret şirketinin kullandığı yazılım tamamen Delphi + TMS Web Core ile geliştirildi. Kesin Bilgi. Yani TMS'nin ne kadar kullanışlı olduğu hakkında bu size bir fikir verebilir.
TMS Web Core ile ilgili bu kısa tanıtım makalesinden sonra, bir sonraki makalemde TMS Web Core üzerinden yani HTML+JS ikilisi ile bir veritabanı üzerinden nasıl veri çekebiliriz ve veriler üzerinde nasıl işlem yapabiliriz onu anlatacağım. Buraya kadar okuduysanız öncelikle sabrınız için de ayrıca teşekkür ediyorum.
TMS Web Core ile ilgili daha detaylı bilgi burada :
https://www.tmssoftware.com/site/tmswebcore.asp
FNC Paketleri ile ilgili bilgi de burada :
https://www.tmssoftware.com/site/fnc-products.asp
Başta bugün kendisini biraz kızdırdığım @mrmarman üstadımız olmak üzere, herkese sevgi ve saygılarımı sunuyorum. Sorularınız olursa yazabilirsiniz.

Bildiğiniz gibi Delphi'de IntraWEB, UniGUI vb. araçlarla web yazılımları geliştirmesi yapabiliyoruz. Ben de yıllarca IntraWEB+CGDevTools ikilisini kullanarak proje yaptıktan sonra UniGUI'ye geçmiştim. Şimdilerde UniGUI kullanımım devam etmekle beraber, TMS'nin geliştirdiği Web Core isimli ürüne yavaş yavaş geçiş yapıyorum.
Neden TMS ?
IntraWEB ve UniGUI gibi frameworklerde uygulamanız ya bir ISAPI DLL dosyası olarak ya da EXE dosyası olarak derlenmek zorundadır. Bu kötü bir şey değildir, ister EXE dosyasını kullanarak UniGUI'nin dahili web sunucusunu kullanırsınız ister DLL dosyasını Internet Information Server üzerine tanıtarak IIS üzerinden kullanırsınız. Her türlü işiniz çözülmüş olur. TMS'nin iyi tarafı şu, projeniz derlendiğinde DLL veya EXE dosyası değil, HTML+CSS+JS dosyaları oluşuyor. Bu da, istediğiniz web sunucusunda, istediğiniz platformda web yazılımınızı çalıştırabilirsiniz demek.
Aynı zamanda TMS, PWA diye adlandırılan ve tam ekran çalışan mobil web siteleri yapmaktan, Bootstrap kullanımına, Electron ile masaüstünde de sanki normal VCL uygulaması gibi çalışabilen web uygulamaları geliştirmeye, Miletus ile RaspBeryPI ve diğer bazı IoT ortamlarına web yazılımı geliştirmeye kadar bir çok konuda ucu açık geliştirme imkanı sunuyor. Ayrıca TMS Web Core'u Lazarus üzerine de kurabiliyorsunuz.
Benim en sevdiğim şey ise, TMS'nin FNC diye adlandırdığı, kendilerinin de "devrimsel" diye adlandırdığı, tek bir kurulum ile Hem VCL hem FMX hem de WEB ortamında kullanılan bileşen paketlerinin kullanımına izin vermesi. Yani Web Core'un yanında FNC UI Pack vb. gibi onlarca FNC paketinden birini daha alırsanız inanılmaz görsellikte uygulamalar geliştirebilirsiniz.
Kurulum Süreci
TMS'nin kurulumu EXE Dosyası ile yapılıyor. UniGUI gibi EXE ile kurduktan sonra proje dosyalarını açıp tekrar compile edip sonrasında derlenmiş paketlerden yükleme yapmak gerekmiyor. Tüm kurulum sürecini TMS kendisi hallediyor. Delphi'yi açtığınızda TMS Web Core kullanıma hazır hale geliyor.
Başlayalım
Öncelikle Delphi'de Yeni bir proje oluşturalım. New > Other'ı seçelim:

Açılan Pencerede görebileceğiniz gibi, TMS Web Core ile bir çok ortam için web yazılımı geliştirebiliriz. Biz en temel olarak TMS Web Application'ı seçelim :

Karşımıza VCL formlarından alışık olduğumuz tasarım ekranı gelecektir. Ben örnek olarak bir edit ve bir buton koydum. Butonun click özelliğine de showmessage fonksiyonu ile edite girilen yazıyı mesaj olarak vermesini istedim. Bu ekranda VCL formları gibi alıştığınız şekilde ekran tasarımı yapabilirsiniz. Ekstra bir şey yapmaya gerek yok.

TMS Web Application seçildiğinde Delphi'nin Araç kutusunda da bu projede kullanabileceğimiz tüm araçlar gelecektir :

TMS Web'in yanısıra FNC paketlerini de satın aldığınızda tasarımda ve kodda kullanabileceğiniz 500+ civarında bileşeniniz oluyor ki, bu diğer tüm geliştirme ortamlarından daha fazla. Aklınıza gelebilecek hemen herşey için bir kontrol mevcut. İster kameraya erişin, ister barkod okutun, İster ReCaptcha kullanın, ister cihaz yönünü belirleyin, yani her şeyi yapabilmek için bir bileşen kullanımınıza hazır. Aslında her bileşeni gösterir şekilde Toolbox'un ekran resmini çekeyim dedim ama ekrana hepsini sığdıramadım.
Uygulamamızı çalıştırdığımızda tarayıcı penceresi açılacak ve tasarladığımız şekilde uygulamamız karşımıza gelecektir :

Bilgisayarımızda kendi kullandığımız bir web sunucusu yok ise, veya proje ayarlarından sunucu ayarını yapmamışsak tıpkı Visual Studio'da Asp.Net projelerini test ederken çalışan geçici web sunucusu gibi, TMS'nin de uygulamaları deneyebilmek için çalıştırdığı web server devreye girecektir :
(TMS, bu web server'ı sadece tek bir kullanıcının (o da bu durumda yazılımı geliştiren kişi oluyor) uygulamayı test edebilmesi için geliştirdiğini ve 'production' olarak dağıtılmasının uygun olmadığını söylüyor)

Sunucu simgesine çift tıkladığımızda ise bize o anda hangi projenin hangi klasörden çalıştığını gösterecektir :

Projemizin klasörüne baktığımızda ise, Sadece HTML ve JavaScript dosyaları göreceğiz.

Burada Project1.JS dosyasının boyutunun biraz büyük olduğu dikkatinizi çekecektir. İsterseniz tüm proje için tek bir .JS dosyası, isterseniz de her bir form için ayrı ayrı .Js dosyaları oluşturmasını ayarlayabiliriz. Bunun için Project Options penceresinden aşağıdaki ayarı yapmamız yeterli :

Projede normal bir web sitesi tasarlar gibi istediğiniz her türlü bileşeni form ekranında kullanabilirsiniz :

Burada kullanımı oldukça basit, kurulumu ve öğrenmesi kolay, çok zengin bir bileşen paketine sahip, ortaya çıkan projeyi dağıtması kolay bir üründen bahsediyoruz. Ama ne yazık ki UniGUI, IntraWEB vb. diğer tüm frameworkler gibi bu da ücretli. Ben hem Web Core hem de FNC paketlerini alacak kadar şanslı bir ortamdayım, ve şunu çok rahat söyleyebilirim. Unigui'den TMS'ye geçince kendimi inanılmaz özgür hissettim. Daha geçen gün bir Linux sunucu üzerinde sıfır hata ile yazılımımızı çalıştırdık.
UniGUI'den farklı olarak, ayrıca bir Runtime paketi vb. kurmak da gerekmiyor. İtiraf edeyim, yukarıda yeni proje penceresinde görebileceğiniz gibi bilgisayarımda uniGUI'de kurulu olmasına rağmen uzun süredir TMS'den başka bir ortamda web uygulaması geliştirmedim.
Ticari gizli bilgi olduğu için şirket ismi paylaşamasam da size bir sır vereyim, ülkemizde yüzlerce markanın da kullandığı meşhur bir e-ticaret şirketinin kullandığı yazılım tamamen Delphi + TMS Web Core ile geliştirildi. Kesin Bilgi. Yani TMS'nin ne kadar kullanışlı olduğu hakkında bu size bir fikir verebilir.
TMS Web Core ile ilgili bu kısa tanıtım makalesinden sonra, bir sonraki makalemde TMS Web Core üzerinden yani HTML+JS ikilisi ile bir veritabanı üzerinden nasıl veri çekebiliriz ve veriler üzerinde nasıl işlem yapabiliriz onu anlatacağım. Buraya kadar okuduysanız öncelikle sabrınız için de ayrıca teşekkür ediyorum.
TMS Web Core ile ilgili daha detaylı bilgi burada :
https://www.tmssoftware.com/site/tmswebcore.asp
FNC Paketleri ile ilgili bilgi de burada :
https://www.tmssoftware.com/site/fnc-products.asp
Başta bugün kendisini biraz kızdırdığım @mrmarman üstadımız olmak üzere, herkese sevgi ve saygılarımı sunuyorum. Sorularınız olursa yazabilirsiniz.
Firebird Ekipler Amiri. Dmitry Kouzmenko ve Dmitry Yemanov ile çalışmış , Eski IBSurgeon personeli, Kıdemli Firebird Kurtarma Uzmanı, Firebird Foundation bağışçısı...

