Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UniGUI'ye Genel Bakış
#1
Merhaba değerli üyeler,
Bu yazıda UniGUI hakkında fikir oluşturacak bir nebze tanıtacak temel bilgiler vermeye çalışacağım.

UniGUI, Delphi kullanıcılarının alıştığı hızlı uygulama geliştirme yapılarını temel olarak geliştiricilerin masaüstü programlama beceri ve deneyimleri haricinde neredeyse hiç ek bilgiye ihtiyaçları olmadan çok çok hızlı bir şekilde zengin web uygulamaları geliştirilmesine olanacak tanıyan (bence) oldukça başarılı bir üründür.
UniGUI ,  tamamen sıfırdan üretilen bir ürün olmayıp aşağıdaki diğer ürünlerinden istifade edilerek üretilmiştir.

ExtJS ve Sencha Touch
UniGUI, tarafından üretilen tüm tarayıcı çıktıları EXt JS JavaScript kitaplığını kullanır , Mobil  / Tablet için geliştirilecek uygulamalarda ise Sencha Touct JavaScript kitaplığını kullanır, her iki kitaplıkta tüm web uygulama geliştirme ortamlarınca kullanılabilen  genelde iş uygulamaları için daha uygun olan tüm görsel kontrolleri bünyesinde barındırır.

Indy 
UniGUI , mevcut Indy i temel alıp adına uIndy dedikleri bir çok modifikasyonu içeren yeni bir Indy sürümünü kullanır, nihayetinde TuidHTTPServer (TidCustomHTTPServer) başta olmak üzere bir çok network operasyonu için özelleştirilmiş Indy bileşenlerini kullanır.

SynEdit
UniGUI , veri bilinçli olan olmayan tüm editörlerini ve diğer görsel bileşenleri SynEdit bileşenlerini miras olarak üretmiştir.


PNGImage
UniGUI ile üreteceğiniz uygulamalarda sistemin tarayıcıya basacağı görselleri geliştiricinin belirtebileceği 2 formattan biriyle yapar (JPEG ya da PNG)   PNG seçildiğinde tüm imajlar sunucudan PNG  olarak çıkartılır bu noktada UniGUI PNGImage isimli bileşen setini kullanarak bunu yapar.

CSSParser
Kullanıcılar her bir UniGUI görsel bileşenine isterlerse özelleştirilmiş CSS ler yazabilir bu bileşen bu noktada devreye girer.


UniGUI de geliştirilen uygulamalar birer HTTP Web Server uygulamasıdır, ISAPI dışında tercih edilen türler kendi içlerinde otomatikman birer HTTP Server uygulaması da barındırır.

UniGUI ücretli bir üründür (Mobil bileşenleri dahil paketi 890 USD) , deneme sürümünü Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol  buradan indirerek işe başlayabilirsiniz.
Deneme sürümünün öğrenmeyi engelleyecek bir kısıtlaması olmamakla birlikte en önemli kısıtlamaları şöyledir ;
Aktif oturum sayısı 3 ile sınırlıdır ve Form etiketlerinin değiştirilememesidir.

Kurulum tam otomatiktir , bileşenleri ,  yeni proje menüsüne UniGUI proje seçeneklerini ve ExtJS  kitaplığını yükler.
Dağıtıcağınız uygulamalarla beraber uygun ExtJS kitaplığı sürümünü de mutlaka dağıtmanız gerekir.

Kurulum sorunsuzca tamamlandığında (Eğer önceden SynEdit , CSSParser ve PNGImage bileşenlerinden birini ya da tümünü bir şekilde kendiniz yüklediyseniz kaldırmanız gerekir ) ,
İlk UniGUI uygulamamızı oluşturmak için hazırız.

Bu örneği Delphi XE2 ile oluşturacağım diğer IDE sürümlerinde de hemen hemen aynı olduğunu düşünüyorum

File-->New-->Other menülerini izleyerek aşağıdaki ekrana ulaşalım, "uniGUI for Delphi" bölümünden "Application Wizard" ı seçelim, hızlı bir başlangıç için Application Wizard ı kullanmak yerinde olacaktır. Bu makalede değinmeyeceğim ancak zaten anlatacaklarımla tamamen uyumlu olduğu için bahsetmek istiyorum UniGUI ile Mobile cihazlarda daha uygun görünen web uygulamaları da geliştirebilirsiniz bunun için Sencha Touch kitaplığını kullanan projeler üretir, "Mobile Application Wizard" ile aynı şekilde yola çıkabilirsiniz. 

nEMDpg.png

