এটি কি "অ্যান্টি-প্যাটার্ন" এবং আমার এটি ব্যবহার বন্ধ করা উচিত নাকি এই চতুর নকশাটি?


10

একটি আরএসটি পরিষেবা তৈরি করার সময় আমি মূলত নিম্নলিখিতটি করতে তাকাতে থাকি:

  1. এইচটিএমএল অনুরোধ করা হয়েছে
  2. পরিষেবা পছন্দসই ওয়েব পৃষ্ঠাটি দেয় তবে অনুরোধকৃত "উত্স" ছাড়াই, যেমন। উপাত্ত
  3. ওয়েব পৃষ্ঠায় জাভাস্ক্রিপ্ট রয়েছে যা একই সার্ভিসে AJAX অনুরোধ জারি করে (বিভিন্ন সামগ্রী-ধরণের)
  4. পরিষেবা তারপরে প্রকৃত ডেটা (জেএসএন) প্রদান করে এবং পৃষ্ঠাটি এটি প্রদর্শন করে

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

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

এখন আমি এটি ব্যবহার করার আগে, এটি কি ভাল ধারণা বা আমার কেবল এটি করা বন্ধ করা উচিত?


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

3
আপনি যা মনে করেন খারাপ তা আপনি কি বিশেষভাবে ব্যাখ্যা করতে পারেন? প্রসঙ্গ: এটি কোনও 10 এমও এলওসি জন্তু নয় যা ব্যবসায়িক সমালোচনা। এটি আরও বেশি <5000 এলওসি এবং এটি কয়েক দিনের জন্য কাজ না করে তাতে কিছু আসে যায় না। হ্যাঁ, এটি আমার ক্রপিং স্টাফগুলি করা উচিত হয়নি, সুতরাং আপনি যা মনে করেন তা এতই খারাপ।
সূচনা_

@begginer_ প্রতিটি সফ্টওয়্যারই ছোট হয়। আপনি কি rseembles একটি Rube গোল্ডবার্গ মেশিন বর্ণনা: হাতুড়ি হিট মানুষ, মানুষ বিস্কুট, তোতাপাখি দখল বিস্কুট ড্রপ এবং দানি, ইত্যাদি টিল্ট
Tulains কর্ডোভা

এটি করার কারণটি প্রায়শই পারফরম্যান্সের উন্নতি হয়, যেখানে বিভিন্ন সার্ভারগুলি হতে পারে এমন একাধিক একযোগে অনুরোধের মাধ্যমে ডেটা আনার কাজটি করা যেতে পারে। আপনার ক্ষেত্রে এটি প্রযোজ্য বলে মনে হয় না।
ব্যবহারকারী16764

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

উত্তর:


17

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

কৌশলটি কাজ করে তবে আপনাকে এর সীমাবদ্ধতা সম্পর্কে সচেতন করতে হবে:

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

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

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

এবং না, আমি পিএইচপি সম্পর্কে ভাবছি না; এটি সেখানে সর্বনিম্ন সক্ষম টেম্পলেট সিস্টেম (যদিও এর উপরে আরও ভাল কিছু নির্মিত হয়েছে)। আমি জেনশি বা এক্সএসএলটি বা আরও উন্নত কিছু যা ওয়েব উইজেট সরবরাহ করে তা ভাবছি ।


আমি জাভাস্ক্রিপ্টে ফ্যাট-ক্লায়েন্ট লিখি, যা ঠিক এটি করে। তবে এটি সম্ভবত সাধারণ ওয়েবসাইটগুলির জন্য একটি খারাপ ধারণা।
কে ..

কেন বিশ্রাম নেই?
ড্যাজলেটগুলি 10'13

1
যদি আপনি "ডেটা" যা অ্যাপ্লিকেশন (এইচটিএমএল, জেএস, সিএসএস, ইত্যাদি) গঠন করে এবং "ডেটা" যা অ্যাপ্লিকেশনটি প্রদর্শন করে (জেএসএন) জেএসওএন অংশটি রেস্ট, তবে যে অংশটি "কোড" আইএনএন 'লোড করে না তার মধ্যে পার্থক্য রাখে টি। আপনি যদি পুরো জিনিসটি আরও বিমূর্ত দেখেন তবে দুটিই।
কে ..

2

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


2
স্টাটিক বিষয়বস্তুর জন্য অ্যাপাচি হ'ল একটি ওভারকিল। অনেক দ্রুত সার্ভার রয়েছে। সর্বাধিক জনপ্রিয় মনে হচ্ছে এনগিনেক্স
জানু হুডেক

5
এটি একটি উদাহরণ ছিল, আরও কিছু না।
স্টিভেন শ্লানস্কার

2

এটি একটি ভাল অনুশীলন। এবং এটি সর্বক্ষণ শেষ হয়েছে, @ জনহুদেক উল্লেখ করেছেন যেহেতু এটি একটি REST পরিষেবা বলা ভুল। তবে অনেকগুলি ওয়েবসাইট ঠিক আপনার কারণগুলি উল্লেখ করার জন্য এটি করে।


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

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

1

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

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

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

যদি আরও বৈশিষ্ট্য যুক্ত করার চিন্তা ভাবনা আপনাকে ভয় দেখাতে শুরু করে, বা আপনি এটি দেখতে পাচ্ছেন যে ডিবাগিং একটি দুঃস্বপ্ন, তবে আপনি পরীক্ষা চালিয়ে যাওয়া এবং শেখার সময় আপনি উত্পাদনের অন্যান্য পদ্ধতিগুলি বিবেচনা করতে চাইতে পারেন।

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


"এলোমেলো জেএস" বলতে কী বোঝ? আমার ক্ষেত্রে আপনি উপরে যা বর্ণনা করছেন তা আমার কাছে অনেক জটিল (কয়েকটি ইনপুট ক্ষেত্র এবং একটি সারণী (স্লিকগ্রিড) বা জ্যাকুইরি ইউআই ট্যাব) is হ্যাঁ, ওটাই. প্রতি পৃষ্ঠায় প্রায় 200 এলওসি।
শিক্ষানবিস_

0

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


0

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

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

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


thx কখনই AngularJS এর ​​কথা শুনেনি। তবে আমি মনে করি আমার বর্তমান প্রয়োজনগুলি এটি অনেক বেশি it
শিক্ষানবিস_

0

তোমার কি করা ভাল লাগছে! তবে আপনার জসন প্রতিক্রিয়াগুলিতে যদি কোনও এইচটিএমএল থাকে তবে আপনার নিজের সময় নষ্ট করা।

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

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