portlet ile sunucu uygulaması arasındaki fark nedir?


96

Portletler ve portallar üzerinde çalışmam isteniyor.

Portlet ile sunucu uygulaması arasındaki farkı bilmek istiyorum.

Portlet, sunucu uygulamasından nasıl / nerede farklılık gösterir (işlevsel olarak olabilir)?

Yanıtlar:


65

Portletler, portal kapsayıcılarını ve bileşenlerini düzenleyen JSR-168 standardının bir parçasıdır. Bu, web kapsayıcıları (ve sunucu uygulamaları) standartlarından farklıdır. Bu iki standart arasında kesinlikle güçlü paralellikler olmasına rağmen, kapsayıcılar, API'ler, yaşam döngüsü, yapılandırma, dağıtım vb.

Portlet ile sunucu uygulaması arasındaki temel fark, sunucu uygulamacığı her zaman tek bir eylem türüne yanıt verirken - istek , portletin (yaşam döngüsünün doğası ve daha güçlü kapsayıcı bağlamaları nedeniyle) iki tür eyleme yanıt vermesi gerektiğidir: oluşturma ve istek . Elbette daha fazlası var ama bunu, portal geliştirmeyi incelediğimde ikisi arasındaki temel fark olarak buldum.


1
Güncelleme: Portletler 1, JSR 168 , Portletler 2, JSR 286 ve Portlet 3, JSR 362'dir .
Basil Bourque

137

Kaynaktan Geliştirildi : Servlets Vs Portletler

Benzerlikler

  1. Servletler ve Portletler, uygulanmaları için Java kullanan web tabanlı bileşenlerdir.

  2. Portletler, tıpkı sunucu uygulamasının sunucu uygulaması konteyneri tarafından yönetildiği gibi bir portlet konteyneri tarafından yönetilir.

  3. Hem statik hem de dinamik içerik Portletler ve Servletler tarafından oluşturulabilir.

  4. Portletlerin ve sunucu uygulamalarının yaşam döngüsü konteyner tarafından kontrol edilir

  5. İstemci / sunucu modeli hem sunucu uygulamaları hem de portletler için kullanılır

  6. Paketleme ve dağıtım esasen aynı, SAVAŞ / KULAK.

  7. Uygulama Oturumu hem Servlet hem de Portlet konteynerlerinde mevcuttur. Verilerin (ham Portletler Arası İletişim) portlet konteynerlerindeki işlem aşamasından eylem aşamasına (veya daha düşük aşamalara) kadar paylaşılması yollarından biridir.

  8. Hem Servletler hem de Portletler, onu destekleyen benzer sunucu / VM ortamlarını kullanır. Bununla birlikte, portletlerin onu işaretlemesi için bazı ek yapılandırmalar gerekebilir.

  9. Derleme / DI araçları her ikisi için de benzer - Ant, Maven, Gradle, vb. Tümü desteklenmektedir. Çoğunlukla :) - Bu, Liferay 7 ile biraz değişti.


Farklılıklar

  1. Sunucular tam web sayfalarını oluşturabilirken, portletler html parçalarını işler. Bu parçalar, portal tarafından eksiksiz bir web sayfasında toplanır.

  2. JSR 168 portletinin içerik türü yalnızca cHTML, XHTML, WML olabilir. Diğer içerik türlerini desteklemez.

  3. Portletlerin gövde, çerçeve, çerçeve kümesi, başlık, html veya başlık gibi etiketler içeren HTML kodu oluşturmasına izin verilmez.

  4. Sunucu uygulamacığının aksine bir Portletin kendisine eklenmiş URL'si yoktur, bu nedenle doğrudan erişilemez. Erişim yalnızca portleti tutan portal sayfası üzerinden sağlanır.

  5. Portletler, pencere durumlarını veya portlet modlarını değiştirmek için kontrollerle sağlanabilir.

  6. Tek bir portletin birden çok örneği aynı sayfaya yerleştirilebilir.

  7. Portletler kalıcı yapılandırma ve özelleştirmeyi, profil bilgilerini destekler.

  8. Portletler iki tür istek içerebilir. istek ve eylem isteği oluşturma.

  9. Portletlerin oturum içinde iki kapsamı vardır; portletler arasında iletişim için uygulama kapsamı ve portlet içi iletişim için portlet kapsamı.

  10. Portlet, yanıtın karakter kümesi kodlamasını ayarlayamaz veya HTTP yanıt başlıklarını ayarlayamaz.

  11. Portletlerin istek URL'sine erişimi yoktur. Bu nedenle, URL'ye eklenen sorgu parametrelerine erişemez. Portletler tanımlama bilgileri ayarlayamaz.

  12. Portletini API tipik yöntemler doView(), doEdit(), doHelp()ve processAction()sunucu uygulaması kişilerce iken service(), doPost(), doGet().

  13. Servlet Özellikleri - JSR 369 (Servlet 4.0), JSR 340 (Servlet 3.1), JSR 315 (Servlet 3.0), JSR 154 (Servlet 2.5 & 2.4). Portlet Spesifikasyonları - JSR 168 (Portlet Spec v1.0), JSR 286 (Portlet Spec v2.0), JSR 362 (Portlet Spec v3.0)

  14. Portletlerin konuşlandırılması, bir Servlet uygulamasından farklı bir yaklaşım gerektirir . Bazı Sağlayıcılar (Liferay / Alfresco / WebSphere), OSGi gibi özel kitaplıkları kullanarak uygulamayı modüler hale getirmeden sunucu uygulamalarının kullanılması durumunda mümkün olmayan, sunucuyu yeniden başlatmaya gerek kalmadan portletlerin sıcak konuşlandırılmasını destekler.


