Proje Hakkında Öneriler

Başlatan ByTEK, 28 Ocak 2016, 09:39:22

ByTEK

Merhaba,

Log center yazılımı yazacağım. 2 adet yöntem var aklımda bu konuda fikrinizi almak istiyorum.

Yazılımda 2 adet exe var. biri yönetim amaçlı kontrol paneli, diğeri ise asıl işi yapan exe.

1.yöntem : yönetim exesi gerekli parametreleri alıp ini olarak diğer exeye verip çalıştıyor. 2.exe verilen parametrelere göre işlemleri yapıyor. Bu yöntemde farklı portlardan dataları alıp gerekli filtre işlemlerini yapıp arşivliyor. işin güzel tarafı her lokasyonu farklı porttan alıp farklı exeler ile işliyorum.

Bu yöntemi kullanırsam yönetim yazılımı ve arkada çalışan exeler ile iletişimi nasıl gerçekleştirebilirim. ?

2.yöntem : yönetim exesi ve bir adet exem var yönetim exesi parametreleri ini olarak diğer exeye veriyorum. bu sefer port bazında değilde hostname bazında arşivliyor. fakat yükü bir yazılım çekecek işlem gücü artacak. yoğun data akışında donmalar olabilir ?

şimdilik aklımdakiler bunlar aklıma başka birşey gelince yazacağım. fikrinizi alamak istiyorum.

boreas

Farklı makinelerden bilgileri alıp toplayacaksın gibi düşünüyorum. Anladığım kadarıyla. Ini fikri bana şahsen kötü geliyor eğer iki yazılımın iletişimine uğraşıyorsan ve aynı makinelerdeyseler, dde, post message tarzı yöntemler öneririm. Diğer bir yöntemde şu bir tane DB. kurarsın firebird gibi. ana makina bir ayar ya da veri işlediği zaman tabloya bir event oluşur. Event'deki mesaj hangi istemciyi ilgilendirdiğini içerir o istemcide bilgiyle işi ne ise onu yapar. Ya da ağ üzerinden her istemciyle sunucu birebir iletişim kurar. (Konuyu biraz daha açman gerekiyor gibi :) )

ByTEK

#2
Tamam konuyu açalım ☺

Firewalllar internet erişim loglarini verdiğim adrese ilgili porta UDP protokolünde basıyor.

Yazdığım yazılı portu dinleyerek alıp işliyor ve arsivliyor.

1 firewall olunca sorun yok fakat 50 - 100 olunca tek yazılım ile yogun gelen loglarini işlemek sıkıntı.

Bende düşündüm yönetim için bir yazılım yazıp sadece exenin ihtiyacı olduğu parametreleri ini yapıp bu iniyi exeye verip ona göre işlem sağlamak daha uygun olur diye.

DB kullanmadan çözüm arıyorum bundan ötürü ini dedim.

Yönetim yazılımdan diğer exeyi kontrol etmem gerek durdur başlat durum ney gibi

boreas

Açıkcası DB.den kaçma derim. Firebird.de yeterli gelir diye düşünüyorum.  O kadar bilgiyi diske yazmak okumak vs. başka bir işlem gücü / yavaşlık bilgi kaybı getirecek. Bu kez gelen bilgilerin işlenmesi başına dert olacak. DB. ile bilginin kayıt olup olmadığını hatta bazı işlemleri procedureler ile direk db.de bile çözebilirsin.

ByTEK

#4
Hocam txt olarak olması gerek. çünkü bakanlık yazılımı ile imzalanıyor. her günün logları gün adında txt olarak yazılıyor. Yani hep yokuş :D

mesaj birleştirme:: 29 Ocak 2016, 12:51:30

1.yönteme karar verdim.

şimdi yönetim exesi ile arkada çalışan diğer exeleri nasıl haberleştirebilirim. dur,çalıştır, veya hata varsa sonuçları gibi. programı kapat vs komut göndermem gerek. servis olarak çalışan exeler aynı isim altında olduğu için isimden gidemem. çözüm arıyorum.

mesaj birleştirme:: 28 Ocak 2016, 12:56:11

yok Thread kullanmaya karar verdim. en azından aynı exe içinde istediğimi yaparım.

peko

Alıntı YapHocam txt olarak olması gerek. çünkü bakanlık yazılımı ile imzalanıyor. her günün logları gün adında txt olarak yazılıyor. Yani hep yokuş :D

Txt olmasına gerek yok.
Store and forward yapı kur.
UDP'yi dinle, sinyal geldiğinde paketi hiçbir müdahalede bulunmadan (raw) db'ye yaz. (Db'ye yazma esnasında diğer gelen paketleri aradan kaçırma, oluşturacağın diğer thread'ler ile onları da yakala ve işleme al..)
Buraya kadar paketler sağlıklı bir şekilde db'ye yazılmış olur.. bu katmanda işin biter..
Sonra;
Windows Servis yaz, kaydettiğin paketleri arka planda işle ve txt formatına nereye nasıl istiyorsan yaz veya gönder..

Böyle işlemleri birbirinde izole etmiş olursun. Paket geliş hızı, db yazma hızı, txt yazma hızı vb işlemler fıstık gibi çalışır.

Çalışmazsa geri alırım. :)

Kolay gelsin...
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

peko

" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

ByTEK

@peko

hocam şuanda yok sahada başka işler ile uğraşıyorum. gelişme olunca bilgi veririm.