এমভিসি এবং RESTful API পরিষেবা


12

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

যদি আমরা একটি বিশুদ্ধ RESTful API ওয়েব পরিষেবা সম্পর্কে কথা বলি তবে কী হবে? তারপরে প্রবাহটি ' ক্লায়েন্টকে সার্ভারের কাছে REST কীওয়ার্ড অনুরোধ প্রেরণ করে -> সার্ভারটি অনুরোধকৃত URL- এর সাথে কন্ট্রোলার অ্যাকশনের সাথে মেলে - যা পরে তথ্য সংগ্রহ / প্রক্রিয়াকরণের জন্য মডেল (গুলি) কে কল করে, ফলাফল প্রাপ্ত করে - এবং ফিরে আসে ফলাফলটি JSON এর ক্লায়েন্টের কাছে ফিরে আসে । পূর্বের মতো একই, তবে 'ভিউ' নেই ... বা বরং, উত্পন্ন জেএসওএনকে 'দর্শন' হিসাবে ভাবা যেতে পারে। এক অর্থে, আমরা কেবল এমভিসির এমসির অংশটি ব্যবহার করছি। এটি কীভাবে করা উচিত? বা এমভিসির পরিবর্তে কোনও এপিআই-কেবল পরিষেবার জন্য অন্য কোনও, আরও ভাল-উপযুক্ত প্যাটার্ন রয়েছে?

উত্তর:


21

এমভিসি হ'ল কীভাবে অবজেক্ট ওরিয়েন্টেটেড সিস্টেমগুলিতে ইউআই থাকতে পারে তার সাথে সম্পর্কিত স্মার্টটাক ওয়ার্ল্ডের একটি দৃষ্টান্ত।

প্রাথমিক ওয়েব ফ্রেমওয়ার্কগুলি সাধারণ ধারণা নিয়েছিল (বিজনেস লজিককে আলাদা করুন, লজিককে নিয়ন্ত্রণ করুন এবং যুক্তি দেখুন) এবং তারা কীভাবে ওয়েব অ্যাপ্লিকেশনটিকে কাঠামোগত করেছেন তার নীতিটি প্রয়োগ করে। এর আগে ডোমেন অবজেক্টগুলির মধ্যে generationশ্বরের এইচটিএমএল প্রজন্মের কোড, বা এইচটিএমএল টেমপ্লেটগুলির মধ্যে ব্যবসায়িক যুক্তি (খুব পিএইচপি ভাবেন) এর মধ্যে Godশ্বরকে ভয়ঙ্কর জগাখিচুড়ি করা অস্বাভাবিক কিছু ছিল না Before

জিনিসটি হ'ল যে স্মলটাক জগতের আসল এমভিসি আসলে বেশিরভাগ ওয়েব ফ্রেমওয়ার্কে এমভিসি কী তা নয়। এইচটিএমএল আউটপুট আসলে এই অর্থে কোনও "ভিউ" নয় যে স্মলট্যাক একটি ইউআই স্ক্রিন হতে পারে understood

সুতরাং আপনি এমভিসি যথাযথভাবে অনুসরণ করছেন কিনা তা নিয়ে খুব বেশি ঝাঁকুনিতে না যাওয়ার প্রথম কারণ এটি। খুব কমই কিছু। এটিকে কঠোর বিভাগ হিসাবে কম রাখুন এবং হেইয়ের আরও একটি গাইডলাইনটি যদি আমাদের এইচটিএমএল টেমপ্লেটগুলি ব্যবসায়িক যুক্তিতে পূর্ণ না থাকে তবে এটি ভাল হত না।

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

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


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

@ লাইম ... নেভিগেট করা এবং রক্ষণাবেক্ষণ করা সহজ করা মূল লক্ষ্য is সবসময় লক্ষ্য না?
অ্যান্ডি

@ ডেভিড প্যাকার অবশ্যই এটি =) আমি ঠিক একটি ধারণার সাথে লক হয়ে গিয়েছিলাম , সেই ধারণার আসল ব্যবহারটি অনুপস্থিত ।
সাইমন

