ডিডিডিতে, বৈধতা প্রয়োগের যুক্তি, বা ডোমেন যুক্তি?


26

মনে করুন আমরা ডিডিডি ব্যবহার করে একটি ফর্ম মডেলিং করছি; ফর্মটির সাথে এটির সাথে নির্দিষ্ট ধরণের ব্যবসায়ের নিয়ম যুক্ত থাকতে পারে - সম্ভবত আপনি যদি ছাত্র না হন তবে আপনাকে একটি আয় নির্দিষ্ট করতে হবে এবং আপনি বিবাহিত বলে নির্দেশ দিলে আপনার বাচ্চাদের তালিকা তৈরি করতে হবে। এবং যদি আপনি কোনও দেশ নির্দিষ্ট করে থাকেন তবে তার একটি বৈধ দেশ থাকা উচিত।

এই জাতীয় বৈধতা ডোমেন বা অ্যাপ্লিকেশন স্তরে বাস করে? আমি বিবেচনা করছি কিছু অন্যান্য বিষয়:

  • কিছু ফ্রেমওয়ার্ক যেমন লারাভেল বৈধকরণের নিয়ম সরবরাহ করে যা কোনও অনুরোধ নিয়ামককে আঘাতের আগে ইনপুটকে বৈধতা দেয়। বৈধতা যদি সেই স্তরে সম্পন্ন করা হয় তবে এটি ডিডিডি ভঙ্গ করে?

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

  • অ্যাপ্লিকেশন এবং ডোমেন স্তর উভয় ক্ষেত্রেই কি ইনপুটটিকে বৈধতা দেওয়া দরকার?


6
আপনার প্রশ্নটি ধরে নেওয়া হয়েছে যে সবসময় সবসময় রাখার জন্য এক, সঠিক জায়গা আছে। নেই।
রবার্ট হার্ভে

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

উত্তর:


29

এই জাতীয় বৈধতা ডোমেন বা অ্যাপ্লিকেশন স্তরে বাস করে?

আবেদন। আপনি যে যাদু অনুসন্ধান শব্দটি চান তা হ'ল দুর্নীতিবিরোধী স্তর

সাধারণত, আপনার অ্যাপ্লিকেশন দ্বারা প্রাপ্ত বার্তাটি ডিটিওর স্বাদে আসবে। আপনার বিরোধী দুর্নীতির স্তরটি সাধারণত এমন ধরণের মান তৈরি করে যা ডোমেনটি স্বীকৃতি জানায়। ডোমেন মডেলটিতে প্রেরিত প্রকৃত কমান্ডটি বৈধতাপ্রাপ্ত মান ধরণের ক্ষেত্রে প্রকাশ করা হবে।

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

কমান্ডটি ডোমেন মডেলটি বুঝতে পারে এমন ধরণের সাফল্যের সাথে পার্স করার পরে, কমান্ডটি ডোমেনে কার্যকর করা হয়, যা এখনও ব্যবসায়ের আক্রমণকারীকে লঙ্ঘন করবে এই কারণে কমান্ডটি প্রত্যাখ্যান করতে পারে (অ্যাকাউন্টটি এখনও উপস্থিত নেই, অ্যাকাউন্টটি অবরুদ্ধ রয়েছে, এই নির্দিষ্ট অ্যাকাউন্টটিকে সেই মুদ্রা ব্যবহার করার অনুমতি নেই? ইত্যাদি)।

অন্য কথায়, বিরোধী দুর্নীতির স্তর ইনপুটগুলিকে বৈধতা দেওয়ার পরে ডোমেন মডেলটিতে ব্যবসায়ের বৈধতা ঘটতে চলেছে।

বৈধতা নিয়মের প্রয়োগটি সাধারণত মান ধরণের নির্মাতায় বা মানের ধরণটি নির্মাণের জন্য ব্যবহৃত ফ্যাক্টরি পদ্ধতিতে বাঁচবে। মূলত, আপনি অবজেক্টগুলির নির্মাণকে সীমাবদ্ধ করেন যাতে এগুলি বৈধ হওয়ার গ্যারান্টিযুক্ত হয়, যুক্তিটি এক জায়গায় পৃথক করে এবং প্রক্রিয়া সীমানায় অনুরোধ করে।


