ফ্রন্ট-এন্ডে গণনা করা কখন উপযুক্ত?


21

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

সংক্ষিপ্ত ব্যাখ্যা: আমরা ফ্রন্ট-এন্ডের জন্য জাভা (জেডকে, স্প্রিং) এবং ব্যাক-এন্ডের জন্য প্রগতি 4 জিএল ব্যবহার করছি। ডাটাবেস থেকে কিছু হার্ড গণিত এবং ডেটা জড়িত গণনাগুলি ব্যাক-এন্ডে রাখা হয়, তাই আমি তাদের সম্পর্কে কথা বলছি না। আমি সেই পরিস্থিতির কথা বলছি যেখানে ব্যবহারকারী X মান প্রবেশ করে, তারপরে এটি মান Y এর সাথে যুক্ত হবে (স্ক্রিনে দেখানো হয়েছে) এবং ফলাফলটি জেড জেডে প্রদর্শিত হবে P খাঁটি এবং সহজ jQuery-operationsশ অপারেশন, মানে।

সুতরাং এখানে সেরা অনুশীলন কি হবে:

1) জাভাস্ক্রিপ্টের সাথে মানগুলি যুক্ত করুন যা ব্যাক-এন্ড এবং পিছনে যাওয়া থেকে বাঁচায় এবং তারপরে "সেভ করুন" ব্যাক-এন্ডে তাদের বৈধতা দিন?

2) সমস্ত ব্যবসায়ের যুক্তি একই জায়গায় রাখুন - সুতরাং মানগুলি ব্যাক-এন্ডে আনুন এবং সেখানে গণনাগুলি করবেন?

3) ফ্রন্ট-এন্ডে গণনাগুলি করুন; তারপরে ব্যাক-এন্ডে ডেটা প্রেরণ করুন, সেগুলিকে সেখানে বৈধতা দিন, আবার গণনাগুলি করুন এবং ফলাফলগুলি বৈধ এবং সমান হলেই তা ব্যবহারকারীর কাছে প্রদর্শন করুন?

৪) আর কিছু?

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

ব্যাক-এন্ডে সবকিছুকে পুনরায় গণনা করে যে ডেটা প্রেরণ করা হবে তা কোনও সমস্যা হবে না (ছোট এক্সএমএল আকার; সার্ভার এবং ব্যান্ডউইথ ব্যবহারকারীদের দ্বারা পরিচালিত ক্রিয়াকলাপের বর্ধিত পরিমাণকে সহ্য করবে)।


1
থাম্বের বিধি: যখন এটি একটি দৃ strongly়-টাইপিত ভাষা ব্যবহার করে।
ডেন

1
সমস্ত যুক্তি যদি শেষ প্রান্তে থাকে তবে স্বয়ংক্রিয় ইউনিট পরীক্ষা করা আরও সহজ হবে। যদি 90% ব্যাক এন্ড হতে হয় এবং 10% ব্যাক-এন্ডে থাকতে পারে তবে আমি পিছনের প্রান্তে 100% রেখে দেব।
ইয়ান

3
@ আইয়ান: আপনি যদি আপনার কোডটি ভালভাবে গঠন করেন তবে আপনি ফ্রন্ট এন্ড কোডগুলির জন্য স্বয়ংক্রিয় ইউনিট পরীক্ষা করতে পারেন।
মিথ্যা রায়ান

1
থাম্বের বিধি: যখনই আপনি এটির সাথে দূরে যেতে পারেন।
স্বর্ণলোকস 4'14

3
থাম্বের বিধি: ধরে নিন যে ব্যবহারকারী আপনার জাভাস্ক্রিপ্ট হ্যাক করছে এবং তাদের নিজস্ব গণনা করছে। সুরক্ষা দৃষ্টিকোণ থেকে গণনাগুলি ব্যাক-এন্ডে করতে হবে। আপনি উভয়ই করতে পারেন: জেএস দ্রুত প্রতিক্রিয়া সরবরাহ করতে পারে, তবে প্রকৃত গণনাগুলি সার্ভারে সম্পন্ন হয় the

উত্তর:


36

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

  • দক্ষতা আপনাকে পরামর্শ দিবে যে আপনি ফ্রন্ট-এন্ডে গণনা সম্পাদন করুন - উভয় কারণেই ব্যবহারকারীর কম্পিউটারটি আরও বেশি শক্তি ব্যবহার করে এবং আপনার সার্ভারটি কম ব্যবহার করে এবং কারণ ব্যবহারকারী দ্রুত প্রতিক্রিয়া দেখেন যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

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

  • প্রোগ্রামিং দক্ষতা এবং রক্ষণাবেক্ষণের পরামর্শ দেয় যে নষ্ট চেষ্টার কারণে আপনার একই গণনা দু'বার করা উচিত নয়।

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


4
আমি এটি যুক্ত করতে চাই যা Programming efficiency and maintainability suggests that you shouldn't do the same computation twice because of the wasted effort.সঠিক নয় কারণ [1] সম্মুখ-প্রান্তে বৈধকরণ প্রয়োজনে সংশোধন করার জন্য ব্যবহারকারীকে দ্রুত প্রতিক্রিয়া সরবরাহ করতে পারে। [২] ব্যাক-এন্ডে বৈধকরণটি তেমন প্রতিক্রিয়াশীল নয় এবং এটি ব্যবহারকারীকে সংশোধন করার সর্বোত্তম সুযোগ দেয় না। ব্যবহারকারীর জন্য অপেক্ষা করতে হবে এবং আরও কাজ আবার করতে হবে। সুতরাং আমি মনে করি দুটি বৈধতা একেবারে এক নয়।
অবগত

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

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

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

13

ব্যাকএন্ডে গণনা করার শক্ত কারণ রয়েছে

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

আমার সুপারিশ

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

2
ডাটাবেস কার্যকর করার বিধি প্রয়োগ করার সমস্যাটি সামনের প্রান্তে লঙ্ঘনের খবর দিচ্ছে! যদি সামনের প্রান্তটি ব্যবসায়ের নিয়ম কার্যকর করে তবে এটি ব্যবহারকারীকে দ্রুত অর্থবহ ত্রুটি বার্তাগুলির প্রতিক্রিয়া জানাতে পারে। যদি ব্যাক-এন্ডটি এটি করে তবে সামনে এবং পিছনের মাঝখানে প্রচুর আঁতুড়ে দুটি উপায় ট্র্যাফিক থাকায় একবারে ত্রুটিগুলি প্রতিবেদন করা হয়।
জেমস অ্যান্ডারসন

@ জেমসএন্ডারসন আর "সামনের দিকে" নেই " একই ডাটাবেসের বেশ কয়েকটি ফ্রন্ট-এন্ড বা একাধিক ডাটাবেসগুলি বেশ কয়েকটি ফ্রন্ট-এন্ডে থাকতে পারে। এছাড়াও, ব্যাক-এন্ড কার্যকর ব্যবসায়ের নিয়ম থাকা মানে এই নয় যে ফ্রন্ট-এন্ড এটি করা নিষিদ্ধ। আমি দ্বিতীয় বুলেট পয়েন্ট যে হাইলাইট।
তুলিনাস কর্ডোভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.