1
ক্লিন আর্কিটেকচারে বব মার্টিনের উপস্থাপনাটি পরীক্ষা করে দেখুন যদি আপনি অনেকগুলি ওয়েব ফ্রেমওয়ার্ক যেমন করেন তার চেয়ে কোনও অ্যাপ্লিকেশন কাঠামোর চেয়ে আলাদা, সম্ভাব্যতর ভাল উপায় দেখতে চান।
কর্পাক মুলহাল

9

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

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


2

এমভিসি বেশ সোজা is

মার্টিন ফোলার সম্ভবত এটির সাথে একমত নন :

বিভিন্ন স্থানে এমভিসি সম্পর্কে পড়া বিভিন্ন ব্যক্তি এ থেকে আলাদা ধারণা নেন এবং এগুলিকে 'এমভিসি' হিসাবে বর্ণনা করেন।

সরানো...

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

ঠিক আছে, এটি কিছুটা জটলা

এমভিসি, তা যা-ই হোক না কেন, ব্যবহারকারী ইন্টারফেস বাস্তবায়নের জন্য ধারণাগুলি।

আরআরইএসটি হ'ল বড় আকারের অ্যাপ্লিকেশন তৈরির জন্য স্থাপত্য সীমাবদ্ধতার একটি সংগ্রহ।

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

আপনি দুজনের মধ্যে যে মিলগুলি দেখতে পাচ্ছেন তা হ'ল (আপনার চয়ন করুন) ভুলভাবে দায়ী করা, বা অতিপরিসর।

RESTafarians একটি সাধারণ বোঝার আছে HATEOAS "অ্যাপ্লিকেশন রাষ্ট্রের ইঞ্জিন হিসাবে হাইপারটেক্সট",, এবং যে এলার্ম আপনি মাধ্যমে আগাইয়া ধ্বনিত পাঠাতে হবে - কেন একটি হবে দৃশ্য একজন ইঞ্জিন হতে রাষ্ট্র ? যদি আমরা ভিত্তিটি নিয়ে প্রশ্ন করি এবং অতিরিক্ত প্রমাণ অনুসন্ধান করি তবে আমরা দুটি অদ্ভুত বিষয়ও লক্ষ্য করতে পারি।

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

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

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

অন্য কথায়, এইচটিএমএল হল রাজ্যের প্রতিনিধিত্ব, ঠিক যেমন রায় টি। ফিল্ডিংয়ের প্রতিশ্রুতি দেওয়া হয়েছিল।

আমরা যদি খাঁটি RESTful API ওয়েব পরিষেবা সম্পর্কে কথা বলি ... তবে কী হবে? পূর্বের মতো একই, তবে 'ভিউ' নেই

আরও সঠিকভাবে, আগের মতো: কোনও দর্শন নেই। জেএসএন, ঠিক এইচটিএমএলের মতো, রাষ্ট্রের প্রতিনিধিত্ব, প্রক্রিয়া সীমা অতিক্রমের জন্য উপযুক্ত।

"ডিটিও" বা "বার্তা" মনে করুন এবং আপনার সূত্রগুলি আপনাকে বিপথগামী করার সম্ভাবনা অনেক কম।


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

প্রোগ্রামের সাথে সংযোগকারী প্রোগ্রাম / রোবট সম্ভবত মডেলটিকে সরাসরি পরিচালনা করবে - কেন এটির প্রয়োজন হবে?
ভয়েসফুউনরেজন

1

এটি কীভাবে করা উচিত?

জেএসএনকে একটি দর্শন হিসাবে পাস করা, বা এটিকে দর্শন গঠনের জন্য মডেল হিসাবে ব্যবহার করা প্যাটার্নটিকে লঙ্ঘন করে না।

আমি বর্তমানে চলমান অ্যাপ্লিকেশনটিতে একই আর্কিটেকচারটি ব্যবহার করছি এবং এটি খুব ভালভাবে কাজ করছে। কিছু সুন্দর জেএস ফ্রেমওয়ার্কের সাথে একসাথে আপনি কিছু সত্যিকারের প্রতিক্রিয়াশীল ডিজাইন তৈরি করতে পারেন।

বা এমভিসির পরিবর্তে কোনও এপিআই-কেবল পরিষেবার জন্য অন্য কোনও, আরও ভাল-উপযুক্ত প্যাটার্ন রয়েছে?

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

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