ব্যবসায়ের যুক্তি কি সত্যই সার্ভারের সাথে সম্পর্কিত?


10

ওয়েব অ্যাপ্লিকেশনটির জন্য একটি সাধারণ স্ট্যাক হ'ল ডেটাবেস, সার্ভার-সাইড কোড সহ একটি সার্ভার এবং এইচটিএমএল / সিএসএস / জাভাস্ক্রিপ্ট সহ একটি ব্রাউজারযুক্ত ব্যবহারকারী।

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

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

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

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

এটি এমনকি সার্ভার এবং ডেটাবেসগুলি একত্রিত করার জন্য বা এসএআর ফাংশনের মতো ইআরপি সমাধানগুলি সার্ভার হিসাবে তৈরি করে দেবে কি তা বুঝবে?

উত্তর:


14

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

এমন আসল ওয়ার্ল্ড অ্যাপ্লিকেশন রয়েছে যেখানে ওয়েব সার্ভার ওয়েব সার্ভিস বা জেএসএন এর মাধ্যমে অ্যাপ্লিকেশন সার্ভারের এপিআই প্রকাশ করা ব্যতীত কিছুই করে না।

ওয়েব ২.০ এবং এজেএক্সের আগেও এটিপি পৃষ্ঠাগুলির সাথে আপনার ব্যবসায়িক যুক্তিকে মিশ্রিত করার পক্ষে সত্যিই সেরা অনুশীলন হিসাবে বিবেচনা করা হয়নি। এটি একটি স্বতন্ত্র ব্যবসায়ের যুক্তিযুক্ত হওয়া এবং উপস্থাপনা যুক্তির সার্ভার অংশটি এএসপি, জেএসপি বা যেকোনো কিছুতে থাকা ভাল বলে বিবেচিত হয়েছিল। সুতরাং ওয়েব 2.0 থেকে আসল পরিবর্তনটি হ'ল উপস্থাপনা স্তরটি পুরোপুরি জাভাস্ক্রিপ্টে থাকতে পারে। আমি ব্যক্তিগতভাবে এটি পছন্দ করি।


ঠিক আছে, হ্যাঁ, আমি সম্মত হই যে ব্যবসায়ের যুক্তি কোনও এএসপিতে থাকা উচিত নয়। এটি এমভিসির পয়েন্ট।
জো 1

এই উত্তরটি প্রায় দুই বছর আগে থেকে এসেছে এবং এখন স্প্রাউটকোরের মতো জিনিসগুলি সমস্ত ক্রোধ all স্প্রাউটকোরের ওয়েবসাইটে, তারা স্পষ্টতই লক্ষ্যটি জানিয়েছে যে ব্রাউজারে ব্যবসায়ের যুক্তি সরাতে হবে (দেখুন: স্প্রিটকোরি / আউটআউট )। তাহলে ... ওয়েবের অবস্থা কি এখন বদলে গেছে? ক্লায়েন্টের উপর ব্যবসায়ের যুক্তি (বিশেষত ব্রাউজারে জেএস এর মাধ্যমে) ঠিক আছে বা এমনকি আরও ভাল?
জোকুল

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

@ পিএসআর মঞ্জুরিপ্রাপ্ত - তবে আপনি কেবল ক্লায়েন্টে ব্যবসায়িক যুক্তি ব্যবহার করে সম্পূর্ণরূপে ব্রাশ করে দিয়েছিলেন বলে মনে হচ্ছে যখন বাস্তবে কমপক্ষে কয়েকটি জনপ্রিয় প্রযুক্তি আজ সেই দিকটিতে স্বতন্ত্রভাবে এগিয়ে চলেছে।
জোকুল

6

জাভাস্ক্রিপ্ট প্রায়শই একটি রেস্ট্রুল সার্ভিস প্রয়োগ করে যার অর্থ এটি ডেটাবেস কোয়েরি নির্দিষ্ট করে।

এটি এখানেই আপনার ভুল হয়েছে। REST CRUD নয়

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

সাধারণ উদাহরণ: একটি টুইটার-মতো অ্যাপ্লিকেশন কোনও প্রদত্ত ধারকটিতে পোস্টের বার্তা হিসাবে টুইটগুলি গ্রহণ করে। সার্ভারটি তারপরে প্রসঙ্গটি ("আপনি কে?", "এটি কোন চ্যানেল?") এবং সামগ্রী ("কোনও হ্যাশট্যাগ?", পাঠ্য সূচী ইত্যাদি) বিশ্লেষণ করে এবং এগুলি সমস্ত কিছুর কাতারে সংরক্ষণ করে। সম্ভবত আপনার সমস্ত অনুগামীদের সরাসরি রেফারেন্স যুক্ত করুন।

কেবলমাত্র ধারকটিতে সংস্থান যুক্ত করার বাইরে এটি অনেক কাজ, এটি আপনার ব্যবসায়ের যুক্তি দ্বারা সংজ্ঞায়িত। এবং এটি সার্ভারে অন্তর্ভুক্ত।


2

এই পদ্ধতির সাথে আমার উদ্বেগগুলি আপনার নকশার ভুল বোঝাবুঝির কারণে হতে পারে, সুতরাং দয়া করে আমাকে নির্দ্বিধায় নষ্ট করুন।

তবে, পণ্যের স্কেলিবিলিটি, রক্ষণাবেক্ষণযোগ্যতা এবং সুরক্ষা সম্পর্কে ভাবেন।

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

ওয়েব ব্রাউজারগুলিতে চলমান জাভাস্ক্রিপ্টে ব্যবসায়ের যুক্তি বজায় রাখার চিন্তাভাবনা, যেখানে বিভিন্ন ব্রাউজারগুলি বিভিন্ন জাভাস্ক্রিপ্ট, ব্রাউজারের একাধিক সংস্করণ ইত্যাদির পুনঃস্থাপন করবে ... কেন এই সমস্যাটিকে ইতিমধ্যে যত জটিল করে তুলেছে?

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


ব্রাউজারের সামঞ্জস্যতা ইস্যুতে ঘুষ দেওয়ার জন্য +1। এছাড়াও, জাভাস্ক্রিপ্টে ব্যবসায়িক কোড লেখার জন্য একটি অতিরিক্ত দক্ষতার প্রয়োজন হয় এবং আপনাকে আপনার ব্যবসায়িক ক্লাসে পদ্ধতি ব্যবহার করতে দেয় না।
NoChance

2

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

সংক্ষিপ্ত উত্তরটি হ'ল এটি বেশিরভাগ ঝুঁকি ব্যবস্থাপনার এবং কর্মক্ষমতা পর্যবেক্ষণ এবং উন্নতির বিষয়ে।

বিস্তারিত:

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

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

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

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

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

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

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


অনেক ভাল পয়েন্ট উত্থাপন জন্য +1। আপনি যে বিলিং সিস্টেমটিকে উদাহরণ হিসাবে ব্যবহার করেছেন তার মধ্যে সর্বাধিক বিজোড় নকশা আমি শুনেছি।
NoChance

এটির মধ্যে আমি সবচেয়ে অদ্ভুত নামটি শুনেছি, যদিও আমি এখনও এর প্রাসঙ্গিক সূত্রগুলি দেখতে পাচ্ছি। এটিকে HURLnet ISP অ্যাডমিন বলা হত এবং এটি বজায় রাখতে বেশ সমালোচক ছিল। আমাদের একটি সম্পূর্ণ উত্স কোড লাইসেন্স ছিল, এবং তারা এটির সমর্থন বন্ধ করার পরে আমি এটির ব্যাপক ব্যবহার করেছিলাম।
স্প্লিন্টরলেসিটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.