এই খারাপ নকশা? এটা কিভাবে উন্নত করা যায়?


9

আমি নিম্নলিখিতটি লিখেছিলাম কিছুক্ষণ আগে, তবে আমি সম্প্রতি এটি পর্যালোচনা করতে এসেছি, এবং এখন এটি ভাল নকশা বলে মনে করবেন না।

সত্তা ফ্রেমওয়ার্ক 4 ব্যবহার করে ডিজাইনটি এক ধরণের মডুলার ডাটাবেস স্তরটির জন্য There তাদের নাম (EG "ContentMgmtContext")।

এই সিস্টেমে ডাটাবেসের সাথে সমস্ত যোগাযোগ সঞ্চিত পদ্ধতির মাধ্যমে হয়। ডাটাবেসে কল করার জন্য, ক্যোয়ারী পদ্ধতির স্বাক্ষরটি দেখে মনে হচ্ছে:

List<TReturn> Query<TReturn>(string Context, 
                             string Procedure, 
                             TransactionScope Scope, 
                             List<ObjectParameter> QueryParameters)

এই পরিমিতিটি আমার পছন্দ মতো something যাইহোক, এই পদ্ধতির একটি উল্লেখযোগ্য ত্রুটি রয়েছে: when using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through Entity Framework.মডেলটিতে, ডেটাবেস স্তর থেকে অবজেক্টগুলি নতুন অবজেক্টে অনুবাদ করা হয় যা ভিউ এবং নিয়ামক ব্যবহার করে।

আমি মনে করি এটি খারাপ নকশা, তবে আমি কীভাবে এটি উন্নত করতে পারি? আমি একটি খালি ইন্টারফেস যোগ করার মতো বিবেচিত IStoredProecedureObjectহয়েছি যে কোনও স্টোরড পদ্ধতিতে ফিরে আসা প্রতিটি ডেটা টাইপকে একটি সাধারণ বেস প্রকার দেওয়া যায়, তবে এটি সত্তা ফ্রেমওয়ার্ক দ্বারা বানচাল বলে মনে হয়। প্রতিবার .edmxফাইলটি পুনরায় সংযুক্ত করার সময় কোডটি নতুনভাবে উত্পন্ন হয় এবং কোনও সংযোজন সরানো হয়। এই ঘটনাকে থামানোর কোনও উপায় আছে কি?

আমি কীভাবে এই নকশাটি উন্নত করতে পারি? এতে (অন্য) কী ভুল? না আমি সঠিক পথে?

উত্তর:


6

দাবি অস্বীকার: আমি সত্তা কাঠামো ব্যবহার করি না এবং কেবল কোনও ডাটাবেস সহায়ক কাঠামোর বিরুদ্ধে প্রচণ্ড পক্ষপাতী।

দেখে মনে হচ্ছে আপনি একটি মোড়ক তৈরি করেছেন।

আমি "মোড়ক" এবং "স্তর" এর মধ্যে পার্থক্য করি make স্তর হ'ল এমন কিছু যা আপনি এটির নিজস্ব ডিএলএল / প্রকল্প / জার / যা কিছু সংকলন করতে পারেন। ডেটা অ্যাক্সেস স্তর। র্যাপার আপনি "ডিএলএল" এর মধ্যে ব্যবহার করেন এমন একটি "সহায়ক" শ্রেণি হচ্ছেন। ইন্টারফেসটি সহজ করার উদ্দেশ্যে, বা সম্ভবত সদৃশকরণটি নির্মূল করুন।

ডাটাবেস অ্যাক্সেসের ইন্টারফেসটি সহজ করার সাথে সমস্যা এটি সাধারণত সহজ নয় commonly আপনি হয় ADO / জেডিবিসি / ইত্যাদির ইন্টারফেসটির সদৃশ করে ফেলুন। অথবা আপনি লোককে এড়াতে বাধ্য করেন। মোড়কেরা সমস্ত ধরণের অযাচিত কাজ করে থাকে। কোনও লেনদেন সমর্থন করার জন্য আপনার যখন এটি খোলার দরকার হয় তখন তারা স্বয়ংক্রিয়ভাবে কোনও সংযোগ বন্ধ করতে পারে। আপনার যদি ডেটা স্ট্রিম করতে হয় তবে তারা ভুল করে সংযোগগুলি খোলা রাখেন এবং এই আবর্জনা সংগ্রহ করা ভাষাগুলির মধ্যে একটি ব্যবহার করছেন one আপনার মোড়কের পিছনে লাইব্রেরির পুরো শক্তি দেওয়ার জন্য আপনাকে এটিকে নকল করতে বাধ্য করা হবে।

এডিও / জেডিবিসির মতো গ্রন্থাগারগুলি ইতিমধ্যে একটি দুর্দান্ত ইন্টারফেস। এগুলি সঠিকভাবে সম্পন্ন OOP এর কয়েকটি সেরা উদাহরণ। আমি তাদের টুপি থেকে টানা কিছু উইজবাং একটি মোড়কের উপরে ব্যবহার করতে পছন্দ করব।

ক্লাসিক জেডিবিসি / এডিও শৈলী ইন্টারফেসটি সুপরিচিত এবং বোধগম্য। আপনি আপনার টুপি থেকে বের করেছেন এমন র‍্যাপারটি নয়।

অপ্রয়োজনীয় "পরামিতিগুলি" যুক্ত করতে চান? যোগ করুন? জেনেরিকগুলি দেখুন। অথবা কেবলমাত্র "প্যারামটার" হ্রাস করার চেষ্টা করে তা গ্রহণ করুন d যুক্ত করুন আপনি আসলে কোডের অন্য একটি স্তরে ".dd" চাপুন।

বিটিডাব্লিউ এটি একটি দুর্দান্ত প্রশ্ন। আমি যদি এটি করতে পারি তবে আমি এটি 10 ​​বার উপস্থাপন করব।

সম্পাদনা: অবশ্যই জেডিবিসি কোডটি ডেটা অ্যাক্সেস লেয়ারে লুকিয়ে রাখা হত।


আমি একমত পোষণ করি যে, এটি নিজের চেয়ে 4 ইএফ-এর আরও বেশি মোড়কযুক্ত। এর পেছনের ধারণাটি ছিল বিভিন্ন ডাটাবেস সংযোগের বিভিন্ন টুকরো (যেমন একটি স্ট্যান্ডার্ড ডেটা মডেল) পুনরায় ব্যবহার করার অনুমতি দেওয়া হবে যখন একাধিক ডাটাবেসের জন্য একক পয়েন্ট প্রবেশ করানো ছিল, যার প্রতিটি পুনরায় ব্যবহারের বৈশিষ্ট্যযুক্ত। এই ডাটাবেস মোড়ক একটি পৃথক গ্রন্থাগারে সংকলিত হয়েছে (অন্যান্য ব্যবসার যুক্তির সাথে)। আমি কীভাবে আমার ডিজাইনটিকে উন্নতি করতে পরিবর্তন করার পরামর্শ দেব?
অ্যান্ডি হান্ট

আপনার EF বায়াস সত্ত্বেও দুর্দান্ত সামগ্রীর জন্য +1 ... যদিও ডিবি সাহায্যকারী কাঠামোর চেয়ে EF বেশি। আপনি এটির জন্য একটি মোড়ক তৈরি করার চেষ্টা সম্পর্কে ঠিক বলেছেন।
SoylentGray
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.