Hibrit mi? Native mi?

Kategori: C#, Genel, Genel Programlama, Referanslar
Tarih: 2nd Ekim 2017

Bir platformda, bir arkadaşın başlıktaki sorusu üzerine yazmış olduğum yorumdur. Yeni başlayan arkadaşlar için bir fikir verebilir.

 

Merhaba. Yukarıda bazı arkadaşlar biraz değinmişler. Bu soruyu biraz “Java mı yoksa C# mı?” sorusuna; biraz da “C# mı yoksa C++ mı?” sorusuna benzettim. Ben cevap olarak direk hibrit yada native demeyi doğru bulmuyorum. Bir parantez olarak şunu söyleyeyim; eğer vaktin var ise Javayı ve Swifti öğrenmeni tavsiye ederim. Dil seçiminde kıyaslama yapabilmen için o dili biliyor olman büyük fayda sağlayacaktır.

Hibrit frameworkler aslında uygulamanızın altında yine native kütüphaneleri kullanırlar. Siz bu native kütüphaneleri frameworkün izin verdiği dilde yönetirsiniz/kullanırsınız. Arada bir katman daha olması sebebiyle hibrit uyglamalar biraz daha yavaştır denilebilir. Bir örnek vermek gerekirse; mesela bir hibrit frameworkün bazı kütüphanelerinde IOS için çalışmaz yada desteklenmez yazar. Bu demek oluyor ki bu kütüphane içerisinde ios için native dosyayı barındırmıyor. Bu farklı sebeplerden olabilir. IOS gerçekten o işe izin vermiyor olabilir, geliştirici daha IOS için kütüphane yazmamış olabilir vs. vs.

Bunun yanında, hibrit uygulama geliştirirken işletim sisteminin değil kullandığınız frameworkün sınırları dahilindesiniz. Eğer frameworkün sizin istediğinizi yapan bir kütüphanesi yok ise uygulama geliştirmeye devam edemezsiniz. O özellikten vazgeçmelisiniz. Yada istediğiniz özelliği sağlayan bir kütüphanesi varsa bile kütüphanenin şarj tüketimine etkisi, işlemci kullanımı vs. tamamı sizin kontrolünüz dışında (İstisna: kütüphaneleri açık kaynak olan bir framework kullanıyor iseniz kodun istemediğiniz kısmını düzenleyip yeniden derleyebilirsiniz.)

Bunlar hibrit uygulamaların ilk bakışta göze gelen eksileri. Fakat bunların tamamını silip süpürecek bir artısı var ki; bir sefer yaz her platformda çalışsın özelliği. Eğer projeniz -aşağıda değineceğim gibi- hibrit bir framework ile yazılmaya uygun ise hem geliştirirken hem güncellerken en az yarı süresinde tasarruf edersiniz. Ayrıca yukarıda dezavantaj olan 3. parti kütüphaneler sayesinde herşeyi yeniden yazmayıp bir çok şeyi sadece kullanıp uygulama geliştirme sürecinizi de hızlandıracaksınız. Bu açıdan da avantaj sayılabilir. Ayrıca bu kütüphanelerin çoğu açık kaynak olup; ister istemez onlarca geliştiricinin eleğinden geçiyor. Ki defalarca güncellenenleri mevcut.

Şimdi asıl konuya dönersek, genel olarak hangi dil yada hangi platformu seçmeliyim demek çok sığ. Bence her proje için özel olarak değerlendirilip seçim yapılmak daha doğru. Yazılım yaşam döngüsünün analiz basamağı bunu amaçlar. Mesela bir gömülü sistemler projesi yapıyorsanız ve sadece bazı grafikleri izlemek için bir mobil uygulama tasarlayacak iseniz neden ayrı ayrı her platform için geliştirme yapasınız ki; bazı frameworklerde sadece javascript/typescript kullanarak bile geliştirme yapabiliyorken.

Yada yukarıda hocamın bahsettiği gibi performans gerektiren bir projeniz var ise native kullanmamak demek intihar olur. En iyi dil, en iyi framework yoktur, o proje için en uygunu vardır. Eğer öyle olsaydı whatsapp gibi performans canavarı bir uygulama -sunucu tarafı-herkesin tartıştığı Java yada C# da yazılırdı. Kaç bilgisayar/yazılım mühendisi biliyor ki whatsappın yazıldığı dili?

Yapıştır! Etiket Programı

Kategori: C#, Referanslar
Tarih: 1st Nisan 2013

Kütahya il özel idaresi için geliştirilmiş etiket yazdırma programı. Program standart bir etiket kağıdı için pdf çıktı oluşturuyor. Şuan nette 3-4 tane etiket programı var ama çok esnek değiller tam istediğiniz etiketi yazdıramıyorsunuz.

