মুখবন্ধ
আশা করি এটি সুস্পষ্ট, তবে ... নীচের প্রস্তাবিত নেমস্পেসগুলিতে, আপনি প্রতিস্থাপন করবেন MyCompany
এবং MyProject
আপনার সংস্থা এবং প্রকল্পের প্রকৃত নাম সহ।
DTOs
আমি সমস্ত স্তর জুড়ে একই ডিটিও ক্লাস ব্যবহার করার পরামর্শ দেব। রক্ষণাবেক্ষণের কম পয়েন্ট। আমি সাধারণত MyCompany.MyProject.Models
তাদের একই নামের নিজস্ব ভিএস প্রকল্পে একটি নেমস্পেসের নীচে রাখি । এবং আমি সাধারণত তাদের প্রকৃত বিশ্ব সত্তার নাম দিয়েছি যা তারা প্রতিনিধিত্ব করে। (আদর্শভাবে, ডাটাবেস টেবিলগুলিও একই নাম ব্যবহার করে তবে কখনও কখনও স্কিমাটি কিছুটা আলাদাভাবে সেট আপ করা বোধগম্য হয়))
উদাহরণ: Person
, Address
,Product
নির্ভরতা: কোনওটি নয় (স্ট্যান্ডার্ড। নেট বা সহায়ক লাইব্রেরি ব্যতীত)
ডাল
এখানে আমার ব্যক্তিগত পছন্দটি হল ডিটিও ক্লাসগুলির সাথে মিলে ড্যাল ক্লাসের এক-এক-এক সেট ব্যবহার করা, তবে একটি MyCompany.MyProject.DataAccess
নেমস্পেস / প্রকল্পে। Engine
দ্বন্দ্ব এড়াতে শ্রেণীর নামগুলি প্রত্যয় দিয়ে শেষ হয় । (যদি আপনি এই শব্দটি পছন্দ করেন না, তবে একটি DataAccess
প্রত্যয়টিও ভাল কাজ করবে you আপনি যা পছন্দ করেন তার সাথে সামঞ্জস্য রাখুন)) প্রতিটি ক্লাসটি বেশিরভাগ ইনপুট পরামিতি এবং রিটার্নের ধরণের জন্য ডিটিও ক্লাস ব্যবহার করে ডাটাবেসগুলিতে হিট করা সহজ সিআরইউডি বিকল্প সরবরাহ করে (ভিতরে একটি জেনেরিক List
যখন একের বেশি থাকে যেমন, কোনও Find()
পদ্ধতি থেকে প্রত্যাবর্তন )।
উদাহরণ: PersonEngine
, AddressEngine
,ProductEngine
নির্ভরতা: MyCompany.MyProject.Models
আওয়ামী লীগ / BLL
এছাড়াও এখানে একের জন্য একের জন্য ম্যাপিং, তবে একটি MyCompany.MyProject.Logic
নেমস্পেস / প্রকল্পে এবং ক্লাসগুলি Logic
প্রত্যয় পেয়েছে । এই ডাল ডাকে একমাত্র স্তর হওয়া উচিত ! এখানকার ক্লাসগুলি প্রায়শই ডএএল-এ কেবল একটি সহজ পাস-মাধ্যমে হয় তবে যদি & যখন ব্যবসায়ের নিয়মগুলি প্রয়োগ করা দরকার হয়, এটি এটির জন্য জায়গা।
উদাহরণ: PersonLogic
, AddressLogic
,ProductLogic
নির্ভরতা: MyCompany.MyProject.Models
,MyCompany.MyProject.DataAccess
এপিআই
যদি কোনও ওয়েব পরিষেবাদির এপিআই স্তর থাকে তবে আমি ক্লাস প্রত্যয় হিসাবে একই নামের এক-জন্য-এক পদ্ধতির ব্যবহার করি তবে একটি MyCompany.MyProject.WebApi
নেমস্পেস / প্রকল্পে Services
। (আপনি যদি এএসপি.নেট ওয়েব এপিআই ব্যবহার না করেন তবে আপনি অবশ্যই এর Controller
পরিবর্তে প্রত্যয় ব্যবহার করবেন)।
উদাহরণ: PersonServices
, AddressServices
,ProductServices
নির্ভরতা: MyCompany.MyProject.Models
, MyCompany.MyProject.Logic
(এই বাইপাস কখনো ডাল সরাসরি কল করে!)
ব্যবসায় যুক্তি সম্পর্কিত একটি পর্যবেক্ষণ
লোকেদের বিএএল / বিএলএল ছেড়ে চলে যাওয়া এবং এর পরিবর্তে ব্যবসায়িক যুক্তি অন্য এক স্তর বা অন্য স্তরগুলিতে প্রয়োগ করা, যেখানেই এটি সবচেয়ে বেশি অর্থবোধ করে তা ক্রমশ সাধারণ হয়ে উঠছে বলে মনে হয়। আপনি যদি এটি করেন তবে একেবারে নিশ্চিত হয়ে নিন যে (1) সমস্ত অ্যাপ্লিকেশন কোডটি ব্যবসায়ের যুক্তি সহ স্তর (গুলি) এর মধ্য দিয়ে যায় এবং (২) এটি স্পষ্ট এবং / অথবা ভালভাবে নথিভুক্ত যেখানে প্রতিটি নির্দিষ্ট ব্যবসার বিধি কার্যকর করা হয়েছে। যদি সন্দেহ হয় তবে বাড়িতে এটি চেষ্টা করবেন না।
এন্টারপ্রাইজ-স্তরের আর্কিটেকচারের একটি চূড়ান্ত নোট
আপনি যদি কোনও বৃহত সংস্থায় থাকেন বা অন্য পরিস্থিতিতে একই ডেটাবেস টেবিলগুলি একাধিক অ্যাপ্লিকেশন জুড়ে ভাগ করে নেওয়া হয়, তবে আমি MyProject
উপরের নেমস্পেস / প্রকল্পগুলির অংশটি বাদ দেওয়ার পরামর্শ দেব । এই স্তরগুলি একাধিক ফ্রন্ট-এন্ড অ্যাপ্লিকেশন (এবং উইন্ডোজ পরিষেবাদির মতো পর্দার পিছনের ইউটিলিটিগুলি) দ্বারা ভাগ করা যায়। তবে কেবলমাত্র এটি করুন যদি আপনার কাছে দৃ strong় ক্রস-টিম যোগাযোগ এবং পুরো স্থানে স্বয়ংক্রিয়ভাবে পুনরায় চাপ দেওয়ার পরীক্ষা থাকে !!! অন্যথায়, একটি দলের ভাগ করা মূল উপাদানগুলিতে পরিবর্তনের ফলে অন্য দলের প্রয়োগ ভঙ্গ হতে পারে break