SORU
13 Kasım 2008, PERŞEMBE


Java web uygulamaları için kullandığınız tektir?

Hadi paylaşın Java uygulama mimarileri web tabanlı!

Uygulanan Java kullanan web uygulamaları için farklı mimarileri vardır. Bu soruya cevap artıları ve eksileri ile çeşitli web uygulama tasarımları bir kütüphane olarak hizmet verebilir. Cevaplar öznel olacak farkında iken, mümkün olduğunca objektif olmalı ve biz liste artılarını ve eksilerini motive etmeye çalışayım.

Mimarisi tanımlamak için tercih detay seviyesini kullanın. Herhangi bir değeri Cevabınız için en azından büyük teknolojileri ve fikirleri açıklamak mimarisinde kullanılan açıklamak gerekecek. Ve son ama en az değil,ne zamanmimarisi kullanmalıyız?

Başlayacağım.

< / ^ hr .

Mimarisi genel bakış

Java EE gibi 3 katmanlı mimari Güneş açık standartlara dayalı, Java Kalıcılık API, Sunucu uygulaması ve Java Sunucu Sayfaları kullanıyoruz.

  • Sebat
  • İş
  • Sunum

Olası iletişim katmanları tarafından temsil edilen arasında akar:

Persistence <-> Business <-> Presentation

Örneğin Sunum Katmanı hiç veya kalıcılık işlemleri aramaları gerçekleştirir anlamına gelir, her zaman iş katmanı sayesinde yapar. Bu mimari, yüksek kullanılabilirlik, bir web uygulama taleplerini yerine getirmek için tasarlanmıştır.

Sebat

Oluşturun gerçekleştirir, okuma, güncelleştirme ve (CRUD) sebat silme işlemleri. Bizim durumumuzda (Java Persistence API) JPA kullanarak ve biz şu anda 21* *kalıcılık sağlayıcı ve kullanımı Hibernate kullanın.

Bu tabaka, her sınıf varlık (yani varlıklar bir alışveriş sepeti ile ilgili tek bir kalıcılık sınıfı tarafından ele olabilir) belirli bir tür ile ilgilenen birden çok sınıflara ayrılmıştırkullanılırbir ve tekyöneticisi.

Ayrıca bu tabaka da Account, ShoppingCart vb gibi şeyler vardır JPA entities depolar.

İş

Web uygulamasına bağlı olan tüm mantık işlevler bu katmanda yer almaktadır. Bu işlevsellik-hat/kredi kartını kullanarak bir ürün için ödeme yapmak isteyen bir müşteri için para aktarımı başlatma olabilir. Sadece yeni bir kullanıcı oluşturma, Bir kullanıcı silme veya web tabanlı bir oyunda bir savaşın sonucu hesaplamak olabilir.

Bu katman birden çok sınıfa ayrılır ve bu sınıflar her @Stateless 23 *(SLSB) olmak açıklamalı. Her SLSB deniryöneticisimesela bir yönetici bir sınıf AccountManager adlı belirtildiği gibi açıklamalı olabilir.

AccountManager CRUD işlemleri gerçekleştirmek için gereken zaman, kalıcılık katmanı bir sınıf AccountManagerPersistence, örneğine uygun aramalar yapar. AccountManager iki yöntem kabataslak olabilir:

...
public void makeExpiredAccountsInactive() {
    AccountManagerPersistence amp = new AccountManagerPersistence(...)
    // Calls persistence layer
    List<Account> expiredAccounts = amp.getAllExpiredAccounts();
    for(Account account : expiredAccounts) {
        this.makeAccountInactive(account)
    }
}
public void makeAccountInactive(Account account) {
    AccountManagerPersistence amp = new AccountManagerPersistence(...)
    account.deactivate();
    amp.storeUpdatedAccount(account); // Calls persistence layer
}

İşlem çizimi kendimiz yapmak zorunda değiliz yani container manager transactions kullanıyoruz. Temelde kaputun altında ne SLSB yöntemi girerken bir işlem başlatırız ve (veya geri alma) tamamlama yöntemi hemen çıkmadan önce. Yapılandırma üzerinde Kongre bir örnek oldu, ama henüz bir şey ama varsayılan, Gerekli, ihtiyaç olmadı.

Sun Java EE 5 Öğretici Enterprise JavaBeans (YEREL): Required transaction attribute açıklar nasıl

Eğer bir istemci içinde çalışıyorsa ve kurumsal çağırır işlem bean'in yöntemini çalıştırır müşterinin işlem içinde. Eğer istemci ile ilişkili değildir işlem, konteyner başlar çalıştırmadan önce yeni işlem yöntem.

Gerekli öznitelik örtülü işlem için tüm öznitelik enterprise bean yöntemleri ile çalışan konteyner tarafından yönetilen işlem sınır. Genellikle ayarlamayın Gerekli ihtiyacın yoksa özniteliği başka bir işlem geçersiz kılmak için öznitelik. İşlem çünkü öznitelikleri açıklayıcı, can kolayca bunları daha sonra değiştirebilirsiniz.

