Moduler Programlama?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Moduler Programlama?
Veritabanı olarak firebird kullanıyorum.
kütüfphane yada ayrı ayrı exe dosyaları kullanarak modul modul çalışan bir paket program hazırlamak istiyorım.
tüm özellikler tek bir exe de olmayacak
ayrı exe veya dll (tercihimdir) dosyalarında yapmayı düşünüyorum.
ancak veritabanına her exe den ayrı ayrı ulaşmak kanaatimce problem olur.
aranızda bu tip bir uygulama yazılmak istendiğinde izlenmesi gerkn yolu kısaca açıklayacak birisi var mı?
yardımlarınız için şimdiden teşekkürler. iyi çalışmalar.
kütüfphane yada ayrı ayrı exe dosyaları kullanarak modul modul çalışan bir paket program hazırlamak istiyorım.
tüm özellikler tek bir exe de olmayacak
ayrı exe veya dll (tercihimdir) dosyalarında yapmayı düşünüyorum.
ancak veritabanına her exe den ayrı ayrı ulaşmak kanaatimce problem olur.
aranızda bu tip bir uygulama yazılmak istendiğinde izlenmesi gerkn yolu kısaca açıklayacak birisi var mı?
yardımlarınız için şimdiden teşekkürler. iyi çalışmalar.
En son Demitri tarafından 24 Nis 2006 06:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Moduler Programlama? (YARDIM PLS)
Sizce nasıl bir sorun olabilirDemitri yazdı: ancak veritabanına her exe den ayrı ayrı ulaşmak kanaatimce problem olur.

Çok kullanıcılı sistemlerde tek veritabanı üzerinden çalışabiliyor. Örneğin Müşteri, Rapor, Stok gibi modullere ayırabilirsiniz

n-tier bir mimari isteğini karşılayabilir.
Bir Sunucu yazılımı yap. Bu yazılım VT'ye bağlansın ve sorguları çalıştırsın, bilgiyi insert etsin vs. Ayrıca kendisine bağlanan uygulamalara bu hizmeti versin.
Senin n tane modulün bu yaptığın sunucu ile konuşacak, DB ile doğrudan değil. DB ile sadece sunucun konuşacak.
Sen fonksiyonlar ile bu sunucu uygulamandan bilgi çekeceksin veya veri göndereceksin.
Bir Sunucu yazılımı yap. Bu yazılım VT'ye bağlansın ve sorguları çalıştırsın, bilgiyi insert etsin vs. Ayrıca kendisine bağlanan uygulamalara bu hizmeti versin.
Senin n tane modulün bu yaptığın sunucu ile konuşacak, DB ile doğrudan değil. DB ile sadece sunucun konuşacak.
Sen fonksiyonlar ile bu sunucu uygulamandan bilgi çekeceksin veya veri göndereceksin.
selam modüler programa ile ilgili benimde proje planlarım var.Aslında fazla düşünmeye gerek yok.En ilkel yolu veritabanını tüm modüllerin kullanıldığını varsayarak tasarlayacaksın.programın kısayola çift tıklanarak açıldığında menü formun gelecek.menüden örneğin stok butonuna tıklayınca winexec ile stokprj yi açacaksın,cari ye tıklayınca cariprj yi açacaksın burada 2 püf noktası var.1 kullanıcı programın dizininden direk modüllerin exe sini açmaya çalıştığında anamenü programı çalışmıyorsa bunu kontrol edip kullanıcıya uyarı veya hata verdirmelisin.2 eğer şirket mantığı kullanacaksan anamenüden kullanıcı hangi şirketi seçerse modüllerin exe leri açıldığında seçilen şirketi algılayıp ona bağlanmalı.bunun gibi bir yapı iyi hesaplanarak dizayn edilirse güzel bir modüler programın olur.
demek istediğin anlıyorum. aslında bunu ben de düşünmüştümcoderlord yazdı:n-tier bir mimari isteğini karşılayabilir.
Bir Sunucu yazılımı yap. Bu yazılım VT'ye bağlansın ve sorguları çalıştırsın, bilgiyi insert etsin vs. Ayrıca kendisine bağlanan uygulamalara bu hizmeti versin.
Senin n tane modulün bu yaptığın sunucu ile konuşacak, DB ile doğrudan değil. DB ile sadece sunucun konuşacak.
Sen fonksiyonlar ile bu sunucu uygulamandan bilgi çekeceksin veya veri göndereceksin.
fakat daha az uğraştıran bi yolu vardır diye sormuştum.
ama haklısın sanırım gene en hızlı yol bu.
teşekkürler. iyi çalışmalar.
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Merhabalar,
işin içinde veritabanı olduğunda bir kaç yöntem var. hemen en basiti olarak mySQL derim.
bu bir networkte olduğunda tüm kullanıcılar kullanabilir anlamına gelir.
Ama ben bunu istemiyorum, veri tabanını ayrıca dağıtmak zorunda kalmıyayım diyorsan, access yada paradox (ve hatta diğer tüm VT'ler) için RemoteDataModule olayını tavsiye ederim. Başlı başına kitap konusu olacak bir yöntemdir. Ki bu RDM (remote data module) ister DCOM ile ister socket ile bağlanabilirsin. RDM ile sadece veritabanı işlemleri değil, uzak fonksiyon çağırma (benim tabirimdir) işlemleride yapaiblirsin. Nasıl? mesela basitçe 2+2 gibi bir işlemi RDM içinde hesaplatıp geri döndürebilirsin. vs. vs.
ben eskiden paradox kullanırdım çok kullanıcı sistemler için ki süperde hızlı çalışırdı, iddada ederim mysql ile bile yarışır. ama BDE gibi bi de çok çok nadirde olsa çok kullanıcı olmasındsan ötürü dataların boulması beni soğuttu. 250 kullanıcıya kadar paradox ile VT kurabilirsin.
Ama sonra gördüm ki RDM ile herşey çok güzel. ve gördüm ki, XP ve sonrasında ADO için (.MDB) access veritabanı için gerekli bileşenler sistem içinde geliyor. Bir anlamda windowsun yerel veritabanı özelliğini aşıyor. RDM ile ACCESS veritabanını aynı anda kullanıyorum. çokta iyi neticeler aldığımı söylüyebilirim. Tabi çok ciddi sistemler için mysql yada muadil şeyleri kullanmak iyi olacaktır.
Modüler yapı için tek söyleyeceğim BPL. DLL halt etmiş. başkada bişi söylemeye gerek yok. Normalde DLL içine bir form gömebilirsiniz, ama bu form için kullanılan tüm bileşenlerde DLL içine yüklenir.
BPL'de ise, herşey dışarıdadır. hatta run-time'da bile bir BPL'i yükler ve kaldırırsınız. Öyleki çalıştırdığınız bir EXE'de falanca bir BPL'i yükler "aa şurası olmamış" dersiniz ve kaldırıp, delphide düzeltir derler ve EXE'den tekrar yükleyebilirsiniz.
http://www.musonya.com/setup/jfs_setup.exe
bu ticari uygulamamı incelemenizi tavsiye derim. Hemde benim için test etmiş olursunuz. Şuan için BETA kabul edin lütfen.
Bu JustFilter diye adlandırdığım uygulamada tamamen modüler bir yapı vardır. Zaten yıllardır BPL teknolojisini kullanırım.
Bu BPL teknolojisi sayeesinde modüllerim 30KB, 100Kb gibi komik boyutlardadır. En baba modülün 250KB civarındadır ki buda içindeki resim yada iconlar yüzünden şişmektedir.
JustFilter uygulamasındada göreceğiniz üzere, kendi kendini güncelelyen uygulamalar için BPL 'in bir kez daha ne faydalı birşey olduğunu anlıyacaksınız.
Vaktim olursa sizlere BPL teknolojisi ile yazılmış bir kaç örnek hazırlarım.
Sizleri özellikle modüler programlamayla ilgilenenleri itahlandırmak maksadıyla küçük örnekler vereyim. Anlatımsal olarak.
Benim bir ana formum var. sol tarafında bir menü var. sağ tarafında ise alClient olmuş bir PANEL var.
soldaki menüden STOK'u seçtiğimi varayın. bu menü kodunda sadece şunlar olacaktır.
Evet bu kod ana exe'ye stok.bpl'i yükleyecektir. ama nereye yükleyecek. istediğimiz yere. isterseniz popup şeklinde isterseniz PANEL'in içine.
stok.bpl'in daha doğrusu her bpl'de olacağı gibi bir initialization şeysi vardır.
bu kısımda loadpackage olduğunda yapılacak işlemleri yaparsınız. ve bu kısımda STOKFORM2u create edebilirsiniz.
ve bu formu ana form üstündeki PANEL'in içine gömeblirsiniz.
nasıl?
işte bu kod stok formunu ana form üstündeki Panel12in içine gömecektir.
Tabi stok formunuz border=none olmalıdır. yoksa aynen göründüğü gibi içine gömülür. birde alClient olsun.
İlk başlarda BPL teknolojisine alışmak zor gelecektir. zaten ilk önce artık bir proje dosyası ile çalışmayı öğreniyorsunuz.
Proje dosyanızda yapacağınız uygulamaya göre onlarca BPL (paket) olacaktır.
Bir BPL içinde kullanılan bileşenler ana EXe içine gömülemez. ana EXE'yide paketler ile beraber derlemeniz gerekir. Bunun için ana EXe'nin özelliklerinden paketler bölümünde "build with runtime packages" işaretleyiniz.
Biliyorum bu çok yeterli değil ama bir çoklarınız için kafalarda şimşekler çaktıracak bilgiler içermktedir.
Dediğim gibi vakit bulursam sizlere bu konuyla ilgili örnekler verceğim. Aslında tek bir örnek bile sizin için yeter.
Saygılar
işin içinde veritabanı olduğunda bir kaç yöntem var. hemen en basiti olarak mySQL derim.
bu bir networkte olduğunda tüm kullanıcılar kullanabilir anlamına gelir.
Ama ben bunu istemiyorum, veri tabanını ayrıca dağıtmak zorunda kalmıyayım diyorsan, access yada paradox (ve hatta diğer tüm VT'ler) için RemoteDataModule olayını tavsiye ederim. Başlı başına kitap konusu olacak bir yöntemdir. Ki bu RDM (remote data module) ister DCOM ile ister socket ile bağlanabilirsin. RDM ile sadece veritabanı işlemleri değil, uzak fonksiyon çağırma (benim tabirimdir) işlemleride yapaiblirsin. Nasıl? mesela basitçe 2+2 gibi bir işlemi RDM içinde hesaplatıp geri döndürebilirsin. vs. vs.
ben eskiden paradox kullanırdım çok kullanıcı sistemler için ki süperde hızlı çalışırdı, iddada ederim mysql ile bile yarışır. ama BDE gibi bi de çok çok nadirde olsa çok kullanıcı olmasındsan ötürü dataların boulması beni soğuttu. 250 kullanıcıya kadar paradox ile VT kurabilirsin.
Ama sonra gördüm ki RDM ile herşey çok güzel. ve gördüm ki, XP ve sonrasında ADO için (.MDB) access veritabanı için gerekli bileşenler sistem içinde geliyor. Bir anlamda windowsun yerel veritabanı özelliğini aşıyor. RDM ile ACCESS veritabanını aynı anda kullanıyorum. çokta iyi neticeler aldığımı söylüyebilirim. Tabi çok ciddi sistemler için mysql yada muadil şeyleri kullanmak iyi olacaktır.
Modüler yapı için tek söyleyeceğim BPL. DLL halt etmiş. başkada bişi söylemeye gerek yok. Normalde DLL içine bir form gömebilirsiniz, ama bu form için kullanılan tüm bileşenlerde DLL içine yüklenir.
BPL'de ise, herşey dışarıdadır. hatta run-time'da bile bir BPL'i yükler ve kaldırırsınız. Öyleki çalıştırdığınız bir EXE'de falanca bir BPL'i yükler "aa şurası olmamış" dersiniz ve kaldırıp, delphide düzeltir derler ve EXE'den tekrar yükleyebilirsiniz.
http://www.musonya.com/setup/jfs_setup.exe
bu ticari uygulamamı incelemenizi tavsiye derim. Hemde benim için test etmiş olursunuz. Şuan için BETA kabul edin lütfen.
Bu JustFilter diye adlandırdığım uygulamada tamamen modüler bir yapı vardır. Zaten yıllardır BPL teknolojisini kullanırım.
Bu BPL teknolojisi sayeesinde modüllerim 30KB, 100Kb gibi komik boyutlardadır. En baba modülün 250KB civarındadır ki buda içindeki resim yada iconlar yüzünden şişmektedir.
JustFilter uygulamasındada göreceğiniz üzere, kendi kendini güncelelyen uygulamalar için BPL 'in bir kez daha ne faydalı birşey olduğunu anlıyacaksınız.
Vaktim olursa sizlere BPL teknolojisi ile yazılmış bir kaç örnek hazırlarım.
Sizleri özellikle modüler programlamayla ilgilenenleri itahlandırmak maksadıyla küçük örnekler vereyim. Anlatımsal olarak.
Benim bir ana formum var. sol tarafında bir menü var. sağ tarafında ise alClient olmuş bir PANEL var.
soldaki menüden STOK'u seçtiğimi varayın. bu menü kodunda sadece şunlar olacaktır.
Kod: Tümünü seç
LoadPackage('stok.bpl';
stok.bpl'in daha doğrusu her bpl'de olacağı gibi bir initialization şeysi vardır.
bu kısımda loadpackage olduğunda yapılacak işlemleri yaparsınız. ve bu kısımda STOKFORM2u create edebilirsiniz.
ve bu formu ana form üstündeki PANEL'in içine gömeblirsiniz.
nasıl?
Kod: Tümünü seç
initialization
frmStok := TfrmAStok.Create(Application);
frmStok.Parent := TPanel(Application.MainForm.FindComponent('PANEL1'));
frmStok.Visible := True;
finalization
if frmStok <> nil then frmStok.Destroy;
Tabi stok formunuz border=none olmalıdır. yoksa aynen göründüğü gibi içine gömülür. birde alClient olsun.
İlk başlarda BPL teknolojisine alışmak zor gelecektir. zaten ilk önce artık bir proje dosyası ile çalışmayı öğreniyorsunuz.
Proje dosyanızda yapacağınız uygulamaya göre onlarca BPL (paket) olacaktır.
Bir BPL içinde kullanılan bileşenler ana EXe içine gömülemez. ana EXE'yide paketler ile beraber derlemeniz gerekir. Bunun için ana EXe'nin özelliklerinden paketler bölümünde "build with runtime packages" işaretleyiniz.
Biliyorum bu çok yeterli değil ama bir çoklarınız için kafalarda şimşekler çaktıracak bilgiler içermktedir.
Dediğim gibi vakit bulursam sizlere bu konuyla ilgili örnekler verceğim. Aslında tek bir örnek bile sizin için yeter.
Saygılar
bi kaç link buldum ama. du bakem aranaya devam ediyorum
http://bdn.borland.com/article/0,1410,27178,00.html
http://delphi.about.com/od/objectpascal ... 10901c.htm
http://delphi.about.com/od/objectpascal ... 10901a.htm
http://www.obsof.com/delphi_tips/DL613.html
bu aradaprogramın inernetten dosyalar yüklerken kilitlendi.
belki benim pc de sorun olabilir. bi ara tekrar denerim.
arayüzü çok güzel olmuş.
http://bdn.borland.com/article/0,1410,27178,00.html
http://delphi.about.com/od/objectpascal ... 10901c.htm
http://delphi.about.com/od/objectpascal ... 10901a.htm
http://www.obsof.com/delphi_tips/DL613.html
bu aradaprogramın inernetten dosyalar yüklerken kilitlendi.
belki benim pc de sorun olabilir. bi ara tekrar denerim.
arayüzü çok güzel olmuş.
- Murat DİCLE
- Kıdemli Üye
- Mesajlar: 702
- Kayıt: 19 Nis 2006 04:12
- Konum: İstanbul
- İletişim:
Bir örnek uygulama yazdım sizler için.
aşağıdaki linkten indirebilirsiniz.
http://www.musonya.com/delphisamples/mesajtest.zip
http://www.musonya.com/delphisamples/mesajtest.zip
Şuan fazla vaktim yok o nedenle burdan uygulama hakkında bilgi vermeyeyeceğim. program içinde gerekli açıklamaları yaptım..
Ama uygulama bu konu başlığıyla alakalı ve ayrıca Windows Messaging ile ilgili teknolojiyide içeriyor. Bir taşla iki kuş muhabbeti..
Zaten modül olayına girince mesaj olayınıda bilmeniz gerekiyor. Çok lazım oluyor...
Saygılar..
aşağıdaki linkten indirebilirsiniz.
http://www.musonya.com/delphisamples/mesajtest.zip
http://www.musonya.com/delphisamples/mesajtest.zip
Şuan fazla vaktim yok o nedenle burdan uygulama hakkında bilgi vermeyeyeceğim. program içinde gerekli açıklamaları yaptım..
Ama uygulama bu konu başlığıyla alakalı ve ayrıca Windows Messaging ile ilgili teknolojiyide içeriyor. Bir taşla iki kuş muhabbeti..
Zaten modül olayına girince mesaj olayınıda bilmeniz gerekiyor. Çok lazım oluyor...
Saygılar..