mE6DyR.png


Projemize bir isim verelim ve "Standalone server" ı seçerek yola devam edelim.

Proje tüleri ;
Standalone Server : Kendi HTTP Server ını içinde barındıran bir sistem tepsisi masaüstü uygulamasıdır, bu seçildiğinde projeniz EXE olarak derlenir ve çalıştırıldığında hiç ekranda görünmeden direk sistem tepsisinde bir simge olarak çalışır, genelde uygulamayı DEBUG etmek için tercih edilir.
Standalone Server / ISAPI Module : uygulama varsayılanda Standalone Server olarak olarak oluşturulur ancak proje dosyasında (DPR) tanımlı bir derleyici direktifini kaldırarak uygulamamızı ISAPI Module olarak derlememize olanak tanır bu benim tercih ettiğim proje türüdür uygulamayı olgunlaştırana kadar standalone server olarak derlerim kolayca DEBUG edebilirim iş bitince kolayca ISAPI DLL olarak derler yayınlarım.
ISAPI Module : Uygulama IIS üzerinde çalıştırılabilir bir ISAPI DLL olarak derlenir büyük ölçekli ve oturum adedi yüksek olacak uygulamalarınızı IIS de ISAPI olarak çalıştırmanız alternatifsiz en doğrusudur.
Windows Service Application : Uygulama içinde HTTP Server barındıran bir Windows servis i olarak derlenir, küçük ölçekli projeler için uygundur hizmetlerde sessiz sakin çalışarak yayın yapar.

Standalone Server ı seçip devam ettiğimizde projeimizin temelleri bizim için otomatikman oluşturulur. Bir UniGUI uygulamasının çalışabilmesi için temelde en az şu 3 ü oluşur ,

1 - ServerModule : Uygulamamızın temel sunucu davranışlarını ve tanımlarını yönetebileceğimiz / özelleştirebileceğimiz modüldür TUniGUIServerModule sınıfından türer bir projede bir tane yer alabilir. Kullanılan ExtJS sürümü , ExtJS kitaplığını bulunduğu konumu , eğer Standalone Server ya da Windows servis uygulaması oluşturuyor isek HTTP Server ımızın hangi TCP portundan yayın yapacağı gibi yapıları kontrol eder. neredeyse her uygulamamız da mutlaka değişiklik yaptığımız ServerModule özellikleri aşağıda ki gibidir ;

 - Favicon : uygulamamızın tarayıcı da görünen simgesi belirlenir (sadece *.ico ya müsade edilir)
 - LoadingMessage : uygulamanız ilk açılırken çalışabilmek için istemciye yüklüce miktarda  JS dosyası indirir bu esnada gösterilen mesajın içeriğini buradan değiştirirsiniz (Uygulama Hazırlanır lütfen Bekleyin.. gibi)
 - MainFormDisplayMode : Uygulamanın ana formunun çerçevesiz klasik bir web sayfası gibi mi yoksa bir pencere gibi mi gösterileceğini belirtir (mfWindow , mfPage)
 - Port : Eğer StandAloneServer = True ise anlam ifade eder HTTP Server ın yayın yapacağı TCP Port numarası buradan belirtilir varsayılanda 8077 dir.
 - Title : Uygulamamızın adını belirten tarayıcı penceresinin caption ı dır.

Tabi ki bir çok önemli özelliği buradan değiştirebilirsiniz özellikle aşağıda vurguladıklarımı incelemenizi öneririm.

dX3rvn.png

2 - MainModule : Uygulamamızın teması , ana ekran arka plan resmi ve bazı tarayıcı davranış ayarlarını bu modülden yaparız ayrıca en önemli diğer görevi bir nevi datamodul gibi uygulama genelinde erişmek istediğimiz görsel olmayan bileşenlerini bunun üzerine koyarız (veri tabanı bağlantı nesneleri vb..) her hangi bir formda "UniMainModule"  fonksiyonuyla bu modüle ulaşabiliriz.

3- Main : Uygulamamızın ana sayfasıdır esasen sonradan ekleyeceğimiz formlardan hiç bir farkı yoktur buda TUniForm sınıfından türer, ancak uygulamamızın mutlaka bir ana sayfası olması zorunluluğundan dolayı projeye otomatikman dahil edilir.

Projemizde görsel öğeler olarak sadece UniGUI bileşenlerini kullanabiliriz, delphinin standart VCL kontrollerinin hemen hemen tamamının benzerlerini burada bulabilirsiniz.
rE9BoV.png

