Aynı işi yapacak uygulamalar için mimari önerisi

Merhabalar,
Çalıştığım firmaya (yazılım sektörü üzerine değil) kendimi geliştirmek amacıyla bazı programlar hazırlıyorum. Firmanın internet sitesi bir e-ticaret firmasından hazır olarak alınmış ve bu e-ticaret firmasınında müşterilerine kullanıma sunduğu bir web servisi var (c# ile yazılmış SOAP servis)

Bu web servisi kullandığım ve python ile yazdığım Tkinter GUI mevcut ancak ben işleri ilerletmek istiyorum.

Öncelikle Tkinter kaldırıp PyQt6 ile devam edeceğim, ayrıca Django ile de bir web uygulaması oluşturmak istiyorum

Hazır bir web servis olduğundan database kullanmayacağım

Ancak sanki sıkıntı şurada oluyor, hem GUI’de hem web uygulamasında işlemler hemen hemen aynı olduğundan (ürün ekleme, güncelleme gibi) parametler ve metodlar aynı olacak.

Hem GUI hem de web uygulamasına aynı kodları koymam kod tekrarı oluşturuyor sanki

Bu durumu nasıl bir mimari kullanarak çözebilirim veya başka öneriniz var mı?

Bu uygulamalarin gorevleri ne?

GUI SOAP servisini tuketecek anladigim kadariyla. Web uygulamasi ne yapacak? Onu kim kullanacak?

Yani, belirli bir kullanıcı yok. Tamamen kendi kendime yapmak istediğim bir proje. İkisi de aynı görevde olacak.

Aslında ilk aklıma gelen katmanlı bir mimari hazırlayıp hem GUI hem de web uygulamasına vermek.

REST API gibi birşey oluyor herhalde

Acemiliğim için kusura bakmayın

her şey webe geçerken gui yazmak ne kadar mantıklı bilmiyorum. pyqt ile yapıp da webde yapamayacağınız ne var mesela? e ticaret sitesini django ile yapın, arkasına da bir erp gibi bir şey koyun her şey webde çözülsün mesela. uygulamalar tam olarak ne iş yapar bilmediğimden öylece söyledim ama bilemiyorum

1 Beğeni

Gerekli olup gereksiz olmadığı önemli bir mevzu değil.
Farklı uygulamaların kullandığı ortak bir platform gibi düşünebilirsiniz. PyQt ile yazdığım koddaki işimi gören fonksiyonları alıp Django ile yazdığım web uygulamasına kopyala yapıştır yapmak mantıksız bulduğum yer.

Hem web uygulamasının hemde GUI uygulamasının ortak ulaşabileceği bir mimari yapmak istiyorum.

Belki saçma bir durumdur bilemiyorum, ancak düşünmek, sorgulamak, planlamak, araştırmak, sormak insanı ileriye götürür. Başka türlü iki buton yapıp sadece GUI ile kalmak istemedim.

Ayni gorev derken, SOAP API’yi tuketmek mi?
Web uygulamasi nasil calisacak o zaman? Turlu daemon’larla SOAP’un arkasindaki datayi alip lokalde tutacak, degisiklikleri yukari mi iletecek? Yoksa ince bir tercume katmani olup istekleri dogrudan yukariya mi iletecek?

Hexagonal mimari hazirlayip SOAP kismini da ayri bir katmana almak mumkun.

Aman yok, hayir. REST’in cogu kisi tarafindan yanlis kullanildigini ve cogu modeli (hakiki) REST’e cevirmenin zor oldugunu gectim, zaten SOAP olan bir seyi REST’e cevirmekle niye vakit kaybedilsin ki?

Dil seviyesinde guzel ve kolay binding uretip iki client’in da kullanabilecegi bir modul yaratmak en guzeli olur. Onun disinda herhangi bir sey kodu duplike etmekten daha cirkin olacaktir diye tahmin ediyorum. Veya belki orta katman ara, bol makrolu bir dilde yazilip client’lara guzel fonksiyon prototipleri yaratilabilir. Icerikleri yine iki kere yazilmis olur ama en azindan mimari bir kere.

Hm ikisi de python’du di mi. Ortaik modul olur, evet.

SOAP’un neye benzedigini bilsek veya hakkinda en ufak bir bilgiye sahip olsak belki bu uretici surece katilabiliriz.

SOAP’un neye benzedigini bilsek veya hakkinda en ufak bir bilgiye sahip olsak belki bu uretici surece katilabiliriz.

XML üzerinden çalışıyor. zeep sayesinde python ile kullanıyorum. Servisin istediği türü ayarlayabiliyor ve aldığım veriyi uygun bir şekilde gönderebiliyorum

Aman yok, hayir. REST’in cogu kisi tarafindan yanlis kullanildigini ve cogu modeli (hakiki) REST’e cevirmenin zor oldugunu gectim, zaten SOAP olan bir seyi REST’e cevirmekle niye vakit kaybedilsin ki?

Sadece benzetmeydi, uğraşmam öyle bir şeye :slight_smile:

Dil seviyesinde guzel ve kolay binding uretip iki client’in da kullanabilecegi bir modul yaratmak en guzeli olur. Onun disinda herhangi bir sey kodu duplike etmekten daha cirkin olacaktir diye tahmin ediyorum.

Bu olabilir gerçektan üzerinde durayım

Hexagonal mimari hazirlayip SOAP kismini da ayri bir katmana almak mumkun.

Cahillik başa bela, adını ilk defa duyuyorum

Hm ikisi de python’du di mi.

Tkinter ile yazdığım bir GUI var ama PyQt daha iyi olduğundan oraya geçirmek istiyorum

Web uygulamasi nasil calisacak o zaman? Turlu daemon’larla SOAP’un arkasindaki datayi alip lokalde tutacak, degisiklikleri yukari mi iletecek? Yoksa ince bir tercume katmani olup istekleri dogrudan yukariya mi iletecek?

Sadece aldığı bilgileri servise göndermesini düşünüyorum. Local’de bir şey tutmasına gerek yok.

Bundan kastim API’nin ne oldugunu bilmekti. Basit bir key+value store mu, yoksa graph DB/QL kullanmaya degecek karmasik objeler silsilesi mi. Veri donemlik maaslar mi, yoksa anlik ruzgar yonu ve hizi mi. Bir kullanici ve patronu tarafindan haftada bir kere mi kullaniliyor, yoksa saniyede 2000 request yapan bir client havuzu mu var…

Neyse, cok onemli degil; dedigim seyler genel zaten.

hakiki rest dediğiniz tam olarak nedir hocam?