কমান্ড হ্যান্ডলার এবং ডিডিডি


11

আমার কাছে একটি এএসপি.নেট এমভিসি অ্যাপ্লিকেশন রয়েছে, এটি ডেটা পেতে একটি ক্যোয়ারী পরিষেবা এবং কমান্ড প্রেরণের জন্য একটি কমান্ড পরিষেবা ব্যবহার করে। আমার প্রশ্ন কমান্ড অংশ সম্পর্কে।

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

কংক্রিটের উদাহরণ: অ্যাডকমেন্টটোআর্টিক্যালকম্যান্ডহ্যান্ডলার একটি অ্যাডকমেন্টটোআর্টিকেলকমন্ড গ্রহণ করে, যার একটি আর্টিকেল আইডি, কমেন্টটেক্সট এবং ইমেলএড্রেস রয়েছে।

প্রথম; বৈধতা দেখাতে হবে, যেমন: - নিবন্ধটি রয়েছে কিনা তা পরীক্ষা করুন - নিবন্ধটি বন্ধ নেই কিনা তা পরীক্ষা করুন - মন্তব্য পাঠ্যটি 20 থেকে 500 বর্ণের মধ্যে পূরণ করা হয়েছে কিনা তা পরীক্ষা করুন - ইমেল ঠিকানাটি পূরণ হয়েছে কিনা এবং এটির বৈধ বিন্যাস আছে কিনা তা পরীক্ষা করে দেখুন।

আমি ভাবছি এই বৈধতা কোথায় রাখব?

1 / নিজেই কমান্ড হ্যান্ডলারে। তবে তারপরে, অন্যান্য কমান্ড হ্যান্ডলারগুলিতে এটি পুনরায় ব্যবহার করা যাবে না।

2 / ডোমেন সত্তা। তবে যেহেতু কোনও ডোমেন সত্তা সংগ্রহশালা বা পরিষেবাদি সম্পর্কে জানেন না, এটি প্রয়োজনীয় বৈধতা (কোনও নিবন্ধ বিদ্যমান কিনা তা পরীক্ষা করতে পারে না) করতে পারে না। অন্যদিকে, সত্তায় যদি যুক্তি না থাকে তবে এটি একটি সাধারণ ডেটা ধারক হয়ে যায়, যা ডিডিডি নীতি অনুসরণ করে না।

3 / কমান্ড হ্যান্ডলারটি বৈধকারীদের ব্যবহার করে, যাতে অন্যান্য কমান্ড হ্যান্ডলারগুলিতে বৈধতা পুনরায় ব্যবহার করা যায়।

4 / অন্যান্য প্রক্রিয়া?

আমি এই বিশেষ উদাহরণটির জন্য দায়বদ্ধতার সন্ধান করছি এবং কী কী বস্তু (সত্তা, সংগ্রহশালা, ...) এতে ভূমিকা রাখে।

কমান্ড হ্যান্ডলার থেকে শুরু করে ভান্ডারগুলি পর্যন্ত আপনি কীভাবে এটি বাস্তবায়ন করবেন সে সম্পর্কে আপনার ধারণা আছে?


"তবে যেহেতু কোনও ডোমেন সত্তা ভান্ডারগুলি বা পরিষেবাদি সম্পর্কে জানে না, এটি প্রয়োজনীয় যাচাইকরণ করতে পারে না"? কেন না? ডিডিডির কোন নীতিটি এর প্রয়োজন?
এস.লট

আমি সর্বত্র পড়েছি যে কোনও সত্তা সংগ্রহস্থল বা অন্য কিছু সম্পর্কে জানা উচিত নয়।
এল-ফোর

আপনি কি একটি উদ্ধৃতি, লিঙ্ক বা এর উদাহরণ সরবরাহ করতে পারেন - বিশেষত - আপনি পড়েছেন? আমরা জানি না আপনি কী ডিডিডি পড়ছেন।
এস্লট


জিমি বোগার্ড এই বিষয়টিতে
মেয়ো

উত্তর:


4

আমি মনে করি আপনাকে এই ক্ষেত্রে দুটি ধরণের বৈধতা আলাদা করতে হবে; ডোমেন বৈধতা এবং অ্যাপ্লিকেশন বৈধতা

