Service Worker Nedir ve Ne İşe Yarar?
İnternet ağlarının tarihi; kaplumbağa ile tavşan masalının, sonsuz bir yorumu gibidir.
Tavşan ve kaplumbağa masalı, hız ve yavaşlık kavramlarını anlatan bir masaldır. Tavşan, hızlı koşan ve her şeyi acele eden bir karakterdir. Kaplumbağa ise, yavaş ve düşünceli bir karakterdir. Bu ifade, internet ağlarının tarihinde de benzer bir hız ve yavaşlık dengesinin olduğunu vurgulamaktadır. Yani internet ağlarının gelişimi, zaman zaman hızlı bir şekilde ilerleyen ve yeniliklere açık bir süreç olurken, zaman zaman da daha yavaş ve düşünceli bir şekilde ilerleyebilir. Bu ifade, internet ağlarının gelişiminde de bu hız ve yavaşlık dengesinin önemli olduğunu vurgulamaktadır.
İşletmeler internet ağı ile hayat buluyor. İnternet ağı olmasaydı Twitter olmazdı. Facebook olmazdı. Yalnızca işletmeler de değil; Wikipedi olmazdı. Favori blogunuz internet ağı olmasaydı olmazdı. İnternet ağı herhangi bir kullanımı kayırmaz. Kasıtlı olarak birçok aktiviteyi desteklemek için tasarlanmıştır.
Birçok mükemmel şey internet ağı ile, internet ağı da internet ile hayat buldu. Genellikle internet ağı (web) ile internet terimlerini birbirinin alternatifi gibi kullansak da World Wide Web, internetin kendisini ağ olarak kullanan tek uygulamadır. (E-mail'i de bir diğeri olarak kabul edebiliriz)
Web gibi internet de her türlü hizmeti destekleyebilecek biçimde tasarlandı. İnternet, ağların ağıdır. Her biri, çevredeki veri paketlerinin iletilmesi için aynı protokolü kullanmayı kabul eder. Bu veri paketleri fiber optik kablolar ile okyanusun dibini aşar, Wi-Fi veya radyo sinyallerine sıçrar veya uzaydaki uydulara yönlendirilir.
Bu ağlar çalıştığı sürece internet ağları da çalışır. Bazen bu ağ işleri yolunda gitmeyebilir. Mobil ağlar trene bindiğinizde veya daha farklı durumlarda tuhaf davranma eğilimindedirler. Wi-Fi ağları gayet iyi çalışırlar.
Ağ başarısız olduğunda, internet ağı da başarısız olur. Bu yalnızca böyleydi ve bu konuda yapabileceğimiz bir şey yoktu. Bu güne kadar.
İnternet Ağlarının Gelişimi
Geçmişte World Wide Web'in aşağılık kompleksi vardı. 90'larda CD-ROM'lar tarafından gölgede bırakıldı. Çünkü internet ağlarının erişemediği videolara, seslere ve diğer zenginliklere sahiplerdi ama linkleri yoktu. Bir şeyler için bir CD-ROM'dan diğerine link veremezdiniz. Böylece solup gittiler. İnternet büyüdü.
İnternet ağının tarihi kulağa, kaplumbağa-tavşan masalının sonsuz bir yorumu gibi gelmeye başladı. CD-ROM'lar, Flash ve yerel uygulamalar kısa vadede internet ağını gölgede bırakıyormuş gibi göründü ama internet ağı bir şekilde her zaman bu yarışı kazandı.
Bu teknolojilerin her biri internet ağı standartlarının gelişmesi konusunda oldukça yararlı oldu. Flash bir bakıma HTML, CSS ve JavaScript için bir Ar-Ge departmanı gibiydi. Akıcı animasyonlar, gömülü videolar ve diğer mükemmel özellikler ilk önce Flash ile gün yüzüne çıktı. Bu özellikler kullanışlıklarını kanıtladıktan sonra web standartlarına girdiler. Aynı şeyler yerel uygulamalarda da oluyor. Kamera ve ivmeölçer gibi cihaz erişim özellikleri de web tarayıcılarında görünmeye başladı. Tabii bunlar içinde en heyecanlı olanı; web sitelerinin bir ağa bağlı olmadan da çalışabilme yetisidir.
Service Worker Nedir? Çevrimdışı Deneyimi Nasıl Mümkün Kılar?
Büyüleyici offline deneyimler yaşamamızı mümkün kılan şey Service Worker'lardır. Bunları duymuş olabilirsiniz. Bunların JavaScript ile yapılan, teknik bir şeyler olduğunu duymuş olabilirsiniz ama konsept olarak bunlar diğer "script" türlerinden oldukça farklıdır.
Genellikle, JavaScript yazdığınızda bu bir web tarayıcısında çalışacaktır ve tamamen tarayıcı ekranında görüntülenen belgeye bağlıdır. Belgenin içeriklerini güncellemek isteyebilirsiniz: Biraz biçimlendirme eklemek, bazı metinleri silmek, bir yerlerdeki verileri işlemek... Yapabileceğiniz şeylerin bir limiti yok ve bunlar tamamen tarayıcının görüntülediği şeyin bir temsili olan, DOM (Document Object Model) sayesinde mümkün olmuştur. DOM ve JavaScriptin kombinasyonu ile bütün sihirli şeyleri yapabilirsiniz.
Tabii bir Service Worker bunların hiçbirini yapamaz. Yine de bir scripttir ve yine aynı dille -JavaScript- ile yazılır ama DOM'a erişimi yoktur. Herhangi bir DOM scripti olmadan bu tip bir script ilk bakışta işe yaramaz gibi görünebilir fakat var olan belge ile hiçbir etkileşime ihtiyaç duymayan bir scripte sahip olmanın bir avantajı var. DOM'un parçalarını ekleme, düzenleme ve silme işlemleri tarayıcılar için oldukça zor bir iş olabilir. Eğer dikkatli değilseniz işler çok çabuk can sıkıcı bir hal alabilir. Eğer ortada DOM'a erişimi olmayan bütün bir script sınıfı varsa tarayıcı, bunun tamamen farklı bir süreç olduğunun bilinciyle, huzur içinde sıradan görselleştirme aktivitelerine paralel olarak bu scripti çalıştırabilir.
Tarayıcılar ve Sunucular
Şimdi bir adım geri gidelim ve World Wide Web'in nasıl çalıştığını düşünelim. Bu, istemci ile sunucunun bir dansıdır. İstemci genellikle bir web tarayıcısı veya bir kullanıcı temsilcisi -kullanıcı davranışlarını taklit eden bir yazılım- olabilir.
Kullanıcı bir görevi tamamlamak veya biraz bilgi bulmak ister. Kullanıcının yolculuğunu tamamlamasında ona yetki verecek teknoloji de URL'dir. Kullanıcılar web tarayıcılarına direkt olarak bir URL girebilir veya oraya ulaşmak için bir linki takip edebilir. Web tarayıcısının -veya istemcinin- bir web sunucusuna istekte bulunduğu nokta budur. İstek, sunucuya ulaşmadan önce denizaltındaki kabloları, radyo kulelerini ve hatta uyduları katetmelidir.
İstek henüz gönderilmeden gerçekleştirilmesi için web tarayıcılarına komutlar bırkabileceğinizi düşünün. İşte Service Worker tam olarak bunu yapmanızı sağlıyor.
Genellikle bir JavaScript kodu yazdığımızda, bu kodlar sunucu tarafından indirildikten sonra çalıştırılıyor. Service Workerlar ile, başka hiçbir şey olmadan önce tarayıcı tarafından çalıştırılacak scriptler yazabiliriz. Tarayıcıya, "Eğer kullanıcı bu spesifik web sitesi için bir URL getirmeni istiyorsa, önce bu uyumlu JavaScript kodlarını çalıştır." diyebiliriz.
Bu durum da neden Service Worker'ların DOM'a erişiminin olmadığını açıklar: Service Worker çalıştığında, ortada henüz bir belge yoktur.
Service Worker'ları Anlamak: Service Worker Ne İşe Yarar?
Bir Service Worker çerez gibidir. Çerezler, web sunucularından indirilir ve tarayıcıda yüklenir. Tarayıcınızın tercihlerine gidebilir ve ziyaret ettiğiniz web sitelerinden yüklenmiş bütün çerezleri görebilirsiniz. Çerezler oldukça küçük ve basit metin dosyalarıdır. Bir web sitesi çerez kurabilir, çerez okuyabilir ve bir çerezi güncelleyebilir. Bir Service Worker scripti çok daha güçlüdür. Tarayıcının, başka hiçbir şey yapmadan gerçekleştireceği bir dizi komut içerir.
Service Worker'lar virüs gibidir. Bir web sitesini ziyeret ettiğiniz zaman Service Worker gizlice arkaplanı indirir. Bundan sonra ne zaman bu web tasarımı için bir istekte bulunsanız, isteğinizin yolu önce Service Worker tarafından kesilecektir. Bilgisayarınız veya telefonunuz pusuda bekleyen Service Worker için bir ev haline gelecektir. Bir Service Worker, yalnızca kendisi tarafından yüklenmiş web siteleri için olan istekleri idare edebilir.
Bir Service Worker alet çantası gibidir. Kendi kendine pek bir şey yapamaz ama API'lar ve hatta bildirimler gibi bazı çok güçlü tarayıcı özelliklerine erişmenizi sağlar. API (Application Programming Interface) kulağa çok havalı geliyor ama aslında yalnızca nasıl bir şey isterseniz onu programlamanızı sağlayan bir araç anlamına geliyor. Service Worker'ınızda bir dizi komut yazarak bu araçlardan avantaj sağlayabilirsiniz. Komutlarınızın çoğu "bu olduğunda, bu araca eriş" şeklinde olacaktır. Eğer ağ bağlantısı başarısız olursa, Service Worker'ınıza Cache API kullanarak yedek dosyaları almasını söyleyebilirsiniz.
Bir Service Worker çerez gibidir, virüs gibidir ve bir alet çantası gibidir.