আবেদন কেন উত্তর? আপনার পাঠ্য অনুসারে আনুষ্ঠানিক বৈধতা ডোমেনে বা অ্যাপ্লিকেশন এবং ডোমেনের ব্যবসায়িক বৈধতা উভয় ক্ষেত্রেই করা যেতে পারে।
inf3rno

@ inf3rno কারণ যে প্রশ্নগুলি বিশেষত কোনও ফর্মটি যাচাইয়ের বিষয়ে জিজ্ঞাসা করেছিল যা ডোমেনের সাথে সম্পর্কিত নয়
সময়সূচী

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

5

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

এর অর্থ এই নয় যে যখন আপনার ডোমেনটি মানুষের সাথে (পর্দা, ফর্ম ইত্যাদির মাধ্যমে) যোগাযোগ করে যে কোনও বৈধতা বা সহায়তা দরকার নেই। এটি উপলব্ধি করুন এটি alচ্ছিক।

বিবেচনা করুন যে এখানে দুটি ধরণের ব্যবসায়ের বিধি রয়েছে: - সম্পত্তি বিধি যা কোনও সামগ্রীর বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করে এবং সহযোগিতার নিয়ম যা বস্তুর মধ্যে সহযোগিতা যোগ এবং অপসারণকে সীমাবদ্ধ করে।

ব্যবসায়ের নিয়মগুলি যুক্তিযুক্ত নিয়মের থেকে পৃথক, যা আপনার প্রোগ্রামিং ভাষার সাথে সম্পর্কিত এবং এটি পরীক্ষা করে যে মানগুলি সরবরাহ করা হয়েছে এবং নাল নয় etc.

দ্রষ্টব্য: আপনার ফর্মটির "মডেলিং" এর ডিডিডিতে কোনও ধারণা নেই।


0

নির্দিষ্ট রাষ্ট্র কি মডেল সত্তাকে অবৈধ করে তুলবে? যদি হ্যাঁ, তবে মডেলটিকে অবশ্যই সত্তাকে সেই অবস্থায় পৌঁছাতে বাধা দিতে হবে। তার মানে মডেলটিকে নিজের নিজের যাচাই করতে হবে তা অবশ্যই জানতে হবে।

তবে একটি সামান্য সমস্যা আছে: মডেল বৈধতা প্রায়শই অনেক দেরিতে হয়। প্রায়শই, আমরা খুব শীঘ্রই বৈধকরণ করতে চাই, তাই ব্যবহারকারীকে খুব বেশি সময় অপেক্ষা করতে হবে না। যে কারণে বৈধতা প্রায়শই প্রয়োগ যুক্তিযুক্ত করা হয়।

বৈধতার প্রসঙ্গে: সত্তা অতিরিক্ত ডেটার জন্য জিজ্ঞাসা করতে সক্ষম হওয়ার কোনও সমস্যা নেই। কিন্তু সেই ডেটাগুলি কোথা থেকে এসেছে সেদিকে নজর দেওয়া উচিত নয়। এটি এসকিউএল, ফাইল থেকে আসে বা কেবল হার্ড কোডড হয় কিনা তা বিবেচ্য নয়। এজন্য ভান্ডারগুলির উপস্থিতি রয়েছে। ডোমেনটি কী ধরণের কোয়েরির প্রয়োজন তা সংজ্ঞায়িত করে এবং অন্য কাউকে বাস্তবায়নের যত্ন নিতে দেয়।


-2

ডোমেন স্তরটিতে সমস্ত বৈধতা যুক্তি থাকতে হবে। উপস্থাপনা, দুর্নীতিবিরোধী স্তরগুলি বা অন্যান্য নির্ভরশীল স্তরগুলির প্রতিফলন করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.