অ্যাপ্লিকেশন বৈধতা যা আপনি যাচাই করেন যখন কমান্ড প্রপার্টি 'পাঠ্য' 20 এবং 200 অক্ষরের মধ্যে থাকে; সুতরাং আপনি এটি জিইউআই এবং একটি ভিউ-মডেল-যাচাইকারীর সাথে বৈধতা দিন যা কোনও পোস্টের পরে সার্ভারে চালিত হয়। ইমেলটিও একই রকম হয় (বিটিডাব্লু, আমি আশা করি আপনি বুঝতে পেরেছেন যে e 32.d + "হ্যালো ওয়ার্ল্ড .42" @ মাইন্ডোমেন.লোকাল "এর মতো কোনও ইমেল আরএফসি অনুসারে বৈধ)।

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

উপরের ক্ষেত্রে, আপনার কাছে এমন অবকাঠামো থাকবে যা বিষের বার্তাগুলি পরিচালনা করে - তারা উদাহরণস্বরূপ 1-5 বার বার্তাটি আবার চেষ্টা করবে এবং তারপরে এটি একটি সারি সারিতে সরিয়ে নিয়ে যাবে যেখানে আপনি ম্যানুয়ালি বার্তাগুলির সংগ্রহটি পরীক্ষা করতে পারবেন এবং সেগুলি প্রাসঙ্গিকভাবে প্রেরণ করতে পারবেন। এটি নিরীক্ষণ করা ভাল জিনিস।

সুতরাং এখন আমরা আলোচনা করেছি:

  • অ্যাপ্লিকেশন বৈধতা

    • জিইআইতে জাভাস্ক্রিপ্ট সহ
    • ওয়েব সার্ভারে এমভিসি-বৈধকরণ সহ
  • সামগ্রিক রুট + বিষের সারি নিখোঁজ

ডোমেনের সাথে সিঙ্কের বাইরে থাকা কমান্ডগুলির কী হবে? সম্ভবত আপনার ডোমেন যুক্তিতে এমন একটি নিয়ম আছে যে একটি নিবন্ধে 5 টি মন্তব্য করার পরে, কেবলমাত্র 400 টি অক্ষরের নীচে মন্তব্য করার অনুমতি দেওয়া হয়েছে, তবে একটি লোক 5 তম মন্তব্যে খুব দেরী করেছিল এবং 6 তম হতে পারে - জিইউআই এটি ধরেনি কারণ তাঁর কমান্ড প্রেরণ করার সময়ে এটি ডোমেনের সাথে সামঞ্জস্যপূর্ণ ছিল না - এই ক্ষেত্রে আপনার ডোমেন যুক্তির অংশ হিসাবে আপনার 'বৈধতা ব্যর্থতা' রয়েছে এবং আপনি সংশ্লিষ্ট ব্যর্থতার ঘটনাটি ফিরিয়ে আনবেন।

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

প্রায়শই আপনার কাস্টম ইভেন্ট থাকে যার অর্থ হ'ল বিভিন্ন ধরণের কমান্ডের ব্যর্থতা, এবং এটি এই ইভেন্টটি যা আপনি ওয়েব সার্ভারের দৃষ্টিকোণ থেকে সাবস্ক্রাইব করেছেন।

যে সিস্টেমে আমরা কাজ করছি, আমরা ম্যাসট্রান্সিট + রবিটএমকিউ বার্তা + ব্রোকারের মাধ্যমে কমান্ড / ইভেন্টগুলির সাথে অনুরোধ-প্রতিক্রিয়া করছি এবং আমাদের এই বিশেষ ডোমেনে (অংশে একটি ওয়ার্কফ্লো মডেলিং) নামকরণ করা হয়েছে InvalidStateTransitionError। রাজ্য গ্রাফের এক প্রান্তে অগ্রসর হওয়ার চেষ্টা করা বেশিরভাগ আদেশের ফলে এই ইভেন্টটি ঘটতে পারে। আমাদের ক্ষেত্রে, আমরা একটি শেষ পর্যন্ত সামঞ্জস্যপূর্ণ দৃষ্টান্তের পরে জিইউআই মডেলিং করছি এবং তাই আমরা ব্যবহারকারীকে একটি 'কমান্ড স্বীকৃত' পৃষ্ঠাতে প্রেরণ করি এবং এরপরে ইভেন্টের সাবস্ক্রিপশনের মাধ্যমে ওয়েব সার্ভারের দৃষ্টিভঙ্গিগুলিকে প্যাসিভ আপডেট করা যাক। এটি উল্লেখ করা উচিত যে আমরা সামগ্রিক শিকড়গুলিতে ইভেন্ট-স্যোসারিংও করছি (এবং পাশাপাশি সাগাসের জন্যও করব)।

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

আমি নরওয়ের বিকাশকারী সম্মেলন ২০১১ থেকে ডিডিডি-তে দুটি উপস্থাপনা এবং আরেদেভ ২০১০- তে গ্রেগের উপস্থাপনাটি পুনরায় বিবেচনা করতে পারি

চিয়ার্স, হেনকে


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

আপনি যে বৈধতাটির বর্ণনা দিচ্ছেন বলে মনে হচ্ছে তা এটি 2-ফেজের বৈধতা প্রোটোকল দিয়ে মডেলিংয়ের জন্য আমার কাছে ওয়ারেন্টিংয়ের মতো বলে মনে হচ্ছে না - নিশ্চিতভাবে, আপনি ইউনিট পরীক্ষায় পরীক্ষা নেওয়ার মতো পদ্ধতির অনুরোধের পরামিতিগুলিকে বৈধতা দিন; অ্যাপ্লিকেশন স্তর / জিইউআই ডোমেনে আদেশ না পাঠিয়ে আপনি যে নিয়মগুলি বর্ণনা করছেন তা সহজেই যাচাই করতে পারে। Imo,। ক্লায়েন্ট দূষিত না হলে কমান্ডটি কাজ করা উচিত। যদি ক্লায়েন্টটি দূষিত হয় তবে কমান্ডটি ব্যর্থ হয় এবং আপনার পঠন মডেলটি কোনও অনুরূপ ইভেন্ট পায় না এবং আপনি সমস্যাযুক্ত কমান্ড ত্রুটি সারিতে পরিদর্শন করতে পারেন।
হেনরিক

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

1
হ্যাঁ, আপনি আদেশটি কার্যকর করেছেন তবে নিশ্চিত হয়ে নিন যে অ্যাপ্লিকেশন স্তর এবং ডোমেন উভয় ক্ষেত্রেই আদেশটি অবৈধ নয়।
হেনরিক

0

সম্পাদনা: ওয়েব্যাকম্যাচিন লিঙ্ক: http://devlicio.us/blogs/billy_mccafferty/archive/2009/02/17/a-response-to-uthorization-in-a-ddd-world.aspx

কোন প্যাট উত্তর নেই।

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

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

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