আমি একটি আর্কিটেকচারে কাজ করছি, এটি ওয়েব ক্লায়েন্ট এবং মোবাইল অ্যাপ্লিকেশনগুলির জন্য একটি বিশ্রাম এপিআই প্রদান করবে। আমি স্প্রিং (স্প্রিং এমভিসি, স্প্রিং ডেটা জেপি, ... ইত্যাদি) ব্যবহার করছি। ডোমেন মডেলটি জেপিএ স্পেসিফিকেশন সহ কোডড।
আমি পরিষ্কার আর্কিটেকচারের কিছু ধারণাগুলি প্রয়োগ করার চেষ্টা করছি ( https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html )। সমস্ত নয়, কারণ আমি জেপিএ ডোমেন মডেল রাখছি।
স্তরগুলির মাধ্যমে প্রকৃত প্রবাহটি হ'ল:
সম্মুখ সমাপ্তি <--> এপিআই পরিষেবা -> পরিষেবা -> সংগ্রহস্থল -> ডিবি
- সম্মুখ সমাপ্তি : ওয়েব ক্লায়েন্ট, মোবাইল অ্যাপ্লিকেশন
- এপিআই পরিষেবা : বিশ্রাম নিয়ন্ত্রণকারীগণ, এখানে আমি রূপান্তরকারী এবং ডিটিও এবং কল পরিষেবাগুলি ব্যবহার করি
- পরিষেবা : বাস্তবায়নের সাথে ইন্টারফেস এবং এগুলিতে ব্যবসায়িক যুক্তি রয়েছে
- সংগ্রহস্থল : স্বয়ংক্রিয়ভাবে বাস্তবায়নের সাথে রিপোজিটরি ইন্টারফেসগুলি (স্প্রিং ডেটা জেপিএ দ্বারা সম্পন্ন) যা সিআরইউডি অপারেশনগুলিকে সংশ্লেষ করে এবং সম্ভবত কিছু এসকিএল কোয়েরি করে
আমার সন্দেহ: পরিষেবা এবং ভান্ডারগুলির মধ্যে আমার কি অতিরিক্ত স্তর ব্যবহার করা উচিত?
আমি এই নতুন প্রবাহের পরিকল্পনা করছি:
সম্মুখ সমাপ্তি <--> এপিআই পরিষেবা -> পরিষেবা -> অধ্যবসায় -> ভান্ডার -> ডিবি
কেন এই অধ্যবসায় স্তরটি ব্যবহার করবেন? যেমন এটি পরিষ্কার আর্কিটেকচার নিবন্ধে বলা হয়েছে আমি একটি পরিষেবা বাস্তবায়ন (ব্যবসায়িক যুক্তি বা ব্যবহারের ক্ষেত্রে) রাখতে চাই যা একটি অজ্ঞেয়বাদী অধ্যবসায় স্তর অ্যাক্সেস করে। এবং যদি আমি অন্য "ডেটা অ্যাক্সেস" প্যাটার্নটি ব্যবহার করার সিদ্ধান্ত নিই তবে পরিবর্তনের প্রয়োজন হবে না, উদাহরণস্বরূপ যদি আমি সংগ্রহস্থল ব্যবহার বন্ধ করার সিদ্ধান্ত নিই।
class ProductServiceImpl implements ProductService {
ProductRepository productRepository;
void save(Product product) {
// do business logic
productRepository.save(product)
}
}
সুতরাং আমি ভাবছি এইরকম একটি অধ্যবসায় স্তর ব্যবহার করুন:
class ProductServiceImpl implements ProductService {
ProductPersistence productPersistence;
void save(Product product) {
// do business logic
productPersistence.save(product)
}
}
এবং অবিরাম স্তরের বাস্তবায়ন:
class ProductPersistenceImpl implements ProductPersistence {
ProductRepository productRepository;
void save(Product product) {
productRepository.save(product)
}
}
সুতরাং আমার কেবল দৃ pers়তার স্তরটির প্রয়োগগুলি পরিবর্তন করা দরকার, পরিবর্তন ছাড়াই পরিষেবাটি ছেড়ে দেওয়া হয়েছে the সংগ্রহস্থল কাঠামোর সাথে সম্পর্কিত with
আপনি কি মনে করেন? ধন্যবাদ।