Yazılım Geliştirme Trendleri 2017/5: Rx

Mustafa Ekim
2 min readAug 11, 2017

--

Rx (Reactive Extensions) async programlamada, observable stream’ler ile çalışmak için ortak bir API spesifikasyonu. 15'den fazla programlama dili (Java, JavaScript, .NET, PHP, Scala, Ruby …) bu spesifikasyonu aynen yürürlüğe koydu (implemente etti). Bunun ne kadar istisnai bir durum olduğunu herhalde fark etmişsinizdir.

Hiçbir dilin, gerisinde kalmamak istediği bu API, bize (çok yakın) gelecekte verinin hem uygulamanın içinde, hem de uygulamalar arasında nasıl akacağını gösteriyor.

Rx

  • yakından bildiğimiz 2 design pattern’in

1. Observable Pattern

2. Iterator Pattern (infinite stream)

  • birleştirilmiş
  • geliştirilmiş
  • operatorler ile zenginleştirilmiş (declarative)
  • ve optimize edilmiş hali

Rx öncesi devirde:

  • Verinin kaynağından bir istekte bulunduğumuzda, kaynak bize veriyi gönderir. Veri transferi tamamlandığında, taraflar arasında bir ilişki de kalmaz. Dolayısıyla elimizde veri, istekte bulunduğumuz an için doğruyu yansıtıyor olmasına rağmen, sonraki zamanlar için doğruyu yansıtmayabilir.

Rx ile ise:

  • Artık verinin kaynağından bir defalık bir istekte bulunmuyoruz. Aksine onunla kalıcı bir bağlantı kuruyoruz. (subscribe) Bu bağlantı ile veri bize sürekli olarak akıyor ve her türlü değişiklikten anında haberimiz oluyor.

Rx, yazılım geliştirme yöntemlerini tamamen ters düz ediyor. Eskiden biz veri için istekte bulunuyor iken, artık kaynaklar bize sürekli veriler gönderiyor. Üstelik birçok farklı kaynaktan, bizim sırasını önceden tahmin edemeyeceğimiz şekilde, veriler üzerimize doğru akıyor. Dolayısıyla biz veriler geldiğinde (event driven) (güncellendiğinde) neler yapmamız gerektiğini programlıyoruz. Rx bu paradigma ile eşzamanlı veri akışını mümkün kılarak, daha anlık sistemler yaratabilmemize olanak sağlıyor.

**

Eğer sıfırdan yazılım kariyerine başlamak istiyorsanız, 3 aylık yoğun programlar düzenliyorum. Bilgi için: https://www.yenikodyazilimkursu.com/

Test Invite online sınav sistemi ile tanışın: İşe alım sınavları, Genel Yetenek Testleri ve İngilizce Seviye Tespit Testleri

Video kayıtlı ve zorunlu tam ekran ile güvenli online sınavlar yapmak için: https://www.testinvite.com/lang/tr/online-sinav-sistemi.html

--

--

Mustafa Ekim

Software Developer & Trainer. Entrepreneur & Founder of TestInvite Exam Software — https://www.testinvite.com