Sunum

Bizim Sunum Katmanı... sunum sorumludur! Kullanıcı arayüzü sorumlu ve HTML sayfaları oluşturma ve GET ve POST istekleri ile kullanıcı girişi alarak kullanıcı bilgilerini gösterir. Şu anda eski Servlet'Server Sayfaları (JSP) kombinasyon Java. kullanıyoruz

Katman yöntemleri çağırıryöneticilerişlem kullanıcı tarafından istenen bilgileri ve web sayfasında göstermek için almak için gerçekleştirmek için iş katmanı. Bazen bilgi iş katmanında alınan Stringdaha az karmaşık türleri'ler ve integers, ve diğer zamanlarda JPA entities.

Mimarisi ile artıları ve eksileri

Artıları

  • Her şeye sahip bu katmanda kalıcılık yapan belirli bir konuyla ilgili olarak sadece yeniden yazmak için iş katmanı bir şey olmadan başka bir şeye JPA kullanarak takas edebiliriz demektir.
  • Bizi başka bir şeye bizim Sunum Katmanı takas için kolay, ve eğer daha iyi bir şey bulursak biz olasıdır.
  • YEREL konteyner işlem sınırları yönetmesine izin vermek güzel.
  • Sunucu uygulaması var JPA kullanarak kolay (ile başlayan) ve teknolojilerinin yaygın olarak kullanılan ve sunucuları çok uygulanır.
  • Java EE kullanarak bize load balancing fail over yüksek kullanılabilirlik sistemi oluşturmak için daha kolay yapmak gerekiyordu. Yapmamız gerektiğini hissediyorum.

İnş

  • Sorgular adında sık sık kullanılan sorgular JPA varlık sınıfı @NamedQuery annotation kullanarak saklayabilirsiniz JPA. Eğer mümkün olduğunca kalıcılık sınıf dayanıklılık ile ilgili, bizim mimari olarak varsa, bu sorguları JPA varlıkları da kapsayacak şekilde bulabileceğiniz yerlere serilecek. Sebat işlemleri genel bakış daha zor ve bu nedenle daha zor sağlamak olacak.
  • Sebat katman parçası olarak JPA kuruluşlar var. Ama Account ShoppingCart değil gerçekten iş nesneleri mi? Bu sınıflar dokunmak ve işlemek için nasıl bilir hangi varlıklar bunları açmak için bu şekilde yapılır.
  • Ayrıca bizim iş nesneleri olan JPA varlıkları, (DTO'ler) de Değer Nesneleri (VO) olarak da bilinir. Veri Aktarım Nesneleri gibi oluşturulur Bu erişimci yöntemleri dışında iş nesneleri kendi mantığı var gibi anemic domain model olur. Tüm mantık daha prosedürel bir programlama stili sonuçları iş katmanı yöneticilerimiz tarafından yapılır. İyi nesne yönelimli tasarım değil, ama belki de bu bir sorun değil mi? (Sonra tüm nesne yönelim sonuçlar ortaya koyan tek bir programlama paradigma değil.)
  • YEREL ve Java EE kullanarak karmaşıklığı biraz tanıtır. Ve Tomcat (mikro-kapsayıcı bir YEREL ekleyerek değil . tamamen kullanamayız ^em>tamamenTomcat).
  • Sunucu uygulaması var JPA kullanarak çok fazla konu var. Bu sorunlar hakkında daha fazla bilgi için Google kullanın.
  • Gibi hareketler kapatıldığında çıkılıyor iş katmanı edemeyiz yük herhangi bir bilgi JPA varlıklar eden yapılandırma için yüklü veritabanı zaman gerekli (kullanarak fetch=FetchType.LAZY) içinde Sunum Katmanı. Bir özel durum tetikler. Bir varlık alanlarını bu tür içeren dönmeden önce emin ilgili alıcı çağrı yapmak zorundayız. Başka bir seçenek Java Kalıcılık Sorgu Dili (JPQL) ve FETCH JOIN yapmaktır. Bu seçeneklerin her ikisi de ancak biraz zahmetlidir.

CEVAP
22 AĞUSTOS 2011, PAZARTESİ


İdeal Java Web Geliştirme Teknolojileri Bugün Göre.

Katman Web :

HTML CSS Ajax JQuery

Denetleyicisi/Eylem/İstek İşleme Katmanı : Web Dinlendirici

Çerçeve Oyna

İş Mantığı/Servis Katmanı:

Saf Java Kod mümkün olduğunca uzun süre kullanın. Web Hizmetleri burada füzyon yapabilirsiniz.

/JSon Veri Dönüştürme Katmanı XML :

XMLTool(Google Kod Arama),JSoup,Google GSon,XStream,JOOX (Google Kod Arama)

Sebat Katman :

CRUD : ya SienaProject veya QueryDSL JPA / Karmaşık Sorgular : JOOQ,QueryDSL

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joanna Okrajni

    Joanna Okraj

    4 EYLÜL 2010
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008