TL; DR - Bir POJO kütüphanesini hizmetler arasında paylaşmak uygun mudur?
Genel olarak, hizmetler arasındaki paylaşımın mümkünse kesinlikle sınırlı kalmasını isteriz. Veri paylaşan hizmetin, istemcilerin kullanması için bir istemci kitaplığı sağlayıp sağlamayacağı konusunda bazı tartışmalar olmuştur. İstemci-lib, hizmetin bir istemcisinin kullanması için genellikle isteğe bağlıdır ve API'yı tüketebilir, ancak istemci-lib'in kullanılmasını veya alternatif bir dil kullanıp kütüphanenin genel özelliklerini kullanmasını ister.
Benim durumumda - bir veri nesnesi oluşturan bir hizmet olduğunu düşünüyorum. Bu nesnenin bir PET olduğunu varsayalım. Veritabanı varlığı DEĞİLDİR, ama kesinlikle temeldeki verileri dolaylı olarak temsil eden POJO'dur. Bu POJO, API'nın tanımladığı şeydir. Varsayın: Evcil Hayvan - Yaş, Ağırlık, İsim, Sahip, Adres, Türler, vb.
Hizmet 1 - PetKeeper: Hangi nedenle olursa olsun bir evcil hayvan üretecek ve tüm verileri saklayacak ve evcil hayvanı elde etmek veya Evcil Hayvan üzerinde değişiklik yapmak için bu hizmete başvurmalıdır, ad değişikliklerinin veya adres değişikliğinin bir Bu hizmet için API çağrısı.
Servis 2 - PetAccessor: Bu hizmetler evcil hayvanların toplanmasını sağlar ve doğrulama kontrolleri yapar
Servis 3,4 - Daha fazla ara servis çağrısı
Hizmet 5 - Kullanıcı Etkileşimi
Bunlar çok gelişigüzel ama mesele basit. Kullanıcı arabirimi veya bazı kullanıcılara yönelik hizmet bir şekilde bu "PET" nesnesini sunmak istemektedir. Bir API aracılığıyla, gerekli bilgileri toplayan ve geçişi geri başlatan hizmete ulaşıncaya kadar, hizmeti çağıran, hizmeti çağıran vb. Bir hizmeti çağırmalıdır. Son olarak UI hizmetinde görüntülenecek PET nesnesi bulunur.
Bu oldukça yaygın - ama mutlak anlayışımızla PET nesnesini her hizmette çoğalttık. KURU (kendinizi tekrarlamayın) ilkesi yalnızca bir hizmetin İÇİNDEKİ kodu için geçerlidir ve hizmetler arasında geçerli değildir, ancak nokta hala oradadır. Bir alan eklersek ... her birinde 5 POJO hizmetini değiştirmeliyiz.
--VEYA-- Biz API bazı pojo içeren içeren bir Pet-Objects-Library sağlayabilir ve her hizmet kütüphaneye alabilir / bağımlılık. Hizmetlerin kendilerine bağımlılık yoktur, sadece genel kütüphanedir. Bu fikri beğendim, böylece her hizmet aynı türde nesneye sahip ve güncellemeler daha kolay. Ama ben Tanrı-Objeleri hakkında endişeliyim.
Pro / con nedir - en iyi tasarım nedir? Aynı POJO sınıflarını tekrarlamayı en aza indirgemek ve aynı zamanda bağlı kalmamak için hizmetler arasında veri aktarmak için ne yaptınız?