Dağıtılmış bir uygulamada istemci ve sunucu bileşenleri arasındaki bağlantıyı en aza indirmeniz sizin için çok önemliyse REST kullanılmalıdır .
Sunucunuz üzerinde kontrolünüz olmayan birçok farklı istemci tarafından kullanılacaksa bu durum söz konusu olabilir . İstemci yazılımını güncellemenize gerek kalmadan sunucuyu düzenli olarak güncelleyebilmek istiyorsanız da durum söz konusu olabilir .
Sizi temin ederim ki, bu düşük seviyedeki kuplaja ulaşmak kolay değildir . Başarılı olmak için REST'in tüm kısıtlamalarına uymak çok önemlidir. Tamamen vatansız bir bağlantı kurmak zordur. Doğru medya türlerini seçmek ve verilerinizi formatlara sıkıştırmak zordur. Kendi medya türlerinizi oluşturmak daha da zor olabilir.
Zengin sunucu davranışını tek tip HTTP arayüzüne uyarlamak kafa karıştırıcı olabilir ve bazen nispeten basit RPC yaklaşımına kıyasla bilgiçlikçi görünebilir.
Zorluklara rağmen, HTTP protokolünün tutarlı kullanımı nedeniyle bir istemci geliştiricinin kolayca anlayabileceği bir hizmete sahip olmanızın faydaları vardır. Hizmet, hiper ortam nedeniyle kolayca keşfedilebilir olmalı ve istemci , sunucudaki değişikliklere son derece dayanıklı olmalıdır .
Hiper medyanın faydaları ve oturum durumundan kaçınma, yük dengelemeyi basitleştiriyor ve hizmet bölümlemeyi mümkün kılıyor . HTTP kurallarına sıkı uyum, hata ayıklayıcılar ve önbelleğe alma proxy'leri gibi araçların kullanılabilirliğini harika hale getirir.
Güncelleme
Bana öyle geliyor ki, REST bir başka 'modanın son sözü' (ya da tamamen yanlış olabilirim çünkü REST'i pratikte hiç görmedim).
Bence REST moda oldu çünkü SOA tipi projeler yapmaya çalışan insanlar, SOAP yığınını kullanarak vaat edilen faydaları anlamadıklarını anladılar. İnsanlar basit entegrasyon metodolojilerinin bir örneği olarak web'e dönmeye devam ediyor. Ne yazık ki, insanların web'i oluştururken harcanan planlama ve öngörü miktarını hafife aldığını ve web'de meydana gelen şans eseri yeniden kullanıma izin vermek için yapılması gerekenleri fazla basitleştirdiğini düşünüyorum.
Pratikte REST'i hiç görmediğinizi söylüyorsunuz, ancak bir web tarayıcısı kullanıyorsanız bu muhtemelen doğru olamaz. Web tarayıcısı bir REST istemcisidir.
- Birisi bir web sitesinde html değiştirdiğinde neden bir tarayıcı güncellemesi yapmanız gerekmiyor?
- Neden bir web sitesine tamamen yeni bir sayfa grubu ekleyebilirim ve "müşteri" bu yeni sayfalara güncelleme olmadan erişmeye devam edebilir?
- Http://example.org/images/cat adresine gittiğinde dönüş türünün bir jpeg görüntüsü olacağını ve gittiğinizde bunu söylemek için web tarayıcısına neden bir "hizmet açıklama dili" sağlamam gerekmiyor? için
http://example.org/description/cat
döndürme türü text / html olacak?
- Tarayıcı yayınlandığında var olmayan siteleri ziyaret etmek için neden bir web tarayıcısı kullanabilirim? Müşteri bu sitelerden nasıl haberdar olabilir?
Bunlar mantıksız sorular gibi gelebilir, ancak cevabı biliyorsanız, o zaman REST'in neyle ilgili olduğunu görmeye başlayabilirsiniz. REST'in daha fazla faydası için StackOverflow'a bakın. Bir soruya baktığımda, o sayfaya yer işareti koyabilirim veya url'yi bir arkadaşıma gönderebilirim ve o da aynı bilgileri görebilir. Bu soruyu bulmak için sitede gezinmesi gerekmiyor.
StackOverflow, kimlik doğrulama için çeşitli OpenId hizmetleri, avatar görüntüleri için gravatar.com, analitik bilgiler için google-analytics ve Quantserve kullanır. Bu tür çoklu şirket entegrasyonu, SOAP dünyasının sadece hayalini kurduğu türden bir şeydir . En iyi örneklerden biri, StackOverflow kullanıcı arayüzünü çalıştırmak için kullanılan jQuery kitaplıklarının Google'ın İçerik Dağıtım Ağı'ndan alınmasıdır. SO'nun istemciyi (yani web tarayıcınızı) performansı artırmak için üçüncü taraf bir siteden kod indirmeye yönlendirebilmesi, web istemcisi ile sunucu arasındaki düşük bağlantının kanıtıdır.
Bunlar, işyerinde bir REST mimarisi örnekleridir.
Artık bazı web siteleri / uygulamalar REST kurallarını ihlal ediyor ve ardından tarayıcı beklendiği gibi çalışmıyor.
- Kötü şöhretli geri düğmesi sorunu
, sunucu tarafı oturum durumunu kullanmaktan kaynaklanır.
- Sunucu tarafında oturum durumunuz olduğunda yük dengeleme bir sorun haline gelebilir.
- Flash uygulamaları genellikle URL'nin bir temsili özel olarak tanımlamasını engeller.
- Web tarayıcılarını bozan diğer bir sorun, ortam türü standartlarına yetersiz uyumdur. IE6'nın nasıl öldürülmesi gerektiğini her zaman duyuyoruz. Buradaki sorun, standartlara uygun şekilde uyulmaması veya herhangi bir nedenle göz ardı edilmesidir.
- Oturum açma oturumlarının kullanımı birçok güvenlik açığının kaynağıdır.
REST her yerde. Web'in iyi çalışmasını sağlayan kısmıdır. Web gibi ölçeklenebilen dağıtılmış uygulamalar oluşturmak, web gibi değişime dirençli olmak ve web'in yaptığı gibi yeniden kullanımı teşvik etmek istiyorsanız, web tarayıcıları oluştururken uyguladıkları aynı kuralları izleyin.