ডিটিও (ডেটা ট্রান্সফার অবজেক্টস) ব্যবহার করার কী আছে?


132

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


10
তবে পজো ডিটিও হতে পারে এবং ডিওটিও পিজো দিয়ে প্রয়োগ করা যেতে পারে। আপনি আপেল এবং কমলা তুলনা করুন।
ইউফোরিক

3
কেন ভাল ধারণা পুরানো হতে হবে? লিস্প দেখুন। রসিকতা বাদে, আমি ইউফোরিকের সাথে একমত: আমি সাধারণত POJO ব্যবহার করে ডিটিও ব্যবহার করি। আমি এখনও ডিটিও'র খুব সাধারণ (কেআইএসএস) এবং দরকারী ধারণাটি পাই।
জর্জিও

কোনও বক্তব্য নেই, এটি একটি অ্যান্টি-প্যাটার্ন, দেখুন: ডেটা ট্রান্সফার অবজেক্ট
লজ্জাজনক

উত্তর:


115

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

ডিটিও একটি মৌলিক ধারণা, পুরানো নয়।


9
আপনি এগুলিকে বিভিন্ন নামে পেতে পারেন তবে যেহেতু সবাই মনে হয় আজকাল চাকাটি পুনর্বিবেচনা করছে
লিঙ্কেরো

3
"মান বস্তু" পছন্দ করুন।
theD

2
@ লিঙ্কেরো: সত্য: আমি মনে করি যে প্রচুর লোকেরা নিজেরাই পুনরায় উদ্ভাবনের পরিবর্তে ইতিমধ্যে উদ্ভাবিত স্টাফগুলি সম্পর্কে বেশি বেশি সময় ব্যয় করা উচিত। পুনরায় উদ্ভাবিত জিনিসগুলি সর্বদা কম পরিপক্ক হবে।
জর্জিও

10
@ জর্জিও এখানে এখনও অনেক ধারণা রয়েছে যা এমন ধারণা নিয়ে চলছে যা এটিকে কখনই মাটি থেকে নামানো উচিত হয়নি। আমি আরও ডেভস তাদের সম্পর্কে পড়া প্রতিটি ধারণাকে প্রশ্নবিদ্ধ করতে চাই।
এরিক রেপেন

59

ডিটিও একটি ধারণা হিসাবে (যে বিষয়গুলির উদ্দেশ্য সার্ভারের দ্বারা ক্লায়েন্টকে ফিরিয়ে আনার জন্য ডেটা সংগ্রহ করা) তা অবশ্যই পুরানো নয়।

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

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

সবচেয়ে উল্লেখযোগ্যভাবে, EJB 3 স্ট্যান্ডার্ডের পূর্বে J2EE তে সত্তা বিনগুলি POJOs ছিল না এবং এর পরিবর্তে অ্যাপ সার্ভার দ্বারা নির্মিত প্রক্সি অবজেক্ট ছিল - তাদের ক্লায়েন্টের কাছে প্রেরণ করা সহজ ছিল না, তাই আলাদা ডিটিও স্তর হেইং করার বিষয়ে আপনার কোনও পছন্দ ছিল না so - এটা বাধ্যতামূলক ছিল।


2
কোনও ইউআই দেবকে আরও সাধারণবাদী ভূমিকার জন্য বাধ্য করা হিসাবে আমি অবশ্যই আমাদের কোডবেজ বোকা ম্যাপার ম্যাপ ঘটনাটি খুঁজে পেয়েছি। ডিটিও কেবল নিজের মানচিত্র তৈরি করতে পারে না কেন?
এরিক রেপেন

1
@ এরিকরেপেন মূল উপকারটি হ'ল আপনার ডোমেন মডেলগুলি এবং ডিটিও'র ডিউপলিং। যদি আপনার ডিটিও নিজেই মানচিত্র করে তবে এটির জন্য আপনার ডোমেন মডেলগুলির একটি রেফারেন্স প্রয়োজন।
আলেকজান্ডার ডার্ক

17

যদিও ডিটিও কোনও পুরানো প্যাটার্ন নয়, এটি প্রায়শই অকারণে প্রয়োগ করা হয়, এটি এটি পুরানো প্রদর্শিত হতে পারে।

জাভা এন্টারপ্রাইজ সম্প্রদায়ের সর্বাধিক অপব্যবহৃত প্যাটার্ন হ'ল ডিটিও। ডিটিও পরিষ্কারভাবে একটি বিতরণ সমস্যার সমাধান হিসাবে সংজ্ঞায়িত করা হয়েছিল। ডিটিও বলতে বোঝায় একটি মোটা দানাযুক্ত ডেটা ধারক যা প্রসেসের (স্তরের) মধ্যে দক্ষতার সাথে ডেটা পরিবহন করে। ~ অ্যাডাম বিয়েন

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

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

আইএএমডিউডের লিঙ্কটি অব ক্যাটালগ অফ প্যাটার্নস অফ এন্টারপ্রাইজ অ্যাপ্লিকেশন আর্কিটেকচারের সাথে ডিটিওগুলির সংক্ষিপ্ত ব্যাখ্যা সরবরাহ করা হয় এবং এখানে আরও উল্লেখ রয়েছে যা আমি আলোকিত করে দেখলাম:


3
বাক্যটি রয়েছে: "..., তবে যদি আপনার ম্যানেজডবিয়ানস এবং সত্ত্বাগুলি একই জেভিএমের মধ্যে কাজ করে থাকে তবে ডিটিও প্যাটার্নটি ব্যবহার করার সুবিধা নেই" । বাহিরে সংস্থাগুলিতে অনেকগুলি মাঝারি আকারের অ্যাপ রয়েছে যা নির্বিঘ্নে ডিটিও প্যাটার্নটি কোনও লাভ ছাড়াই বাস্তবায়ন করে। এটি কেবল একটি অকেজো "কপি স্তর" যুক্ত করে। এই সিস্টেমগুলি তৈরি করা লোকেরা লেনদেনটি শেষ হওয়ার পরে জাভা EE 5+ সত্তা পরিচালককে সত্তাগুলি আলাদা করে রাখে এবং প্রকৃত ডিটিও করে তোলে। সুতরাং, একক-জেভিএম ওয়েব অ্যাপসের জন্য, ধরণের ধরণটি পুরানো । এটি J2EE ব্যাকএন্ড বিকাশকারীদের অবশেষ বলে মনে হচ্ছে ...
কাওু

তবে একটি "জেএসএফ পরিচালিতবিয়ান" এবং "জেপিএ সত্তা" কী? যদি সেগুলি পুরানো না হয়ে থাকে তবে আপনার কাঠামো এবং ভাষা অজ্ঞায়নের পদগুলি ব্যবহার করে তাদের ব্যাখ্যা করতে সক্ষম হওয়া উচিত।
ইউ আভালোস

8

একেবারে না! আপনি সম্প্রতি যে ব্যবসায়িক অবজেক্টটি ব্যবহার করছেন (সম্ভবত আপনার ওআরএম ম্যাপারের সাথে আবদ্ধ) তার চেয়ে ডিটিও ব্যবহারের বিষয়ে আরও শিখেছি মাত্র ।

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


1

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

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