Ayrıca projenizde görsel olmayan diğer tüm bileşenleri kullanabilirsiniz (örneğin Fast Report ile tasarladığınız raporu sunucu tarafında Ekrana göstermeden Prepare eder, PDF Export bilşeni ile PDF e çevirir ve UniGUI uygulamanıza Dosya olarak geri basabilirsiniz böylece raporlama da görsel sınırlarınız ortadan kalkar)

Uygulamamız UniGUI  projesi ise UniGUI bileşenlerini, UniGUI Mobile projesi ise UniGUI Mobile bileşenlerini kullanmalısınız.

Evet projemize devam edelim, uygulama ana sayfası formu üzerine (MainForm) UniGUI Standart bileşen sekmesinde yer alan TUniButton , TUniEdit bielşenlerini ekliyorum.
nErPY0.png

UniButton1 in OnClick olayına UniEdit1 in Text ini değiştirecek kodu yazıyorum

OEM2dD.png

Projemi derliyorum , sistem tepsisinde çalışmaya başlıyor..
zn4R2j.png

ServerModule den bahsederken HTTP Server ın yayın yapacağı varsayılan portun 8077 olduğunu belirtmiştik şimdi tarayıcımızdan http://localhost:8077 diyerek projemize ulaşıyoruz.

J32LXJ.png

Evet..! tıpkı masaüstü uygulaması tasarlar gibi tasarladık kodlarımızı yazdık ve aynı görüntüye tarayıcıdan ulaştık ne kadar kolay değil mi? 
mevzu bahis bir web uygulaması olduğu için şöyle genel bir bilgi vereyim PAS dosyamız içine yazdığınız her türlü kod sunucu tarafında çalışacaktır yani UniButton1 nesnemizin OnClick olayı için tarayıcı sunucu tarafına bir AJAX çağrısı gönderecek uygulamamız bunu sunucuda çalıştıracak ve sonucu ilgili AJAX çağrısının dönüşüne eklenerek tarayıcıdaki ilgili değişiklik yansıtılacaktır. bir diğer durumda tüm UniGUI görsel bileşenlerinin "ClintEvents" özelliği mevcuttur sunucuya gelinmesine gerek olmayan işlemlerimizi performans arttırımı için istemci tarafında JavaScript kodları ile yapmamıza olacak tanır biraz önce sunucu tarafında yaptığımız işi ClientEvents yardımıyla istemci tarafında basitçe yapabilirdik.

MkJYL9.png

ClientEvents.ExtEvents ı kullanıyoruz buraya yazılacak JavaScript kodları saf JS içerebileceği gibi esasen ExtJS framework ünün kullanım standartlarını barındırır, uniGuı uygulamamız projeye eklediğimiz tüm bileşenleri onlara verdiğimiz isimlerle birer ExtJS Objesi halinde javascript içinden erişilebilir hale getirir, Client Event yazarken obje referanslarında "FormAdı.ObjeAdı." şeklinde yol izlenmelidir. kullanabileceğiniz JS fonksiyon ve nesne metodları için ExtJS in Online Yardımına bakabilirsiniz. evet bu sayede kullanıcı butona tıkladığında hiç sunucuya gidilmeden doğrudan tarayıcıda UniEdit1 in içeriği değişmiş olacaktır.

Şimdi bir veritabanı bağlantısı sağlayıp kayıtları bir gridde gösterelim.

MainModule e tüm uygulama genelinde erişebileceğimiz veritabanı bağlantı nesnemizi ekliyorum (ben MyDAC ile MySQL üzerinde yapacağım) ve bildiiniz şekilde bağlantı ayarlarını yapıp hazır hale getiriyorum.

rE9L61.png

Ana formuma bir TUniDBGrid ve bildiğimiz TDataSource , ve uygun dataset i ( MyDAC kullandığım içinde bir TMyQuery) ekleyip bağlantıları yapıyorum (her şey VCL deki TDBGrid gibi)

rE9LJz.png




Uygulamamı derliyorum ve tarayıcıdan erişiyorum.

3Ao8EO.png