Düzenle (Yorumlardan)

Bir Portlet kapsayıcısı, bir Servlet kapsayıcısı üzerinde oluşturulur. Dolayısıyla, nihayetinde portletin bir Servlet Konteyner üzerinde çalıştığı söylenebilir. Ancak uygulamaları geliştirirken, bir portlet konteynerini Servlet / Java EE konteynerinden ayrı olarak görüntüleriz.


Yani, bir portal uygulaması bir sunucu uygulaması / JEE kapsayıcısında çalışır ve bir portal uygulamacığı kapsayıcısıyla ayrı olarak mı konuşur? İstemcinin makinesi (tarayıcısı), JavaScript aracılığıyla işlenen sayfadaki görünüm ve kısmi sayfa yenilemeleri dışında, anladığım kadarıyla portlet konteynerinden veya portletlerden haberdar değil.
Andy

2
Bir Portlet kapsayıcısı, bir Servlet kapsayıcısı üzerinde oluşturulur. Portlet konteynerinin birçok 'özelliğe' sahip gelişmiş bir Servlet konteyneri olduğunu söyleyebilirsiniz. Ama sorunuzu açıkça cevaplamak gerekirse, evet. Uygulamaları geliştirirken, bir portlet konteynerini Servlet / JEE konteynerinden ayrı olarak görüntüleriz.
Ashok Goli

4
Bunu düşünmenin en basit yolu, bir sunucu uygulamasının tüm bir web sayfasını ve bir portletin bir web sayfasının belirli bir dikdörtgen bölümünü (alt bölümünü) oluşturmasıdır. Örneğin, bir haber sayfasının sağ tarafındaki reklam çubuğu portlet olarak işlenebilir. Ancak tek bir düzenleme alanını portlet olarak uygulamazsınız çünkü bu çok ayrıntılıdır. Temel olarak, bir web sayfasını ana bölümsel alanlarına ayırırsanız, bunlar portletler haline getirmek için iyi adaylardır.

@ClayFerguson "portlet, bir web sayfasının belirli bir dikdörtgen bölümünü (alt bölümünü) oluşturur", yani bir çerçeve veya bir <div> gibidir ...
Tom Brito

@TomBrito - Kısmen doğru. Kendi yaşam döngülerine sahip olan ve verileri diğer çerçevelerle veya div'lerle paylaşabilen bir çerçeve veya div gibidir.
Ashok Goli

8

Hem portletler hem de sunucu uygulamaları bir http isteği alır ve bir yanıt döndürür, bu genellikle bir tarayıcı tarafından işlenebilen bir HTML HTML'dir. Portlet, bir "Portal" bağlamında kullanılır; buradaki fikir, kullanıcı tarafından görülen tek bir sayfanın, her biri farklı bir portletten gelen birçok parçaya sahip olmasıdır.

Artık, normal sunuculardan bu "parçalı" efekti elde edebilirsiniz (nasıl yapılacağına ilişkin bir örnek için bkz. Struts + Döşemeler), portletlerden gelen ekstra bit, portal uygulamacığının daha zengin bir ortamda olmasıdır, böylece ekstra API'ler sağlanır, böylece herhangi bir portlet tarafından görüntülenenler, bireysel kullanıcılar tarafından kendi tercihlerine göre yapılandırılabilir ve porletler birbirleriyle iletişim kurabilir - birinde bir düğmeye basın, diğerinde bir şey olur.


6

Servletlerin bir java tanımı (HTTP GET / POST isteklerini işleyen uygulamalar) varken, portletlerin bir kullanıcı arayüzü tanımı vardır. Windows vista widget'larına benzer belirli bir işlevi gerçekleştiren bir bileşen veya burada stackoverflow'da kullanılan birçok bileşen. Sunucu tarafındaki sunucu uygulamaları tarafından desteklenmeleri gerekmez. Ancak Portlet standardı java ile birlikte geliştirildi. O'Reilly'nin güzel bir öğreticisi var .


4

Esasen, Servletler bir tarayıcıda (çerçeve kullanmıyorsanız) tüm sayfayı kaplayan içerik sağlar ve portletler bir pencereyle sarılmış içerik sağlar. Portletlerle, yan yana birden çok portletiniz olabilir ve her biri diğerinden farklı içerik ve işlevsellik sağlayabilir. Bir portlet, bir uygulama türü için tam etkileşim sağlayabilirken, başka bir portlet başka bir uygulama türü için içerik sağlayabilir. Portal, bazı ev tutma işlevselliği sağlayabilir ve bir sayfadaki tüm portletlere güvenli tek giriş noktası sağlayabilir. Aralarındaki ayrıntılara (benzerlikler / farklılıklar) gelince, lütfen okumaya devam edin. İşte bazı benzerlikler:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.