ব্যবহারিক ব্লেজার সিদ্ধান্ত নির্দেশিকা
ব্লেজার: সার্ভার, ওয়েব অ্যাসেম্বলি, নাকি হাইব্রিড?
ব্লেজার উপযোগী হয় যখন আপনি জানেন কোন কাজ সার্ভারে থাকে, কোন কাজটি ব্রাউজারে চলে যায় এবং কোন ইউআরএল অবশ্যই প্রকৃত এইচটিএমএল লিঙ্ক হিসেবে উপস্থিত থাকতে হবে।
এই গাইড ব্রোশার সংস্করণটি এড়িয়ে যায়। এটি ট্রেড-অফের উপর ফোকাস করে যা সাধারণত পরবর্তীতে দলকে অবাক করে: সার্ভার মেমরি, লাইভ সংযোগ, লেটেন্সি, পেলোড সাইজ, এসইও এবং বহুভাষিক রাউটিং।
রেন্ডার-মোড পছন্দের আগে
ব্লেজার আসলে কি Blazor
ব্লেজার হল .NET ওয়েব অ্যাপের জন্য মাইক্রোসফটের কম্পোনেন্ট ফ্রেমওয়ার্ক। আপনি রেজার উপাদানগুলি থেকে UI তৈরি করুন, C#-এ সর্বাধিক ইন্টারঅ্যাকশন লজিক লিখুন এবং ASP.NET কোরকে সেই উপাদানগুলি সার্ভারে, WebAssembly-এ বা একটি নেটিভ অ্যাপ শেলের ভিতরে রেন্ডার করতে দিন। Blazor
এটি পুরানো ASP.NET ধারণা থেকে বেড়েছে। ওয়েব ফর্মগুলি সার্ভার নিয়ন্ত্রণের পিছনে ওয়েব লুকানোর চেষ্টা করেছে৷ MVC এবং রেজার পৃষ্ঠাগুলি অনুরোধ-প্রতিক্রিয়া HTML ক্লিনার তৈরি করেছে৷ ব্লেজার পুনঃব্যবহারযোগ্য ইন্টারেক্টিভ উপাদান যোগ করে, কিন্তু এটি সাধারণ বিষয়বস্তু পৃষ্ঠা এবং ফর্মগুলির জন্য MVC বা রেজার পৃষ্ঠাগুলিকে অপ্রচলিত করে না। Razor Pages Blazor
ওয়েব ফর্ম, এমভিসি এবং রেজার পৃষ্ঠাগুলি বিভিন্ন সমস্যার সমাধান করেছে MVC Razor Pages
ওয়েব ফর্ম উত্পাদনশীল কিন্তু ভারী এবং রাষ্ট্রীয় ছিল. MVC এবং রেজার পৃষ্ঠাগুলি ক্লিনার এইচটিএমএল এবং সহজ অনুরোধ হ্যান্ডলিং দিয়েছে৷ সেগুলি এখনও ভাল থাকে যখন একটি পৃষ্ঠা বেশিরভাগ ডেটা পড়ে, একটি ফর্ম পোস্ট করে এবং HTML প্রদান করে। Razor Pages
উপাদানগুলি UI লজিককে মার্কআপের কাছাকাছি রাখে
একটি রেজার উপাদানে মার্কআপ, পরামিতি, ঘটনা, বৈধতা, ইনজেকশন পরিষেবা এবং স্থানীয় অবস্থা থাকতে পারে। এটি ড্যাশবোর্ড, সম্পাদক, উইজার্ড, গ্রিড এবং সরঞ্জামগুলির জন্য দরকারী যেখানে পৃষ্ঠাটি সম্পূর্ণ পুনরায় লোড ছাড়াই পরিবর্তিত হয়৷
আধুনিক .NET আপনাকে রেন্ডার মোড মিশ্রিত করতে দেয়
নতুন Blazor অ্যাপগুলি ইন্টারেক্টিভ উপাদানগুলির সাথে স্ট্যাটিক সার্ভার-রেন্ডার করা HTML-কে একত্রিত করতে পারে। এটি গুরুত্বপূর্ণ কারণ একটি পৃষ্ঠায় ক্রলযোগ্য সামগ্রীর প্রয়োজন হতে পারে, অন্য অংশে একটি লাইভ উপাদান প্রয়োজন।
বিষয়বস্তু সূচি
এখানে শুরু করুন
দরকারী সংক্ষিপ্ত সংস্করণ
ব্লেজার একটি স্থাপত্য নয়। এটি বিভিন্ন রেন্ডার মোড সহ একটি উপাদান মডেল। সঠিক পছন্দ সিনট্যাক্সের উপর কম এবং স্টেট, লেটেন্সি, মেমরি এবং ক্রলযোগ্য লিঙ্কগুলি কোথায় থাকে তার উপর নির্ভর করে।
ব্লেজার সার্ভার রাষ্ট্রীয়
এটি প্রথম লোডে দ্রুত অনুভব করতে পারে, তবে সার্ভারটি লাইভ সার্কিট রাখে। ট্র্যাফিক বৃদ্ধির আগে মেমরির পরিকল্পনা করুন, আচরণ পুনরায় সংযোগ করুন এবং স্কেল-আউট করুন।
WebAssembly সামনে অর্থ প্রদান করে
এটি লাইভ সার্ভার সার্কিটগুলি সরিয়ে দেয়, তবে প্রথম দর্শন রানটাইম এবং অ্যাপ ডাউনলোড করে। ক্যাশে, ট্রিমিং এবং প্রিরেন্ডারিং ব্যাপার।
হাইব্রিড একটি পণ্য সিদ্ধান্ত
যখন অ্যাপটির সত্যিই একটি ডেস্কটপ বা মোবাইল শেল প্রয়োজন তখন হাইব্রিড ব্যবহার করুন। সর্বজনীন বিষয়বস্তুর জন্য, ওয়েব রেন্ডারিং এবং বাস্তব URL ব্যবহার করুন।
Blazor সার্ভার
ব্লেজার সার্ভার ক্লিকের মধ্যে কাজকে বাঁচিয়ে রাখে
ব্লেজার সার্ভার একটি সাধারণ রাষ্ট্রহীন অনুরোধ-প্রতিক্রিয়া পৃষ্ঠা নয়। একটি সংযুক্ত ব্রাউজার ট্যাব একটি সার্কিট পায়। ব্যবহারকারী সংযুক্ত থাকাকালীন সার্ভারটি কম্পোনেন্ট স্টেট এবং সার্কিটের জন্য স্কোপড পরিষেবাগুলি রাখে এবং প্রায়শই সংযোগ বিচ্ছিন্ন হওয়ার পরে একটি সংক্ষিপ্ত পুনঃসংযোগ উইন্ডোর জন্য।
সক্রিয় সার্কিটের সাথে মেমরি বৃদ্ধি পায়
প্রতিটি সংযুক্ত ট্যাবে একটি সার্কিট আছে। কম্পোনেন্ট স্টেট, স্কোপড সার্ভিস, ভ্যালিডেশন স্টেট এবং পেন্ডিং UI কাজ সার্কিট শেষ না হওয়া পর্যন্ত মেমরিতে থাকতে পারে। লোড পরীক্ষা অবশ্যই সক্রিয় ব্যবহারকারীদের গণনা করতে হবে, প্রতি সেকেন্ডে শুধুমাত্র অনুরোধ নয়।
লেটেন্সি UI এর অংশ হয়ে যায়
একটি বোতাম ক্লিক, ইনপুট ইভেন্ট, বা গ্রিড ইন্টারঅ্যাকশন সার্ভারে এবং পিছনে যেতে পারে। ব্যবহারকারীদের কাছাকাছি হোস্ট করুন এবং শ্রোতা অঞ্চল জুড়ে ছড়িয়ে পড়লে চ্যাটি উপাদানগুলি এড়িয়ে চলুন।
স্কেল-আউট একটি পরিকল্পনা প্রয়োজন
একাধিক অ্যাপ্লিকেশান দৃষ্টান্তের জন্য প্রায়ই স্টিকি সেশন, একটি সিগন্যালআর ব্যাকপ্লেন, অ্যাজুর সিগন্যালআর পরিষেবা, বা সতর্ক স্টেট ডিজাইনের প্রয়োজন হয়। অন্যথায় পুনরায় সংযোগ এবং লাইভ সার্কিট ভুল উদাহরণে অবতরণ করতে পারে।
ভালো ফিট: নিয়ন্ত্রিত ব্যবহারকারী
ব্লেজার সার্ভার প্রমাণীকৃত টুল, অ্যাডমিন স্ক্রিন, ড্যাশবোর্ড এবং অভ্যন্তরীণ অ্যাপের জন্য সবচেয়ে শক্তিশালী যেখানে ব্যবহারকারী, লেটেন্সি এবং হোস্টিং ক্ষমতা জানা যায়।
Blazor WebAssembly
WebAssembly খরচকে প্রথম লোডে নিয়ে যায়
Blazor WebAssembly সার্ভার সার্কিট অপসারণ করে, কিন্তু এটি খরচ অপসারণ করে না। অভিজ্ঞতা দ্রুত অনুভব করার আগে ব্রাউজারটিকে অবশ্যই .NET রানটাইম, সমাবেশ, স্থানীয়করণ সংস্থান এবং অ্যাপ সম্পদ ডাউনলোড করতে হবে। পুনরাবৃত্তি ভিজিট ভাল হতে পারে কারণ ক্যাশিং সাহায্য করে। প্রথম পরিদর্শন যত্ন প্রয়োজন.
প্রথম লোড হল ট্যাক্স
ব্রাউজারটি .NET রানটাইম, অ্যাপ সমাবেশ, সম্পদ এবং স্ট্যাটিক সম্পদ ডাউনলোড করে। ছাঁটাই সাহায্য করে। আগাম-সময়ের সংকলন CPU-ভারী কাজের উন্নতি করতে পারে তবে প্রায়শই ডাউনলোডের আকার বাড়ায়।
ক্লায়েন্টের মধ্যে গোপনীয়তা থাকতে পারে না
একটি WebAssembly অ্যাপ ব্যবহারকারীর ব্রাউজারে চলে। এটিকে যেকোনো পাবলিক ফ্রন্টএন্ডের মতো আচরণ করুন: সার্ভারে গোপনীয়তা রাখুন, APIগুলিকে সুরক্ষিত করুন এবং ক্লায়েন্ট কোড পরিদর্শন করা যেতে পারে বলে ধরে নিন।
এসইও রেন্ডার করা সামগ্রী প্রয়োজন
সর্বজনীন নিবন্ধ, পণ্য পৃষ্ঠা এবং ল্যান্ডিং পৃষ্ঠাগুলির জন্য, একটি ফাঁকা শেলের উপর নির্ভর করবেন না যা শুধুমাত্র WebAssembly শুরু হওয়ার পরেই কার্যকর হবে৷ সার্ভার-সাইড রেন্ডারিং, প্রি-রেন্ডারিং, স্ট্যাটিক রেন্ডারিং বা একটি আলাদা কন্টেন্ট পাথ ব্যবহার করুন।
ভালো ফিট: অফলাইন বা ক্লায়েন্ট-ভারী অ্যাপ
WebAssembly ভাল কাজ করে যখন ব্যবহারকারীরা প্রায়ই ফিরে আসে, অফলাইন আচরণের প্রয়োজন হয়, বা ভারী ক্লায়েন্ট-সাইড কাজ করে যেখানে একটি সার্ভার রাউন্ড ট্রিপ আরও খারাপ হবে।
হাইব্রিড এবং ওয়েবভিউ
হাইব্রিড অ্যাপের জন্য, পাবলিক ল্যান্ডিং পৃষ্ঠাগুলির জন্য নয়
ব্লেজার হাইব্রিড উপযোগী যখন একটি .NET টিম একটি ডেস্কটপ বা মোবাইল অ্যাপের মধ্যে উপাদানগুলি পুনরায় ব্যবহার করতে চায়৷ এটি একটি ওয়েবভিউ-এর মাধ্যমে একটি নেটিভ শেলে চলে, তাই এটি স্থানীয় ফাইল, ডিভাইস API এবং এন্টারপ্রাইজ স্থাপনার কাছাকাছি হতে পারে। এটি এসইও-কেন্দ্রিক ওয়েবসাইটগুলির জন্য একটি শর্টকাট নয়।
- আপনার স্থানীয় ফাইল, ডিভাইস API, ডেস্কটপ স্থাপনা বা মোবাইল প্যাকেজিং-এ অ্যাক্সেসের প্রয়োজন হলে হাইব্রিড ব্যবহার করুন।
- শুধুমাত্র ওয়েব উপাদান পুনঃব্যবহারের জন্য হাইব্রিড নির্বাচন করবেন না। নেটিভ শেল আপডেট, স্টোর, সাইনিং এবং সহায়তা কাজ যোগ করে।
- এসইও এবং শেয়ারযোগ্য পাবলিক ইউআরএলগুলির জন্য, হাইব্রিড সাধারণত ভুল সারফেস।
বহুভাষিক রাউটিং
সংস্কৃতি-সচেতন লিঙ্কগুলি অবশ্যই প্রকৃত লিঙ্ক হতে হবে
একটি বহুভাষিক Blazor সাইটের পৃষ্ঠাটি ইন্টারেক্টিভ হওয়ার পরে শুধুমাত্র ক্লিক হ্যান্ডলার বা জাভাস্ক্রিপ্টে ভাষা নেভিগেশন তৈরি করা উচিত নয়। সার্চ ইঞ্জিন এবং ব্যবহারকারীদের স্থিতিশীল href মান, ক্যানোনিকাল URL এবং hreflang ডেটা সহ প্রারম্ভিক HTML-এ প্রকৃত অ্যাঙ্কর ট্যাগগুলির প্রয়োজন।
- স্ল্যাশ কালচার স্ল্যাশ পাথের মতো হাতে তৈরি স্ট্রিংয়ের পরিবর্তে কেন্দ্রীয় পৃষ্ঠার লিঙ্ক এবং সাহায্যকারী ব্যবহার করুন।
- প্রারম্ভিক HTML রেন্ডারের সময় href মান সহ অ্যাঙ্কর ট্যাগ হিসাবে ভাষার লিঙ্কগুলি রেন্ডার করুন।
- ক্যানোনিকাল URL, hreflang URL এবং দৃশ্যমান ভাষা নেভিগেশন সিঙ্কে রাখুন।
- অনক্লিক হ্যান্ডলার, বিলম্বিত জাভাস্ক্রিপ্ট বা ইন্টারেক্টিভ-অনলি ব্লেজার স্টেটের পিছনে গুরুত্বপূর্ণ লিঙ্কগুলি লুকানো এড়িয়ে চলুন।
সিদ্ধান্ত গাইড
আপনি গ্রহণ করা বাধা দ্বারা চয়ন করুন
প্রতিটি রেন্ডার মোড চাপকে ভিন্ন জায়গায় নিয়ে যায়। আপনি যে চাপটি পরিমাপ করতে, হোস্ট করতে এবং দলকে ব্যাখ্যা করতে পারেন তা চয়ন করুন।
যখন প্রথম লোড এবং .NET ব্যাকএন্ড ইন্টিগ্রেশন সবচেয়ে গুরুত্বপূর্ণ
নিয়ন্ত্রিত প্রমাণীকৃত অ্যাপের জন্য Blazor সার্ভার বেছে নিন যেখানে সার্ভার মেমরি, লাইভ সংযোগ এবং আঞ্চলিক লেটেন্সি গ্রহণযোগ্য অপারেটিং খরচ।
যখন ক্লায়েন্ট কাজ এবং অফলাইন আচরণ সবচেয়ে গুরুত্বপূর্ণ
WebAssembly বাছাই করুন যখন পুনরাবৃত্তি ভিজিট, ক্যাশিং, অফলাইন ব্যবহার, বা স্থানীয় CPU কাজ সবচেয়ে ছোট প্রথম লোডের চেয়ে বেশি গুরুত্বপূর্ণ।
যখন পণ্যটি সত্যিই একটি নেটিভ অ্যাপ
যখন অ্যাপ্লিকেশন ডেস্কটপ বা মোবাইলে থাকে এবং পাবলিক ওয়েব নাগালের চেয়ে স্থানীয় একীকরণের প্রয়োজন হয় তখন হাইব্রিড বেছে নিন।
যখন সাইটটি বেশিরভাগ ডকুমেন্ট এবং ফর্ম
ক্লাসিক ASP.NET কোর MVC বা রেজার পৃষ্ঠাগুলি প্রায়শই সামগ্রী-ভারী সাইট, পাবলিক ডকুমেন্টেশন এবং সীমিত ইন্টারঅ্যাক্টিভিটি সহ ফর্মগুলির জন্য সহজ।
রেফারেন্স বিভাগ
আপনি বাস্তবের জন্য এটি তৈরি করার সময় এইগুলি পরবর্তী পড়ুন
এই রেফারেন্সগুলি আর্কিটেকচারের সিদ্ধান্তের পরে দরকারী, কারণ তারা এমন অংশগুলিকে কভার করে যা একটি ব্লেজার পৃষ্ঠাকে উত্পাদনে নির্ভরযোগ্য করে তোলে: মেটাডেটা, ভাষা লিঙ্ক, হোস্টিং এবং পুনরায় ব্যবহারযোগ্য UI।
প্রতিটি পৃষ্ঠার ধারাবাহিক শিরোনাম, বিবরণ, ওপেন গ্রাফ, ক্যানোনিকাল এবং JSON-LD আউটপুট প্রয়োজন হলে এটি ব্যবহার করুন।
SEO-সক্ষম ভাষা-দেশ লিঙ্কবহুভাষিক রাউটিং এর জন্য বাস্তব ক্রলযোগ্য লিঙ্ক, স্থিতিশীল সংস্কৃতি পাথ এবং সঠিক hreflang আউটপুট প্রয়োজন হলে এটি ব্যবহার করুন।
UpCloud-এ Blazor হোস্ট করুনযখন একটি Blazor সার্ভার অ্যাপের একটি ছোট VPS, Nginx, TLS, systemd, লগ, ব্যাকআপ এবং পুনরাবৃত্তিযোগ্য স্থাপনার প্রয়োজন হয় তখন এটি ব্যবহার করুন।
TablerForNetযখন মানটি একটি বিপণন পৃষ্ঠার পরিবর্তে একটি অ্যাডমিন ইন্টারফেস, ডেটা টেবিল, ফর্ম এবং ড্যাশবোর্ড স্ক্রীন হয় তখন এটি ব্যবহার করুন।
Blazorপরবর্তী বাস্তবায়নের বিশদটি বেছে নেওয়ার আগে আপনি যখন সম্পর্কিত গাইডগুলি এক জায়গায় চান তখন Blazor হাব ব্যবহার করুন।
সাধারণ প্রশ্ন
কেন ব্লেজার সার্ভারের এমভিসির চেয়ে বেশি মেমরির প্রয়োজন হতে পারে?
MVC একটি অনুরোধ শেষ করতে পারে এবং বেশিরভাগ অনুরোধের অবস্থা ছেড়ে দিতে পারে। Blazor সার্ভার প্রতিটি সংযুক্ত ব্রাউজার ট্যাবের জন্য একটি সার্কিট রাখে, তাই কম্পোনেন্ট স্টেট এবং স্কোপড পরিষেবাগুলি ক্লিকের মধ্যে জীবিত থাকতে পারে।
আমি কি একাধিক অ্যাপ ইনস্ট্যান্সে ব্লেজার সার্ভার চালাতে পারি?
হ্যাঁ, তবে এটি ইচ্ছাকৃতভাবে পরিকল্পনা করুন। লাইভ সার্কিট এবং সিগন্যালআর সংযোগের জন্য স্থিতিশীল রাউটিং, একটি ব্যাকপ্লেন বা পরিচালিত সিগন্যালআর পরিষেবা এবং সঠিকভাবে পুনঃসংযোগে বেঁচে থাকা অ্যাপ্লিকেশন অবস্থার প্রয়োজন।
Blazor WebAssembly SEO-বন্ধুত্বপূর্ণ হতে পারে?
হ্যাঁ, কিন্তু একটি খালি শেল শিপিং করে এবং ক্রলার অপেক্ষা করে আশা করে নয়। সর্বজনীন পৃষ্ঠাগুলির প্রথম প্রতিক্রিয়ার আগে বা সময়কালে রেন্ডার করা HTML, মেটাডেটা, ক্যানোনিকাল লিঙ্ক এবং স্ট্রাকচার্ড ডেটা প্রয়োজন।
কিভাবে বহুভাষিক ব্লেজার লিঙ্ক তৈরি করা উচিত?
কেন্দ্রীয় রুট সংজ্ঞা ব্যবহার করুন এবং প্রতিটি সংস্কৃতির জন্য বাস্তব অ্যাঙ্কর ট্যাগ রেন্ডার করুন। দৃশ্যমান লিঙ্ক, ক্যানোনিকাল URL এবং hreflang ডেটা সারিবদ্ধ রাখুন যাতে ব্যবহারকারী এবং ক্রলাররা একই ভাষা কাঠামো দেখতে পান।