Video: Uygulama Katmanı Mimarileri - Client/Server ve P2P - Bilgisayar Ağları - Ders 2 - Bölüm 1 (Kasım 2024)
Son birkaç ay içinde, geliştirme dünyasında ilginç bulduğum şeylerden biri, modern uygulamaların sunucu yerine zekanın istemcisine daha fazla yerleştirilmesine nasıl geri döndüğü. İstemci-sunucu modeli elbette yeni bir şey değil: geleneksel uygulamaların sunucu tarafı uygulamalarla konuşan zengin istemci uygulamaları ile yıllarca inşa edilme şekli. Ancak, web çağında ve hatta Web 2.0'da, odak noktası, zekanın büyük kısmının Web sunucusu üzerinde olduğu (genellikle Java tabanlı uygulama sunucularında) ve istemcinin basit bir Web sayfası olduğu web uygulamalarına taşındı. Her tıkladığınızda yeni bir sayfa yüklediğiniz bir tarayıcı.
Ancak son zamanlarda HTML5, CSS ve en çok da JavaScript'in olgunlaşması, geliştiricilerin Web sayfasının kendisine gerçek zeka ve gerçek işleme koymalarına öncülük ediyor. Özellikle, tamamen modern bir Web tarayıcısında çalışan akıllı ön uçlar oluşturmayı kolaylaştıran, çeşitli istemci tarafı JavaScript tabanlı çerçevelerin yükselişini gördük. İlgili tarayıcılar genellikle Chrome ve Safari dahil olmak üzere Webkit motoruna dayanan tarayıcılardır, ancak uygulamaların çoğu Firefox ve Internet Explorer'ın mevcut sürümlerinde de iyi çalışıyor gibi görünmektedir. Gerektiği gibi sunucudan veri çekerek, dinamik olarak değişen daha karmaşık bir Web sayfası ile sonuçlanır.
Özellikle üç MVC çerçevesi dikkat çekiyor gibi görünüyor: Backbone.js, Ember.js ve Angular.js. (MVC, model-görünüm-denetleyicisi anlamına gelir - esasen web istemcisi hesaplamasının arkasındaki mimaridir. "Js" JavaScript anlamına gelir.) Temel olarak, tüm bunlar son on yılda popüler olan AJAX (Asenkron JavaScript ve XML) yaklaşımının bir ürünüdür. öyleyse, ama çok daha olgunlaşıyor ve neredeyse standart hale geliyor. Buradaki fikir tarayıcıya durum ve istihbaratın daha fazlasını koymak, ardından tarayıcının sunucu tarafındaki REST API'lerine bağlanmasını sağlamaktır.
Omurga, belki de bu çerçevelerin en temel ve en küçük olanıdır; birçok popüler site tarafından çeşitli kapsamlarda kullanılır. Ember, Apple'ın desteklediği Sproutcore adlı bir çerçeveden büyüdü ve masaüstü tarzı uygulamalar yapmanıza izin vermek için tasarlanmış çok daha kapsamlı bir çerçeve. Genellikle Twitter çalışanları tarafından oluşturulan HTML ve CSS şablonları olan Bootstrap ile birlikte kullanılır. Angular, Google’ın aralarında bir yerde gibi görünen bir alternatiftir; bazı insanlar Ember’den biraz daha esnek veya en azından "daha az görüşlü" olduğunu düşünüyor ancak Omurga’dan daha kapsamlı. (Google’ın, kodlama kalitesini artırmak için geliştiricileri Angular kullanmaya zorladığını unutmayın; ancak şirket içinde aslında farklı, özel bir çerçeve kümesi kullanır.) Microsoft bile bu çerçeveler için Visual Studio'ya kanca eklemiştir.
Bu Web olmak, onlarca alternatif var. Son zamanlarda duyduğum en ilginç şeylerden biri, hem istemci hem de sunucu tarafında JavaScript ile çalışmak üzere tasarlanan Meteor. Ancak bu hala çok erken ve henüz gerçek kullanıcıları bilmiyorum. Bu arada, daha fazla geliştirici genellikle sunucu tarafında JavaScript uygulamaları için kullanılan Node.js ile oynuyor.
Bu tür çerçevelerin avantajı açık görünüyor. Zengin web istemcisi uygulamaları, sunucuda her şeyin çalıştığı ince istemci uygulamalarından daha güçlüdür, daha iyi bir kullanıcı arabirimi sağlayabilir ve çevrimdışı bilgi olanağı sunabilir. Bu çerçeveleri kullanarak, her şeyi sıfırdan inşa ederek çok daha hızlı bir şekilde zengin Web istemcisi uygulamaları oluşturabilir ve her biri etrafında gelişen topluluklardan yararlanabilirsiniz.
Belki de en önemlisi, belirli yerel uygulamalar yazmak zorunda kalmadan farklı cihazlara ölçeklenen mobil uygulamalar oluşturabilirsiniz. Her bir platformun belirli özelliklerini daha doğrudan ele alabilen yerel uygulamalar için yapılacak iyi bir argüman var. Bununla birlikte, pek çok geliştirici, bu tür çerçevelerin, özellikle Adobe tarafından satın alınan ve Apache Cordova projesine açık kaynaklı bir açık kaynaklı mobil çerçeve olan PhoneGap gibi şeylerle birlikte kullanıldığında çapraz platform gelişimini önemli ölçüde hızlandırabildiğini keşfetti.
Mobil elbette, işlemcilerin hızı ve belki de daha önemlisi, bağlantı hızı ve bazen bağlantı eksikliği de dahil olmak üzere kendi sınırlamalarını getiriyor. İnsanların Web sayfalarındaki uygulamaları sevmesinin bir nedeni, temel işlevselliği Wi-Fi üzerinden veya hızlı bir bağlantı üzerinden indirebileceğiniz ve tüm tasarımı değil, sadece ihtiyaç duyduğunuz verileri alabilmenizdir. PhoneGap gibi paketler, JavaScript'i indirilen bir uygulamaya koyarak bu sorunu çözer.
Bununla birlikte, bu tür çerçevelere sahip başka konular da vardır. İstemci tarafında daha fazla hesaplama yapılması, yalnızca basit bir sunucu uygulamasına karşı karmaşıklığı artırır ve gerçekten de eski istemci-sunucu modelinin bazı sakıncaları ortaya çıkar. Geliştiricilerin her iki taraftaki devleti yönetmeleri gerekir. İki yerdeki kod, her iki yerde de güvenliğe odaklanmanız gerektiği anlamına gelir. Bir geliştirme ekibi sık sık müşteride çalışan bazı kişiler ve sunucuda çalışan diğerleri olduğundan, ek iletişim sorunları yaşarsınız. Öte yandan, istemci-sunucu eski sorunlardan bazıları geri gelmez ve bunun yerine Web yazılımının yararlarını korursunuz. Bu, çok daha fazla standart odaklı, topluluk odaklı bir dünya, bu nedenle tek bir özel ortama bağımlı değilsiniz. İstemci ve sunucu tarafı bölümlerini bölerek, yalnızca kullanıcı arayüzü işleyen ve işlemeyen ve bunun sonucunda daha az kaynak gerektiren daha temiz ve basit bir sunucu tarafı uygulamasına sahip olabilirsiniz. Yine de tüm istemcileri bir kerede güncelleyebilme avantajına sahipsiniz, çünkü genellikle uygulama çağrıldığında tarayıcı tarayıcıdan kod yükler.
Her durumda değil, birçok yeni uygulamada daha akıllı Web istemcilerine doğru bir hareket görüyoruz. Eski uygulamaları almak ve bunları bu modele taşımak çok daha zor, ancak bunun da bir kısmını görüyoruz. Oldukça eski istemci-sunucu modeli değil, daha da yaklaşıyor.