ব্যাকএন্ড সম্পূর্ণরূপে ডিকুয়াল করা এবং ওয়েব অ্যাপ্লিকেশনগুলি ফ্রন্টএন্ড করা এবং তাদের (JSON) REST এপিআইয়ের সাথে যোগাযোগের অনুমতি দেওয়ার কি সাধারণ নকশা?


21

আমি নতুন ব্যবসায় ওয়েব অ্যাপ্লিকেশন তৈরি করছি এবং আমি এটি অর্জন করতে চাই:

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

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

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

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

আমার প্রযুক্তির পছন্দটি বর্তমানে জাভা / স্প্রিং ব্যাকএন্ড এবং অ্যাঙ্গুলার 2 / ওয়েব উপাদান / পলিমার হ'ল সামনের অংশের জন্য - যদি আমাকে এটি বলার অনুমতি দেওয়া হয়। তবে এটি এই প্রশ্নের জন্য অপ্রাসঙ্গিক, কারণ এই প্রশ্নটি সাধারণ নকশা সম্পর্কে এবং কংক্রিট প্রযুক্তির পছন্দ সম্পর্কে নয়?


8
(1)। হ্যাঁ। সেই পথে যেতে এখন একদিন স্বাভাবিক।
লাইভ

5
(2)। So - I must be cautious when starting to use technologies in manner which is not widely used.হ্যাঁ, আপনি যদি রেশমকে বাজানোর জন্য হাতুড়ি ব্যবহার করার পরিকল্পনা করছেন তবে আপনাকে অবশ্যই সতর্ক হতে হবে। সম্ভবত এটি সঠিক সরঞ্জাম নয়।
লাইভ

3
সচেতন থাকুন যে এইরকম কঠোর উপায়ে decoupling উল্লেখযোগ্য অগ্রগামী উন্নয়ন ব্যয় তৈরি করে। এর বাইরে আপনার কিছু কংক্রিট মান পাওয়া দরকার।
usr ডিরেক্টরির

2
এছাড়াও মনে রাখবেন যে আপনি কখনই ব্রাউজারে আপনার ডোমেন সরাসরি প্রকাশ করতে পারবেন না। এটি সুরক্ষা সংক্রান্ত সমস্যা তৈরি করে এবং ডেটা প্রদর্শনের জন্য উপযুক্তভাবে বিন্যাস করা হবে না। জাভাস্ক্রিপ্ট কল করার জন্য আপনাকে একটি বিশেষ উদ্দেশ্য (আরএসটি) ইন্টারফেস তৈরি করতে হবে। এবং এটি মিলিত হয়।
usr ডিরেক্টরির

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

উত্তর:


14

ব্যাকএন্ড সম্পূর্ণরূপে ডিকুয়াল করা এবং ওয়েব অ্যাপ্লিকেশনগুলি ফ্রন্টএন্ড করা এবং তাদের (JSON) REST এপিআইয়ের সাথে যোগাযোগের অনুমতি দেওয়ার কি সাধারণ নকশা?

হ্যাঁ এটা স্বাভাবিক। তবে কেবলমাত্র যদি আপনার সেই ধরণের বিচ্ছেদ প্রয়োজন হয় এবং আপনি এই সামগ্রিক প্রয়োগের জন্য এই সেটআপটি চাপ দিচ্ছেন না it's

এর সাথে যুক্ত কয়েকটি ইস্যু নিয়ে একটি এসপিএ আসে। এখানে এখন আমার মনে যে পপ এসেছে কেবলমাত্র কয়েকটি এখানে:

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

অবশ্যই, এসপিএ সুবিধাও রয়েছে:

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

সুতরাং জিনিসটি হ'ল উভয় পদ্ধতির সুবিধা এবং অসুবিধাগুলি রয়েছে (এসপিএ বনাম সার্ভার পৃষ্ঠাগুলি)। উভয় বিকল্প নিয়ে গবেষণা করার জন্য কিছুটা সময় ব্যয় করুন এবং তারপরে আপনার অবস্থার উপর ভিত্তি করে চয়ন করুন।


11
"সমস্ত কোড ক্লায়েন্টে থাকলে সুরক্ষা করা আরও কঠিন;" হুম, বিপরীতে একটি বড় সুবিধা নয়, সুরক্ষা করা সহজ, কারণ এটি একটি সুরক্ষিত একটি খুব পরিষ্কার স্তর যা আপনাকে যৌক্তিক এবং সহজে বোঝার উপায়ে ডিজাইন করা হয়েছে protect
ডেভিড মুলদার

3
@ ডেভিড মাল্ডার: স্পষ্ট স্তর সহ সুরক্ষাটি করা মোটেই কঠিন, তবে সঠিকভাবে করা সহজ। সুস্পষ্ট বিভাজন ছাড়াই আপনি এমন কিছু চাবুক
স্টিভ জেসপ

1

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


0

সাবধানতা সহ সাধারণ।

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

সুতরাং একটি 'সাধারণ' আর্কিটেকচার হতে পারে:

database
business logic services (dll)
api exposing business logic
server side website exposing viewmodels and functionality via json rest endpoints
client side javascript implementing ui

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

আপনি ব্যবসার যুক্তিটিকে তার নিজের লাইব্রেরিতে পৃথক করে দেওয়ার কারণে এটি এখনও ইউআই যুক্তি থেকে ডিকপলড হয়ে গেছে এবং আপনি পরে সর্বদা একটি পরিষেবা স্তর যুক্ত করতে পারেন।

একইভাবে, এপিআই পরিষেবাটি সার্ভার সাইড কোড দ্বারা কল করার কারণে, আপনি সীমাবদ্ধ নয় HTTP যোগাযোগ। (যদিও এটি এখন বেশ সার্বজনীন)

তদ্ব্যতীত, জাভাস্ক্রিপ্ট একই হোস্টকে কল করে যা এটি প্রদান করে তার অর্থ আপনাকে কর্স দিয়ে প্রায় বিড়বিড় করতে হবে না

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