Program WPF üzerine MVC pattern kullanılarak geliştirilmiştir. Arayüzle kodlamayı tamamen bağımsızlaştırmak içinde MVVM pattern kullanılmıştır. Veri Tabanına bağlantı için Entity Framework ile Mysql kullanılmıştır. EF ile istediğiniz veritabanına bağlayabilirsiniz.  Ekran önizlemeleri, kaynak kod ve veritabanı dosyası aşağıdadır indirerek istediğiniz şekilde özelleştirebilirsiniz.

Projeyi İndir

Edit: Programda tespit edilen bazı hatalar giderilmiş ve bazı fonksiyonlar geliştirilmiştir v1.1 i buradan indirebilirsiniz.

Yorumlar: 0 » tags: , , , ,

Delege – Event hakkında

Kategori: C#
Tarih: 19th Ocak 2012

Bu yapı benim aklıma hep mail listelerini getiriyor. Önce bir gurup oluşturursun sonra bir bilgiyi göndermek için sen bir sefer gönder dersin sonra sistem o bilgiyi listedeki herkese gönderir. Aslında Delege – Event yapısıda buna benzer. Önce bir delege oluşturursun (bunu bir kişi olarak düşün). Sonrada bir event oluşturursun. -bunuda bir liste olarak düşünebiliriz- Eventi istediğin kadar Delege ile doldurursun. İhtiyacın oluncada sen eventi çalıştırırsın, o da listedeki bütün delegeleri.

Delegeler fonksiyonları temsil eden yapılardır. Aslında bi işlem yapmazlar. Sadece bağlı oldukları fonksiyonları tetiklerler. Bir delegeyi aşağıdaki şekilde tanımlayabiliriz.

public delegate void BenimDelegem(int parametre);

Delegeler bağlı oldukları fonksiyonlar ile aynı yapıda olmalılardır. Yani yukarıdaki delegeyi bağlayacağınız fonksiyonda void türünde olmalı ve integer bir paratmetre almalı. İsterseniz Event olmadan da direk fonksiyonu delegeye bağlayabilirsiniz

BenimDelegem delege = fonksiyonAdi;

“delege” isminde bir delege oluşturduk ve fonksiyonAdi metoduna bağladık.

Eventler birden fazla -aynı türde- delegeyi barındıran yapılardır. Aşağıdaki şekilde oluşturulurlar.

public event BenimDelegem BenimEventim;

Bir evente aşağıdaki şekilde delege ekleyebilir ve çıkartabilirsiniz.

BenimEventim+= new BenimDelegem(delegenin bağlı olduğu fonksiyon ismi);

BenimEventim-= new BenimDelegem(delegenin bağlı olduğu fonksiyon ismi);

Senaryo şu çok odalı bir işletme düşünelim oda sayısıda dinamik olsun, sürekli yeni odalar eklenebliyor ve çıkabiliyor. Her odada bir buton var müdür gelince personelden birisi odanın butonuna basıyor ve her odada müdürün bulunduğu odanın numarası çıkıyor. Delege yapısı kullanmıyor olsak her oda için ayrı ayrı fonksiyon ( “müdürün bulunduğu odayı ekrana yaz” fonksiyonu) tetiklememiz gerekecekti. Yada odaları (formları) foreach ile okuyup  bu fonksiyonu tetikletebilirdik.

Delege – event yapısı bizim işimizi çok kolaylatıracak. 1 tane müdür geldi diye event oluşturacağız. Ve tüm odaları (delegeleri) bu evente ekleyeceğiz. Bunu görev listesi olarak düşünebiliriz. Evente, müdür hangi odaya geldi ise onun numarasını göndereceğiz. Sonra o bütün delegeleri çalıştıracak yani bütün formlara bizim yerimize müdür şu odada yazacak. İcraata geçelim.

Bir tane oda formumuz olsun. Bunun iki tane methodu olacak:

1.si ekranaYaz metodu. Delege bu methoda mürün kaçıncı odada olduğunu söyleyecek buda kendi formuna yazacak

2.si buttonClick metodu. Müdür bu odaya gelir ise personel bu butona basarak diğer odalara müdür bizim odada diye haber verecek.

Özetleyecek olursak hangi odadan basılırsa basılsın müdür bizim odaya geldi eventi tetiklenecek. Oda görev listesindeki bütün görevleri (yani delegeleri ve dolayısıyla delegelerin çalıştırdığı fonksiyonları) çalıştıracak böylece tek işlem ile bütün odalara bilgi yazılmış olacak. Proje dosyasını buradan indirebilirsiniz.

Yorumlar: 0 » tags: , ,
Optimization WordPress Plugins & Solutions by W3 EDGE