İşte bu kadar kolay.. anlatacak çok şey var sorular geldikçe devam edelim..
Sağlıcakla kalın.
Cevapla
#2
Hocam Elinize Sağlık başlangıç için çok iyi bir makale olmuş.
Cevapla
#3
Son derece kaliteli ve ayrıntılı, çalışmanızdan dolayı teşekkür ederim.
Daha önce UniGUI ile çalışan ve bu konuda deneyim sahibi bir olarak, UniGUI'nin gelecekti durumu ve desteği konusunda ne düşünüyorsunuz.
Örneğin, bu mimari ile geliştirilmiş ticari bir uygulamada, sunucu tarafında (Yeni sunucu sürümü veya yeni IIS sürümü gibi) bir sorun yaşanır mı?
Bir de anladığım kadarıyla Windows tabanlı sunucularda çalışıyor. Linux tabanlı yapılarda çalışan sürümleri var mı?
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#4
Fesih bey ,
UniGUI ile ticari bir uygulama geliştirmedim ancak çok detaylı ve bayi ağımızla birlikte geniş ölçekte kullandığımız kendi backoffice uygulamalarımızın bir kısmı UniGUI de geliştirildi.
Uygulamanızı ISAPI DLL olarak IIS üzerinde sunarsanız çökme ve performans sorunu yaşama ihtimaliniz minimum yer yer aylarca sunucumuzu yeniden başlatmadığımız olmuştur.
Lisanslı bir kullanıcıyız destek konusunda en geç 1 saat içinde cevap veriyorlar genelde, ancak çok küçük bir ekip var ve tek bir geliştirici var bu biraz endişe verici Smile çok sık güncelleme yayınlıyorlar bariz hatalar çıkmıyor genelde çok derinlerde kalmış istisnai durumlar düzeltiliyor, güncellemeler genelde yeni bileşen yada mevcut bileşenler üzerindeki geliştirmelerden kaynaklı oluyor. Tasarladığınız uygulamalar derlenmiş kod ve statik JS kitaplığı kullanıyor bu durumda elinizdeki kararlı işinizi gören bir sürümle Windows ve IIS var olduğu sürece sorun yaşamazsınız. tabi yeni tarayıcılar yada radikal sürüm değişiklikleri JS yorumlamalarında farklılıklara neden olursa ExtJS in uygun bir sürümü ve buna uyumlu bir UniGUI sürümü gerekliliği doğabilir. Şuan Windows destekleniyor, Linux için somut bir adım yok ama umut var çünkü sonuçta projeler VCL değil birer konsol uygulaması gibi çalışıyor, delphi tarafındaki Linux yaklaşımı görsel den ziyade Console uyuglamaları yönünde olduğu için bencede yakın gelecekte Linux desteği gelebilir.
Cevapla
#5
Volkan Dostum güzel bir anlatım olmuş.
Bu konuda bende uzun süredir geliştirme yapıyorum, bu konuda arkadaşlara seve seve yardımcı olmak isterim.
Cevapla
#6
UniGUI kullanan arkadaşların bir de Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol inceleyip kıyaslama yapmaları hoş olurdu Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
(01-09-2016, Saat: 11:34)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlFesih bey ,
UniGUI ile ticari bir uygulama geliştirmedim ancak çok detaylı ve bayi ağımızla birlikte geniş ölçekte kullandığımız kendi backoffice uygulamalarımızın bir kısmı UniGUI de  geliştirildi.
Uygulamanızı ISAPI DLL olarak IIS üzerinde sunarsanız çökme ve performans sorunu yaşama ihtimaliniz minimum yer yer aylarca sunucumuzu yeniden başlatmadığımız olmuştur.
Lisanslı bir kullanıcıyız destek konusunda en geç 1 saat içinde cevap veriyorlar genelde, ancak çok küçük bir ekip var ve tek bir geliştirici var bu biraz endişe verici Smile çok sık güncelleme yayınlıyorlar bariz hatalar çıkmıyor genelde çok derinlerde kalmış istisnai durumlar düzeltiliyor, güncellemeler genelde yeni bileşen yada mevcut bileşenler üzerindeki geliştirmelerden kaynaklı oluyor. Tasarladığınız uygulamalar derlenmiş kod ve statik JS kitaplığı kullanıyor bu durumda elinizdeki kararlı işinizi gören bir sürümle Windows ve IIS var olduğu sürece sorun yaşamazsınız. tabi yeni tarayıcılar yada radikal sürüm değişiklikleri JS yorumlamalarında farklılıklara neden olursa ExtJS in uygun bir sürümü ve buna uyumlu bir UniGUI sürümü gerekliliği doğabilir. Şuan Windows destekleniyor, Linux için somut bir adım yok ama umut var çünkü sonuçta projeler VCL değil birer konsol uygulaması gibi çalışıyor, delphi tarafındaki Linux yaklaşımı görsel den ziyade Console uyuglamaları yönünde olduğu için bencede yakın gelecekte Linux desteği gelebilir.

