আমার একটি ওয়েব অ্যাপ্লিকেশন রয়েছে। প্রযুক্তিটি গুরুত্বপূর্ণ বলে আমি বিশ্বাস করি না। কাঠামোটি একটি এন-টিয়ার অ্যাপ্লিকেশন, বাম দিকে চিত্রটিতে প্রদর্শিত হয়েছে। 3 স্তর আছে।
ইউআই (এমভিসি প্যাটার্ন), বিজনেস লজিক লেয়ার (বিএলএল) এবং ডেটা অ্যাক্সেস লেয়ার (ডাল)
আমার বিএলএল সমস্যাটি হ'ল বিশাল কারণ এতে অ্যাপ্লিকেশন ইভেন্টগুলির কলের মাধ্যমে যুক্তি এবং পথ রয়েছে।
অ্যাপ্লিকেশন মাধ্যমে একটি সাধারণ প্রবাহ হতে পারে:
বিআইএল-তে কোনও পদ্ধতি অনুসরণ করে ইউআই-তে চালিত ইভেন্ট, যুক্তি সম্পাদন করুন (সম্ভবত বিএলএলটির একাধিক অংশে), অবশেষে ডএএল থেকে ফিরে বিএলএল (যেখানে সম্ভবত আরও যুক্তিযুক্ত) ফিরে আসুন এবং তারপরে ইউআইতে কিছু মান ফেরত দিন।
এই উদাহরণের বিএলএল খুব ব্যস্ত এবং আমি কীভাবে এটি বিভক্ত করব তা ভাবছি। আমার কাছে যুক্তি এবং অবজেক্টগুলি সংযুক্ত রয়েছে যা আমি পছন্দ করি না।
ডান সংস্করণ আমার প্রচেষ্টা।
যুক্তিটি এখনও ইউআই এবং ডালের মধ্যে কীভাবে প্রবাহিত হবে, কিন্তু এর কোনও বৈশিষ্ট্য সম্ভবত নেই ... কেবলমাত্র পদ্ধতি (এই স্তরের বেশিরভাগ শ্রেণির সম্ভবত স্থির থাকতে পারে কারণ তারা কোনও রাজ্য সংরক্ষণ করে না)। পোকো স্তরটি এমন যেখানে ক্লাসগুলির উপস্থিতি রয়েছে যার বৈশিষ্ট্য রয়েছে (যেমন কোনও ব্যক্তি শ্রেণি যেখানে নাম, বয়স, উচ্চতা ইত্যাদি থাকবে)। এগুলির প্রয়োগের প্রবাহের সাথে কোনও সম্পর্ক নেই, তারা কেবল স্টেট স্টোর করে।
প্রবাহটি হতে পারে:
এমনকি ইউআই থেকে ট্রিগার করে এবং কিছু তথ্য ইউআই লেয়ার কন্ট্রোলার (এমভিসি) এ দেয়। এটি কাঁচা ডেটা অনুবাদ করে এবং পোকো মডেলে রূপান্তর করে। এরপরে পোকো মডেলটি লজিক স্তর (যা বিএলএল ছিল) এবং শেষ পর্যন্ত কমান্ড ক্যোয়ারী লেয়ারে চলে যায়, সম্ভাব্য পথে চালিত করে। কমান্ড ক্যোয়ারী স্তরটি পোকোকে একটি ডাটাবেস অবজেক্টে রূপান্তরিত করে (যা প্রায় একই জিনিস, তবে একটিটি দৃistence়তার জন্য ডিজাইন করা হয়েছে, অন্যটি সামনের প্রান্তের জন্য)) আইটেমটি সংরক্ষণ করা হয় এবং একটি ডাটাবেস অবজেক্টটি কমান্ড কোয়েরি স্তরটিতে ফিরে আসে। এরপরে এটি একটি পোকোতে রূপান্তরিত হয়, যেখানে এটি লজিক স্তরে ফিরে আসে, সম্ভাব্যভাবে আরও প্রক্রিয়া করা হয় এবং শেষ পর্যন্ত ইউআইতে ফিরে আসে
ভাগ করা যুক্তি এবং ইন্টারফেসগুলি যেখানে আমাদের অবিরাম ডেটা থাকতে পারে, যেমন ম্যাক্সনম্বারঅফ_ এক্স এবং টোটালএলওয়েড_ এক্স এবং সমস্ত ইন্টারফেস।
ভাগ করা যুক্তি / ইন্টারফেস এবং ডাল উভয়ই আর্কিটেকচারের "বেস"। এগুলি বাইরের পৃথিবী সম্পর্কে কিছুই জানে না।
ভাগ করা যুক্তি / ইন্টারফেস এবং ডএএল ব্যতীত পোকো সম্পর্কে সমস্ত কিছু জানে।
প্রবাহটি এখনও প্রথম উদাহরণের সাথে খুব সমান, তবে এটি প্রতিটি স্তরের 1 টি জিনিসের জন্য আরও বেশি দায়বদ্ধ করেছে (এটি রাষ্ট্র, প্রবাহ বা অন্য যে কোনও কিছু হোক) ... তবে আমি কি এই পদ্ধতির সাথে ওওপি ভেঙে দিচ্ছি?
লজিক এবং পোকো ডেমো উদাহরণস্বরূপ হতে পারে:
public class LogicClass
{
private ICommandQueryObject cmdQuery;
public PocoA Method1(PocoB pocoB)
{
return cmdQuery.Save(pocoB);
}
/*This has no state objects, only ways to communicate with other
layers such as the cmdQuery. Everything else is just function
calls to allow flow via the program */
public PocoA Method2(PocoB pocoB)
{
pocoB.UpdateState("world");
return Method1(pocoB);
}
}
public struct PocoX
{
public string DataA {get;set;}
public int DataB {get;set;}
public int DataC {get;set;}
/*This simply returns something that is part of this class.
Everything is self-contained to this class. It doesn't call
trying to directly communicate with databases etc*/
public int GetValue()
{
return DataB * DataC;
}
/*This simply sets something that is part of this class.
Everything is self-contained to this class.
It doesn't call trying to directly communicate with databases etc*/
public void UpdateState(string input)
{
DataA += input;
}
}