TL; DR - Apakah boleh berbagi perpustakaan POJO antar layanan?
Secara umum, kami ingin menjaga agar pembagian antar layanan sangat terbatas jika tidak ada. Ada beberapa perdebatan apakah layanan yang membagikan data harus menyediakan pustaka klien untuk digunakan klien. Client-lib umumnya opsional untuk klien dari layanan yang akan digunakan dan dapat menggunakan API namun mereka silakan, apakah akan menggunakan client-lib, atau menggunakan bahasa alternatif dan menggunakan aspek umum dari perpustakaan dan semacamnya.
Dalam kasus saya - saya mempertimbangkan layanan yang membuat objek data. Mari kita asumsikan objek ini adalah PET. BUKAN entitas basis data, tetapi POJO yang secara implisit mewakili data yang mendasarinya. POJO ini adalah apa yang telah didefinisikan oleh API. Asumsikan: Hewan Peliharaan - Usia, Berat, Nama, Pemilik, Alamat, Spesies, dll.
Layanan 1 - PetKeeper: Ini akan menghasilkan hewan peliharaan untuk alasan apa pun dan menyimpan semua data dan harus merujuk layanan ini untuk mendapatkan hewan peliharaan, atau membuat modifikasi pada Hewan Peliharaan, katakanlah perubahan nama, atau perubahan alamat harus dilakukan melalui Panggilan API ke layanan ini.
Layanan 2 - PetAccessor: Layanan ini mengumpulkan hewan peliharaan dan melakukan pemeriksaan validasi
Layanan 3,4 - Lebih banyak panggilan layanan menengah
Layanan 5 - Inteface Pengguna
Ini sangat sewenang-wenang tetapi intinya sederhana. UI atau layanan yang menghadap pengguna ingin menghadirkan objek "PET" ini. Itu harus memanggil melalui API layanan, yang memanggil layanan, yang memanggil layanan, dll sampai mencapai layanan yang mengumpulkan informasi yang diperlukan dan memulai relay kembali. Akhirnya layanan UI memiliki objek PET untuk ditampilkan.
Ini cukup umum - tetapi dengan mentalitas absolut kami, kami menduplikasi objek PET di setiap layanan. Prinsip KERING (jangan ulangi diri Anda sendiri) hanya berlaku untuk kode DI DALAM layanan dan tidak berlaku lintas layanan tetapi intinya masih ada. Bagaimana jika kita menambahkan bidang ... kita harus memodifikasi 5 layanan POJO di masing-masing.
--OR-- Kami dapat menyediakan Pet-Objects-Library yang berisi beberapa pojo dari API dan setiap layanan dapat mengimpor / ketergantungan pada perpustakaan. Tidak ada ketergantungan pada layanan itu sendiri, tetapi hanya perpustakaan umum. Saya suka ide ini sehingga setiap layanan memiliki jenis objek yang sama dan pembaruan lebih mudah. Tapi saya khawatir tentang Objek-Tuhan.
Apa pro / kontra - apa desain terbaik? Apa yang telah Anda lakukan untuk melewatkan data antar layanan untuk meminimalkan pengulangan kelas POJO yang sama sambil tetap tidak digabungkan?