2013-03-28 27 views
6

Farklı boyut, kapsam ve yaşam boyu için birçok Java web tabanlı uygulama (aynı şirket için) geliştirmeli ve sürdürmeliyiz. Bazıları devasa ve diğerleri sadece birkaç ay (veya gün) yaşayabilen basit sayfalar, bazıları zaten uygulanmış ve yeniden düzenleme gerektiriyor. Yine de ortak olan bir şey var, aynı bilgiye (neredeyse) erişebilmeleri gerekiyor. Nedeniyle şirket kolları verilerin karmaşıklığınaBirden çok uygulama arasında iş mantığı nasıl paylaşılır

Sorun

, biz bunların bazıları eski çağlardan kalma pek çok farklı kaynaklardan uğraşmak zorunda. Alan kaynaklarımız bu kaynakların çoğunda haritalanabilir. Örnek olarak, bir Sözleşme alanı nesnesi ana veritabanımızla eşleştirilir, ancak ilgili (fiziksel) dosyalar bir belge sunucusunda saklanır ve bununla ilgili etkinlik bir NoSQL veritabanında depolanır. Bu nedenle, bu nesnelerin eklenmesi, çıkarılması, aranması birçok iç harekatı içerir.

Bizim veri kaynakları (Bu herhangi biri olabilir rağmen) şunlardır:

  • AS400 (a veritabanı olarak kullanarak DB2)
  • Documentum belge yöneticisi
  • Mongo DB
  • Dış web hizmetleri
  • Diğer Eski Kaynaklar

Normalde Glas kullanıyoruz Uygulama sunucusu olarak mızrak ve bizim inşa aracı olarak maven.

Hedef

Amacımız tüm uygulamaları erişebileceği bir iş katmanı veya kütüphane oluşturmaktır ve öyle: kullanmak

  • Kompakt
  • Tutarlı
  • Kolay
  • Bakımı kolaydır
  • İnsandan erişilebilir Şimdiye kadar

    bulduk Ne y farklı istemciler

Haftalardır mücadele edilmiş ve hala tam olarak tatmin edici bir şey bulamıyorum. Bazı çözümler:

  • bir veya birden fazla kavanozlarda tüm iş mantığı Paketi: paylaşmak çok kolay, ancak tüm uygulamalar tüm kavanoz bağımlılıkları ve yapılandırma dosyalarını içeren ve güvenlik, önbelleğe alma ve diğer bakmak zorunda kalacak şey. Kalması zor (değişiklik olduğunda her proje için kavanozları güncellemeliyiz).

  • Tüm mantığı içeren ve uzaktan erişen bir Ejb projesi oluşturun: Bakımı, güvenliği, önbelleğe almayı ve yapılandırmayı yalnızca bir kez uygulandı. Uzaktan aramaların cezasından korkuyoruz. Araştırmamızda fark ettiğimiz gibi, kötü bir uygulama gibi görünüyor (ejbs ile çok fazla tecrübemiz yok).

  • içindeki her şey ile bir Kulak projesi oluşturma ve kullanma yerel erişim: Evet, bu uzak sürümden daha hızlıdır ancak korumak bir cehennem.

  • OSGI için Git: bu EJB kadar popüler olmadığından Bu araçtan biraz korkuyorlar ve biz ciddiye kullanılmış hiç.

Bu tür bir sorun için ortak bir uygulama var mı?

Çok teşekkürler!

+0

gibi araçları kullanabilirsiniz. Neden ayrı BL'ye ihtiyacınız olduğunu açıklar mısınız? Veri tarafı için DAO kalıplarını kullanıyor musunuz? Bunlar aracılığıyla birden fazla kaynağa eşlemek mümkün mü? Birden fazla veri kaynağını yönetmek mümkün olmalıdır. –

+0

Hiper hızlı cevap için teşekkürler! Aslında asıl fikir budur. Tüm kirli şeyleri kapsüllemek için DAO'ları kullanmak istiyoruz. Sorun, bu DAO'lara 'istemci' uygulamalarından nasıl erişileceğidir. – danielsan

+0

Tamamen yeni bir uygulama oluşturuyorsanız osgi yaklaşımını tavsiye ederim. Ama eğer bir çok şeyi limana getirmeyi planlıyorsanız ve ekip osgi için yeniyse tavsiye etmem. – techuser

cevap

2

Ben 1 KULAK projeye tüm mantık koymak ve yerel erişim kullanmak tavsiye etmem. Eğer bir yerde bir sürü kod varsa,

Ben ortak bağımlılıkları ile mutlti modül maven projesi yaratacak vb dağıtmak, test korumak için daha zor olacaktır. Bir bağımlılık - API'yle karşılaşacak iş mantığı ve DAO erişimi ile hizmet. Maven projesi ile POM dosyalarının sürümünü kolayca kontrol edebilirsiniz. Farklı projeler ortak hizmetin farklı sürümüyle çalışabilir. Maven sizin için sürüm kontrolünü ele alacaktır. Ancak bazı yapılandırma ve uygulama çabaları gerektirir.

sizin tarafınızdan belirtilen bir diğer seçenek

- Uzaktan EJB'ler ile bağımsız KULAK yanı sorunsuz çalışır. Ağır yükünüz olmadığında, performans ve uzaktan arama sayısı hakkında endişelenmeyin. Gereksiz JNDI aramalarını önlemek için istemcide uzak EJB taslaklarını önbelleğe alın.

Şahsen Maven tarafından yönetilen paylaşılan bağımlılık ile ilk seçeneği tercih ederim. Sürdürülebilir ve bakımı kolaydır, sürümleri yönetmek, dağıtmak ve yapılandırmak kolaydır. Maven ile her proje için manuel olarak jar dosyasını değiştirmenize gerek yok, sadece Nexus

+0

Teşekkürler Anton. Şimdiye kadar 6 modülden oluşan çok modüllü bir maven projemiz var (tüm iş mantığı ve alan nesneleri). Anladığım kadarıyla, istemci uygulamalarının her birini başka bir bağımsız maven projesi olarak kullanabileceğimiz ve İş API'sini bağımlılık olarak arayabileceğimiz anlamına mı geliyor? Bu durumda, her bir istemci uygulamasında bir İş API'si dağıtacağımız anlamına gelir; bu durumda, farklı uygulama sunucularını kullanmak zorunda kalacağız. – danielsan

+0

evet, iş mantığınızı maven projesine ayırırsanız, tüm uygulamalarınıza bağımlılık ekleyebilirsiniz. Bu durumda, isterseniz farklı uygulama sunucularını kullanabilirsiniz. – Anton

İlgili konular