(02-09-2016, Saat: 11:16)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUniGUI kullanan arkadaşların bir de Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol inceleyip kıyaslama yapmaları hoş olurdu Wink

Güzel espiriydi Smile

Elinde çekiç olan her şeyi çivi görür Smile
Cevapla
#8
(02-09-2016, Saat: 11:34)pro_imaj Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(01-09-2016, Saat: 11:34)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlFesih bey ,
UniGUI ile ticari bir uygulama geliştirmedim ancak çok detaylı ve bayi ağımızla birlikte geniş ölçekte kullandığımız kendi backoffice uygulamalarımızın bir kısmı UniGUI de  geliştirildi.
Uygulamanızı ISAPI DLL olarak IIS üzerinde sunarsanız çökme ve performans sorunu yaşama ihtimaliniz minimum yer yer aylarca sunucumuzu yeniden başlatmadığımız olmuştur.
Lisanslı bir kullanıcıyız destek konusunda en geç 1 saat içinde cevap veriyorlar genelde, ancak çok küçük bir ekip var ve tek bir geliştirici var bu biraz endişe verici Smile çok sık güncelleme yayınlıyorlar bariz hatalar çıkmıyor genelde çok derinlerde kalmış istisnai durumlar düzeltiliyor, güncellemeler genelde yeni bileşen yada mevcut bileşenler üzerindeki geliştirmelerden kaynaklı oluyor. Tasarladığınız uygulamalar derlenmiş kod ve statik JS kitaplığı kullanıyor bu durumda elinizdeki kararlı işinizi gören bir sürümle Windows ve IIS var olduğu sürece sorun yaşamazsınız. tabi yeni tarayıcılar yada radikal sürüm değişiklikleri JS yorumlamalarında farklılıklara neden olursa ExtJS in uygun bir sürümü ve buna uyumlu bir UniGUI sürümü gerekliliği doğabilir. Şuan Windows destekleniyor, Linux için somut bir adım yok ama umut var çünkü sonuçta projeler VCL değil birer konsol uygulaması gibi çalışıyor, delphi tarafındaki Linux yaklaşımı görsel den ziyade Console uyuglamaları yönünde olduğu için bencede yakın gelecekte Linux desteği gelebilir.

(02-09-2016, Saat: 11:16)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUniGUI kullanan arkadaşların bir de Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol inceleyip kıyaslama yapmaları hoş olurdu Wink

Güzel espiriydi Smile

Elinde çekiç olan her şeyi çivi görür Smile

Aslında espri yapmamıştım. Web programlama ile hiç işim olmadığı için; bu işi daha önce yapanların gözü ile yapacakları değerlendirmenin faydalı olacağını düşündüğüm için karşılaştırılmasını istemiştim. Ama sanırım sizin söyleminizden DevExpress'in çok daha profesyonel olduğunu anlıyoruz. Doğru mu anlamışım Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
Tuğrul abi DevExpress in web ürünlerini çok uzun zamandır takip ediyoruz ancak bildiğimiz Delphi ile hızlı bir şekilde web iş uygulamaları için DevExpress in bir desteği yok keşke olsa Smile
Bu arada Teknokentimizde DevExpress in web ürünlerini kullanarak proje geliştiren firmalar var sakın bulaşmayın diyorlar aşırı hantal ve müdehalelere pek uygun olmadığını belirtiyorlar ama şu bir gerçek son derece şık görüntüler sunuyor.
Cevapla
#10
@Tuğrul HELVACI Hocam, tamda Volkan'ın söylediği gibi.
Web konusunda Html5 ile uyumlu olursa hem web hemde mobil tarafı çözülmüş oluyor Visual Studio'nun en büyük avantajı da bu sistemlerle entegre olabilmesi.

Konudan konuya geçmek istemiyorum fakat Web Java Framework olarak arkadaşlara fikir vermesi açısında iyi bir örnek vaadin'i videsonu Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol izleyebilirsiniz.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Unigui UnimDBGrid1 Dinamik Yapı elixir84 8 400 13-09-2018, Saat: 15:05
Son Yorum: selchuk
  UniGui DBGrid yazı fontları nasıl küçültülüyor? selchuk 5 179 12-09-2018, Saat: 08:18
Son Yorum: elixir84
  Unigui Desktop Teaser SimaWB 1 176 05-09-2018, Saat: 21:10
Son Yorum: mcuyan
  Unigui HyperServer pro_imaj 2 238 28-08-2018, Saat: 15:34
Son Yorum: pro_imaj
  Unigui Fastreport PDF Viewer elixir84 2 281 04-08-2018, Saat: 14:21
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi