Server - Client ve Offline Çalışma
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Server - Client ve Offline Çalışma
Merhaba,
Geliştirdiğim bir projede şehirdeki farklı şubelerde kullanılan terminalleri ortak bir veri tabanına bağlamak istiyorum.Şu ana kadar sql server kullandım ve internet üzerinden bağlantıyı yapmayı düşünüyorum.Asıl sıkıntım ise internet bağlantısı olmadan da terminallerin offline çalışıp en azından verilerin son halini görebilmeleri. Bunu nasıl gerçekleştirebilirim?
Teşekkürler
Geliştirdiğim bir projede şehirdeki farklı şubelerde kullanılan terminalleri ortak bir veri tabanına bağlamak istiyorum.Şu ana kadar sql server kullandım ve internet üzerinden bağlantıyı yapmayı düşünüyorum.Asıl sıkıntım ise internet bağlantısı olmadan da terminallerin offline çalışıp en azından verilerin son halini görebilmeleri. Bunu nasıl gerçekleştirebilirim?
Teşekkürler
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
ClientDataset, Briefcase Modeline artı olarak varolan yapınızda şöyle bir yol kullanabilirsiniz.
iki veritabanınız olur.
1. si ana merkezdeki db
2. si terminaldeki.
kullanıcı bilgilerini 2. ye girer. yazacağınız bir programda bu bilgileri 1. dbye gönderir. bu işlemi yapabilmek içinde doğal olarak tablodaki alanlara durum diye bir alan koyup burdaki verilere göre hareket etmeniz gerekecek.
yani bir çeşit Briefcase yöntemini manuel yapmak gibi birşey.
iki veritabanınız olur.
1. si ana merkezdeki db
2. si terminaldeki.
kullanıcı bilgilerini 2. ye girer. yazacağınız bir programda bu bilgileri 1. dbye gönderir. bu işlemi yapabilmek içinde doğal olarak tablodaki alanlara durum diye bir alan koyup burdaki verilere göre hareket etmeniz gerekecek.
yani bir çeşit Briefcase yöntemini manuel yapmak gibi birşey.
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Interbase için konuşursak arka planda çalışan bir programım var. bu program hem yerel hemde uzak veritabanına bağlı. veritabanında ise bütün tabloların after insert ve after update olaylarında tablonun adını sisteme mesaj olarak geçen bir trigger mevcut. yerel tabloada her hangi bir update veya insert olduğunda program bu mesajı yakalayıp tablo adını alıyor. daha sonra ilgi ttablodaki kayıtların Durum alanı 0 olanları (yeni eklenmiş) insert into komutuyla uzak veritabanına kaydediyor ve durum alanını -1 yapıyor(uzak veritabanına gönderildi). ardından durum alanı 1 olanları (update edilmiş) alıp bunlar içinde düzgün update sqllerini oluşturup uzak veritabanına gönderiyor ve durum alanını -1 yapıyor(uzak veritabanına gönderildi).
Genel mantık bu şekilde ama bazı pürüzler de çıkıyor. mesela yeni kaydı uzak veritabanına insert ettikten sonra durum alanına -1 yazarken bu sefer after update triggeri devreye girerek bu alanı 1 yapmaya çalışıyor. bu gibi problemlerin önüne gçemek için extra birşeyler kullanmak gerekebiliyor.
gibi.
Genel mantık bu şekilde ama bazı pürüzler de çıkıyor. mesela yeni kaydı uzak veritabanına insert ettikten sonra durum alanına -1 yazarken bu sefer after update triggeri devreye girerek bu alanı 1 yapmaya çalışıyor. bu gibi problemlerin önüne gçemek için extra birşeyler kullanmak gerekebiliyor.
Kod: Tümünü seç
if new.Durum <> -1 gibi Then
new.Durum = 1
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Bu şekil bir yolu ben de düşündüm fakat projede 70 den fazla table bileşeni var.
Her biri için bu şekil bir yöntemi hatasız bir şekilde yürütmek mümkün gözükmüyor.Yeni bulduğum yöntem şöyle:
Projede Access kullanacağım.Makinelerden birine sabit ip alacağız ve iki makine yine birbirine bağlantılı çalışacak.İsterse Terminaller bu access veri tabanını bilgisayarlarına indirerek offline çalışabilecekler.
Sizce bunun gibi bir sistemin sakıncaları ne olabilir?Bir de veri tabanının otomatik olarak download ını nasıl sağlarım?
Her biri için bu şekil bir yöntemi hatasız bir şekilde yürütmek mümkün gözükmüyor.Yeni bulduğum yöntem şöyle:
Projede Access kullanacağım.Makinelerden birine sabit ip alacağız ve iki makine yine birbirine bağlantılı çalışacak.İsterse Terminaller bu access veri tabanını bilgisayarlarına indirerek offline çalışabilecekler.
Sizce bunun gibi bir sistemin sakıncaları ne olabilir?Bir de veri tabanının otomatik olarak download ını nasıl sağlarım?