ASP.NET কোর রেজার পৃষ্ঠাগুলি দিয়ে আসল ওয়েব অ্যাপ্লিকেশন তৈরি করুন

সর্বশেষ আপডেট: 03/15/2026
লেখক: C SourceTrail
  • Razor Pages ASP.NET Core এর উপরে একটি পৃষ্ঠা-কেন্দ্রিক মডেল অফার করে, যা MVC এর মতো একই শক্তিশালী রাউটিং, মিডলওয়্যার এবং Razor ভিউ ইঞ্জিন ভাগ করে নেয়।
  • বাস্তব প্রকল্পগুলি পেজ ফোল্ডার, wwwroot, appsettings.json এবং Program.cs-এর চারপাশে কেন্দ্রীভূত হয়, যেখানে পরিষেবা, মিডলওয়্যার এবং ত্রুটি পরিচালনা কনফিগার করা হয়।
  • ভিজ্যুয়াল স্টুডিও, রাইডার এবং ভিএস কোডের মতো সরঞ্জামগুলি মডেল, ভিউ এবং রেজার সিনট্যাক্সের ডেভেলপমেন্ট, ডিবাগিং, নেভিগেশন এবং রিফ্যাক্টরিংকে স্ট্রিমলাইন করে।
  • ASP.NET কোর IIS, Azure, কাস্টম সার্ভার বা ডকারে Razor অ্যাপ প্রকাশ করা সহজ করে, স্কেলেবল এবং পুনরাবৃত্তিযোগ্য স্থাপনা সক্ষম করে।

ASP.NET কোর রেজার রিয়েল ওয়ার্ল্ড ওয়েব অ্যাপস

যদি আপনি Angular প্লাস ASP.NET ওয়েব API থেকে আসেন এবং ব্যাকএন্ডে C# উপভোগ করতে শুরু করেন, তাহলে Razor Pages হল আপনার বিদ্যমান জাভাস্ক্রিপ্ট জ্ঞান ত্যাগ না করেই ফ্রন্টএন্ডে সেই আনন্দ আনার একটি অবিশ্বাস্যভাবে স্বাভাবিক উপায়। সম্পূর্ণ ভিন্ন UI স্ট্যাকে প্রথমে ঝাঁপিয়ে পড়ার পরিবর্তে, আপনি পরিচিত ASP.NET কোর অঞ্চলে থাকতে পারেন, সার্ভার-সাইড রেন্ডারিংয়ের জন্য Razor সিনট্যাক্স ব্যবহার করতে পারেন এবং যেখানেই বোধগম্য সেখানে JavaScript ছিটিয়ে দিতে পারেন।

ASP.NET Core Razor Pages হল .NET-তে আধুনিক ওয়েব অ্যাপ তৈরির জন্য মাইক্রোসফটের প্রস্তাবিত পদ্ধতি, যা একটি পরিষ্কার পৃষ্ঠা-ভিত্তিক মডেল প্রদান করে যা শক্তিশালী ASP.NET Core পাইপলাইনের উপরে অবস্থিত। এটি ক্রস-প্ল্যাটফর্ম, ভিজ্যুয়াল স্টুডিও, ভিজ্যুয়াল স্টুডিও কোড এবং জেটব্রেইনস রাইডারের মতো সরঞ্জামগুলির সাথে নির্বিঘ্নে কাজ করে এবং ক্ষুদ্র প্রোটোটাইপ থেকে শুরু করে প্রোডাকশন-গ্রেড, ডাটাবেস-সমর্থিত অ্যাপ্লিকেশনগুলিতে স্কেল করে। এই নির্দেশিকায় আমরা বাস্তব-বিশ্বের রেজার পেজ অ্যাপগুলি কীভাবে গঠন করা হয়, কীভাবে Program.cs সবকিছু একসাথে সংযুক্ত করে, কীভাবে স্ট্যাটিক ফাইল এবং কনফিগারেশন কাজ করে এবং কীভাবে টুলিং, ডিবাগিং এবং স্থাপনা কার্যকর হয় তা নিয়ে আলোচনা করব।

ASP.NET কোর রেজার পেজ আসলে কী (এবং এটি MVC এর সাথে কীভাবে তুলনা করে)

রেজার পেজ হল ASP.NET কোরের একটি বৈশিষ্ট্য যা আপনাকে কন্ট্রোলারের পরিবর্তে পৃষ্ঠাগুলির চারপাশে ওয়েব অ্যাপ তৈরি করতে দেয়, যা MVC-এর মতো একই অন্তর্নিহিত কাঠামো ব্যবহার করে একটি সহজ মানসিক মডেল অফার করে। এর আওতায় এটি কন্ট্রোলার এবং ভিউয়ের মতো একই রাউটিং, মিডলওয়্যার এবং হোস্টিং স্ট্যাকে চলে, কিন্তু প্রতিটি পৃষ্ঠা কন্ট্রোলার ক্লাসের সবকিছু কেন্দ্রীভূত করার পরিবর্তে নিজস্ব আচরণ পরিচালনা করে।

প্রতিটি রেজার পৃষ্ঠা সাধারণত এক জোড়া ফাইল দ্বারা প্রতিনিধিত্ব করা হয়: মার্কআপের জন্য একটি .cshtml ফাইল এবং পৃষ্ঠার C# লজিকের জন্য একটি .cshtml.cs ফাইল। .cshtml ফাইলটিতে আপনার HTML-কে Razor সিনট্যাক্সের সাথে মিশ্রিত করা থাকে (উদাহরণস্বরূপ, লুপ, শর্তাবলী এবং HTML সাহায্যকারী), যখন .cshtml.cs ফাইলের পিছনের কোডটিতে OnGet, OnPost, মডেল বৈশিষ্ট্য এবং পৃষ্ঠাটি রেন্ডার বা প্রক্রিয়া করার জন্য প্রয়োজনীয় যেকোনো যুক্তির মতো হ্যান্ডলার পদ্ধতি থাকে।

রেজার পেজের আগে, ASP.NET-তে প্রভাবশালী প্যাটার্ন ছিল MVC, যেখানে কন্ট্রোলাররা ভিউ ফেরত দিত এবং সমস্ত অনুরোধকে অ্যাকশন পদ্ধতির মাধ্যমে রাউট করত। MVC এখনও সম্পূর্ণরূপে সমর্থিত এবং শক্তিশালী রীতিনীতি সহ একটি যুদ্ধ-পরীক্ষিত প্যাটার্ন, তবে অনেক পরিস্থিতিতে Razor Pages দ্রুত যুক্তিযুক্ত কারণ যে কোডটি একটি পৃষ্ঠা লোড এবং প্রক্রিয়া করে তা একটি পৃথক নিয়ামককে পুঁতে রাখার পরিবর্তে তার মার্কআপের পাশেই থাকে।

যদিও রেজার পেজ কন্ট্রোলার থেকে ফোকাস সরিয়ে নেয়, তবুও এটি একই রেজার ভিউ ইঞ্জিন ব্যবহার করে এবং ডায়নামিক HTML তৈরি করতে HtmlHelpers এবং TagHelpers উভয়কেই সমর্থন করে। TagHelpers বিশেষভাবে কার্যকর: তারা সাধারণ HTML ট্যাগগুলিকে এমন বৈশিষ্ট্য সহ প্রসারিত করে যেমন asp-action, asp-controller or asp-route যাতে আপনি ম্যানুয়াল URL বা ইনলাইন জাভাস্ক্রিপ্ট না লিখেই ব্যাকএন্ড এন্ডপয়েন্টের সাথে লিঙ্ক এবং ফর্মগুলিকে সংযুক্ত করতে পারেন।

যেসব ডেভেলপার ইতিমধ্যেই জাভাস্ক্রিপ্ট জানেন এবং SPA ফ্রেমওয়ার্কে কাজ করেছেন, তাদের জন্য Razor Pages একটি হাইব্রিড পদ্ধতি অফার করে: দ্রুত প্রথম লোড এবং SEO এর জন্য সার্ভার-রেন্ডার করা HTML, যেখানে প্রয়োজনে উপরে স্তরে স্তরে জাভাস্ক্রিপ্ট এবং ফ্রন্ট-এন্ড লাইব্রেরি রাখা হয়। আপনি কোনও নির্দিষ্ট JS ফ্রেমওয়ার্কের সাথে বা তার বিরুদ্ধে আবদ্ধ নন, এবং আপনি ব্যাকএন্ড এবং ফ্রন্টএন্ড একই সমাধানে রাখতে পারেন, যা স্থাপনা এবং রক্ষণাবেক্ষণকে সহজ করে তোলে।

একটি রেজার পেজ ওয়েব অ্যাপ তৈরি এবং চালানো

যখন আপনি ভিজ্যুয়াল স্টুডিও, ভিজ্যুয়াল স্টুডিও কোড বা রাইডার ব্যবহার করে একটি নতুন ASP.NET কোর রেজার পেজ প্রজেক্ট তৈরি করেন, তখন টেমপ্লেটটি একটি ন্যূনতম কিন্তু সম্পূর্ণ অ্যাপ্লিকেশন তৈরি করে, যার মধ্যে রয়েছে Program.cs, পেজ ফোল্ডার, কনফিগারেশন ফাইল এবং স্ট্যাটিক ওয়েব রুট। একেবারে শুরু থেকেই আপনি একটি কার্যকরী সাইট পাবেন যা আপনি তাৎক্ষণিকভাবে চালাতে পারবেন এবং তারপরে আরও পরিশীলিত কিছুতে পরিণত হতে পারবেন যেমন একটি সিনেমার ক্যাটালগ বা অন্য কোনও ডেটা-চালিত অ্যাপ।

HTTPS-এ অ্যাপটি চালানোর আগে, ASP.NET Core-কে এমন একটি ডেভেলপমেন্ট সার্টিফিকেট ব্যবহার করতে হবে যা আপনার অপারেটিং সিস্টেম বিশ্বাস করে, এবং প্রথমবার যখন আপনি প্রকল্পটি চালাবেন তখন আপনি একটি ডায়ালগ দেখতে পাবেন যেখানে আপনাকে এটি বিশ্বাস করতে বলা হবে। যখন সেই ডায়ালগটি প্রদর্শিত হবে, তখন নির্বাচন করুন হাঁ এটি ইঙ্গিত করে যে আপনার মেশিনে HTTPS ট্র্যাফিকের জন্য স্থানীয় ডেভেলপমেন্ট সার্টিফিকেট ব্যবহার করা হচ্ছে, যা ব্রাউজার সতর্কতা ছাড়াই সুরক্ষিত এন্ডপয়েন্টগুলির সঠিক পরীক্ষার জন্য প্রয়োজনীয়।

উইন্ডোজ, ম্যাকওএস বা লিনাক্সে, ভিজ্যুয়াল স্টুডিও কোড আপনাকে টিপে অ্যাপটি চালু করতে দেয় জন্য ctrl+F5 ডিবাগিং ছাড়াই চালানোর জন্য, অথবা ডিবাগার সংযুক্ত করতে চাইলে রান এবং ডিবাগ প্যানেল ব্যবহার করুন। প্রথমবার, VS কোড আপনাকে একটি ডিবাগার টাইপ নির্বাচন করতে অনুরোধ করতে পারে যেমন C#, .NET 5+ এবং .NET কোর অথবা একটি নির্দিষ্ট লঞ্চ কনফিগারেশন যেমন সি#: রেজারপেজেসমুভি [https] রেজারপেজেসমুভি .NET সংস্করণ এবং আপনার কর্মক্ষেত্রের কনফিগারেশনের উপর নির্ভর করে।

চালু করার পর, আপনার ডিফল্ট ব্রাউজারটি এর মতো একটি URL-এ খোলে https://localhost:<port>, যেখানে পোর্টটি launchSettings.json-এ এলোমেলোভাবে নির্ধারিত বা নির্দিষ্ট করা হয়েছে, এবং আপনি Razor Pages অ্যাপ দ্বারা পরিবেশিত হোম পেজটি দেখছেন। কিছু টেমপ্লেটে, আপনি পরিবর্তে দেখতে পাবেন http://localhost:5001 অথবা অন্য কোন পোর্ট; মূল কথা হলো localhost নির্দেশ করে যে এটি আপনার নিজস্ব মেশিন, কোনও বহিরাগত হোস্ট নয়।

একবার পরীক্ষা শেষ হয়ে গেলে, আপনি আপনার IDE থেকে চলমান অ্যাপটি বন্ধ করতে পারবেন: ভিজ্যুয়াল স্টুডিও কোডে রান মেনু ব্যবহার করুন এবং Stop Debugging নির্বাচন করুন অথবা টিপুন স্থানপরিবর্তন+F5, ম্যাকের জন্য ভিজ্যুয়াল স্টুডিওতে আপনি ডিবাগ > স্টপ ডিবাগিং ব্যবহার করেন। এটি সেশনের জন্য শুরু হওয়া কেস্ট্রেল ওয়েব সার্ভার ইনস্ট্যান্সকে বন্ধ করে দেয় এবং অন্যান্য রানের জন্য পোর্টটি মুক্ত করে।

প্রকল্পের কাঠামো বোঝা: ফোল্ডার এবং কী ফাইল

রিয়েল-ওয়ার্ল্ড রেজার পেজ অ্যাপ্লিকেশনগুলি কয়েকটি গুরুত্বপূর্ণ ফোল্ডার এবং কনফিগারেশন ফাইলের চারপাশে সংগঠিত হয় যা আপনি ক্রমাগত ব্যবহার করবেন: পেজ, wwwroot, appsettings.json এবং Program.cs (এবং পুরানো সংস্করণগুলিতে, Startup.cs)। এই জিনিসগুলি নেভিগেট করতে আরামদায়ক হওয়া অত্যন্ত গুরুত্বপূর্ণ কারণ কার্যত প্রতিটি টিউটোরিয়াল, নমুনা বা উৎপাদন প্রকল্প একই নিয়ম ব্যবহার করে।

পেজ ফোল্ডার হল একটি রেজার পেজ প্রকল্পের প্রাণকেন্দ্র, যেখানে সমস্ত .cshtml পৃষ্ঠা এবং তাদের .cshtml.cs কোড-বিহাইড ফাইল, শেয়ার করা লেআউট এবং আংশিক ভিউ থাকে। প্রতিটি পৃষ্ঠা জোড়া (উদাহরণস্বরূপ Index.cshtml এবং Index.cshtml.cs) আপনার অ্যাপে একটি কলযোগ্য এন্ডপয়েন্ট এবং আন্ডারস্কোর দিয়ে শুরু হওয়া বিশেষ ফাইলগুলি উপস্থাপন করে, যেমন _Layout.cshtml, অনেক পৃষ্ঠা জুড়ে পুনঃব্যবহৃত সামগ্রী সংজ্ঞায়িত করুন।

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

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

অ্যাপের কনফিগারেশন সাধারণত এখানে সংরক্ষণ করা হয় appsettings.json (এবং পরিবেশ-নির্দিষ্ট রূপ যেমন appsettings.Development.json), যাতে সংযোগ স্ট্রিং এবং বৈশিষ্ট্য পতাকার মতো সেটিংস থাকে। ASP.NET Core এর কনফিগারেশন সিস্টেম এই ফাইলগুলি লোড করে এবং পরিবেশ ভেরিয়েবল এবং অন্যান্য প্রদানকারীদের সাথে একত্রিত করে, যার ফলে আপনার কোডে দৃঢ়ভাবে টাইপ করা অপশন ক্লাসের সাথে বিভাগগুলিকে আবদ্ধ করা সহজ হয়।

Program.cs এবং ASP.NET কোর পাইপলাইন

Program.cs ফাইলটিতে আপনার Razor Pages অ্যাপের এন্ট্রি পয়েন্ট থাকে এবং প্রথম অনুরোধটি আপনার সাইটে আসার আগে ওয়েব হোস্ট, পরিষেবা এবং মিডলওয়্যার পাইপলাইন কীভাবে কনফিগার করা হয় তা নির্ধারণ করে। আধুনিক ASP.NET কোর সংস্করণগুলিতে, Program.cs একটি সুবিন্যস্ত "ন্যূনতম হোস্টিং" মডেল ব্যবহার করে যার একটি শীর্ষ-স্তরের বিবৃতি রয়েছে যা একটি তৈরি করে WebApplicationBuilder এবং তারপর তৈরি এবং কনফিগার করে WebApplication উদাহরণ হিসেবে বলা যায়।

Program.cs-এর সাধারণ প্যাটার্নটি শুরু হয় var builder = WebApplication.CreateBuilder(args); যা সাধারণ ডিফল্ট সহ একটি হোস্ট সেট আপ করে, তারপর কল করে builder.Services.AddRazorPages(); নির্ভরতা ইনজেকশন কন্টেইনারের সাথে রেজার পেজ নিবন্ধন করতে। পরিষেবাগুলি কনফিগার করার পরে, var app = builder.Build(); অ্যাপ্লিকেশন অবজেক্ট তৈরি করে যা আপনি মিডলওয়্যার এবং এন্ডপয়েন্ট দিয়ে সংযুক্ত করেন।

ত্রুটি পরিচালনা এবং নিরাপত্তা আচরণ পরিবেশের উপর অনেকাংশে নির্ভর করে, তাই আপনি সাধারণত একটি পরিবেশ পরীক্ষা দেখতে পান যেমন if (!app.Environment.IsDevelopment()) উৎপাদন-গ্রেড বৈশিষ্ট্যগুলি সক্ষম করতে। সেই অবস্থার ভেতরে আপনি সাধারণত পাবেন app.UseExceptionHandler("/Error"); যা একটি ডেডিকেটেড ত্রুটি পৃষ্ঠায় অপ্রয়োজনীয় ত্রুটি পাঠায়, এবং app.UseHsts(); যা HTTP স্ট্রিক ট্রান্সপোর্ট সিকিউরিটি (HSTS) সক্রিয় করে ব্রাউজারগুলিকে আপনার ডোমেনের জন্য সর্বদা HTTPS ব্যবহার করার নির্দেশ দেয়।

মিডলওয়্যার পাইপলাইনটি তখন কল দিয়ে একত্রিত করা হয় যেমন app.UseHttpsRedirection();, app.UseStaticFiles(); or app.MapStaticAssets();, app.UseRouting(); এবং বিকল্পভাবে app.UseAuthorization(); এরপর এন্ডপয়েন্ট ম্যাপিং। HTTPS পুনঃনির্দেশনা অনিরাপদ HTTP অনুরোধগুলিকে HTTPS-তে আপগ্রেড করতে বাধ্য করে, স্ট্যাটিক ফাইল মিডলওয়্যার (অথবা .NET 9-এ নতুন স্ট্যাটিক অ্যাসেট ম্যাপিং) wwwroot থেকে সরাসরি রিসোর্স পরিবেশনের অনুমতি দেয় এবং রাউটিং সিদ্ধান্ত নেয় যে কোন এন্ডপয়েন্ট প্রতিটি ইনকামিং URL পরিচালনা করে।

অবশেষে, রেজার পেজগুলি রাউটিংয়ে সংযুক্ত হয় app.MapRazorPages(); ঐচ্ছিকভাবে শৃঙ্খলিত .WithStaticAssets(); স্ট্যাটিক অ্যাসেট অপ্টিমাইজেশন সংহত করার জন্য নতুন টেমপ্লেটে, এবং অ্যাপ্লিকেশনটি ব্যবহার করে শুরু করা হয়েছে app.Run();. সেই সময়ে অ্যাপটি কনফিগার করা পোর্টগুলিতে শুনছে এবং কেস্ট্রেল সার্ভার স্থানীয়ভাবে ডেভেলপমেন্টে হোক বা IIS, Azure অ্যাপ সার্ভিস বা ডকারের মতো প্রোডাকশন হোস্টে হোক, প্রকৃত অনুরোধগুলি পরিচালনা করার জন্য প্রস্তুত।

বাস্তব অ্যাপ্লিকেশনগুলিতে রেজার পৃষ্ঠা, মডেল এবং দেখুন মডেল

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

একটি সাধারণ ডেভেলপমেন্ট ওয়ার্কফ্লো হল সহজ C# ক্লাস দিয়ে শুরু করা যা ক্ষেত্র এবং পদ্ধতি স্বাক্ষরকে স্টাব হিসাবে ব্যবহার করে এবং ধীরে ধীরে সেগুলিকে এনক্যাপসুলেটেড বৈশিষ্ট্য, বৈধতা বৈশিষ্ট্য এবং যুক্তি সহ সঠিক মডেলে বিকশিত করে। জেটব্রেইনস রাইডারের মতো টুলগুলি সেই বিবর্তনকে আরও মসৃণ করে তোলে উদ্দেশ্যমূলক ক্রিয়াগুলির মাধ্যমে যা স্বয়ংক্রিয়ভাবে ক্ষেত্রগুলিকে বৈশিষ্ট্যে রূপান্তর করে, উত্তরাধিকার শ্রেণিবিন্যাসের জন্য প্রাপ্ত প্রকার তৈরি করে এবং আপনার অবজেক্ট মডেলকে পরিমার্জন করার সাথে সাথে অন্যান্য রিফ্যাক্টরিং প্রয়োগ করে।

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

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

.cshtml ফাইলগুলিতে ব্যবহৃত রেজার সিনট্যাক্স দৃঢ়ভাবে টাইপ করা মডেল এবং ভিউ মডেলের সাথে মসৃণভাবে একত্রিত হয়, যার ফলে আপনি কম্পাইল-টাইম সুরক্ষা না হারিয়ে HtmlHelpers বা TagHelpers ব্যবহার করে ডেটা প্রদর্শন, লুপ এবং কন্ডিশনাল চালানো এবং লিঙ্ক এবং ফর্ম তৈরি করতে পারবেন। C# এবং মার্কআপের এই মিশ্রণটি সার্ভার-সাইডের লজিক অনেকাংশে ধরে রাখে কিন্তু ব্রাউজারে পরিষ্কার HTML তৈরি করে যা CSS এবং JavaScript এর সাথে সুন্দরভাবে কাজ করে।

রাইডারে রেজার সিনট্যাক্স, ট্যাগহেল্পার এবং নেভিগেশন নিয়ে কাজ করা

রেজার সিনট্যাক্স হল HTML এর উপর একটি হালকা স্তর যা যখনই @ প্রতীক প্রদর্শিত হবে, যার ফলে আপনার মার্কআপে সরাসরি C# এক্সপ্রেশন, স্টেটমেন্ট বা হেল্পার কল এম্বেড করা সহজ হবে। আপনি আইটেমের তালিকা লুপ করতে পারেন, শর্তের উপর ভিত্তি করে উপাদানগুলি দেখাতে বা লুকাতে পারেন, অথবা আলাদা টেমপ্লেট ভাষা না লিখে বা সর্বত্র জাভাস্ক্রিপ্ট ছিটিয়ে মান এবং ফর্ম্যাট করা তারিখগুলি প্রদর্শন করতে পারেন।

TagHelpers HTML এর একটি স্বাভাবিক এক্সটেনশনের মতো মনে হয় যেখানে বিশেষ বৈশিষ্ট্যগুলি শুরু হয় asp- উপাদানগুলির আচরণ বা আউটপুট পরিবর্তন করুন, প্রায়শই পুরানো HtmlHelper পদ্ধতিগুলি প্রতিস্থাপন করুন এবং ইনলাইন স্ক্রিপ্ট আঠার প্রয়োজনীয়তা দূর করুন। উদাহরণ অন্তর্ভুক্ত asp-action এবং asp-controller নির্দিষ্ট অ্যাকশনে অ্যাঙ্কর ট্যাগ এবং ফর্মগুলিকে রুট করতে, অথবা রুট অ্যাট্রিবিউট যেমন asp-route-id URL গুলিতে পরিষ্কারভাবে প্যারামিটার পাস করতে।

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

MVC প্রকল্পগুলিতে, রাইডার কন্ট্রোলার, অ্যাকশন এবং ভিউগুলিকে সংযুক্ত করে এমন নিয়মগুলিও বোঝে, তাই অ্যাকশন ফলাফলের উপর ঘোরাফেরা করলে আপনাকে সম্ভাব্য ভিউ পাথগুলি দেখাতে পারে এবং Ctrl + ক্লিক করুন (অথবা Cmd- ক্লিক করুন macOS-এ) সরাসরি সংশ্লিষ্ট .cshtml ফাইলে চলে যায়। শর্টকাট যেমন Ctrl + B or সিএমডি-বি সমাধান এক্সপ্লোরারদের মাধ্যমে অনুসন্ধান না করেই আপনার কোড বেসের মাধ্যমে নেভিগেট করার একটি দ্রুত উপায় দিন।

রেজার-নির্দিষ্ট টুলিং ছাড়াও, রাইডারে HTML, CSS এবং জাভাস্ক্রিপ্টের জন্য বিস্তৃত উদ্দেশ্য এবং দ্রুত সমাধান রয়েছে যা আপনাকে আপনার C# ব্যাকএন্ডের মতো একই IDE-এর ভিতরে পরিষ্কার, সুগঠিত ক্লায়েন্ট-সাইড কোড লিখতে সাহায্য করে। এই শক্ত ইন্টিগ্রেশন জটিল, ইন্টারেক্টিভ UI তৈরি করার সময় অনেক প্রসঙ্গ সুইচ সাশ্রয় করতে পারে যা এখনও সার্ভার-রেন্ডার করা রেজার ভিউ বা পৃষ্ঠাগুলির উপর নির্ভর করে।

রেজার পেজ এবং ASP.NET কোর অ্যাপ ডিবাগ করা

ওয়েব ডেভেলপমেন্টে ডিবাগিং একটি দৈনন্দিন কাজ, এবং রেজার পেজ চালিত ASP.NET কোর অ্যাপগুলিও এর ব্যতিক্রম নয়, তাই আপনার IDE-তে শক্তিশালী ডিবাগিং সমর্থন থাকা অপরিহার্য। ভিজ্যুয়াল স্টুডিও এবং রাইডার উভয়ই ইন্টারেক্টিভ ডিবাগার সরবরাহ করে যা আপনার কেস্ট্রেল প্রক্রিয়ার সাথে সংযুক্ত করতে পারে, সি# কোডের মাধ্যমে ধাপে ধাপে যেতে পারে, ভেরিয়েবলগুলি পরিদর্শন করতে পারে এবং অ্যাপটি চলাকালীন এক্সপ্রেশনগুলি মূল্যায়ন করতে পারে।

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

ASP.NET Core-এ ডিফল্ট ডেভেলপার এক্সেপশন পৃষ্ঠাটি স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যায় যখন পরিবেশটি ডেভেলপমেন্টে সেট করা থাকে, যা আপনাকে একটি বিস্তারিত স্ট্যাক ট্রেস, অনুরোধের তথ্য এবং ডায়াগনস্টিকস প্রদান করে যখনই অপ্রয়োজনীয় ব্যতিক্রমগুলি ঘটে। এই ভিউটি স্থানীয় ডিবাগিংয়ের সময় অত্যন্ত সহায়ক কিন্তু উৎপাদনে বিপজ্জনক কারণ এটি আপনার অ্যাপ এবং পরিবেশ সম্পর্কে অভ্যন্তরীণ বিবরণ ফাঁস করতে পারে।

সংবেদনশীল তথ্য সুরক্ষিত রাখার জন্য, উৎপাদন এবং পরীক্ষার পরিবেশ সাধারণত ডেভেলপার ব্যতিক্রম পৃষ্ঠাটি অক্ষম করে এবং পরিবর্তে কনফিগার করা ব্যতিক্রম হ্যান্ডলার রুট ব্যবহার করে, প্রায়শই /Error, সার্ভার-সাইডে আসল বিবরণ লগ করার সময় একটি ব্যবহারকারী-বান্ধব ত্রুটি স্ক্রিন দেখানোর জন্য। এই আচরণটি Program.cs-এ পরিবেশ পরীক্ষার মাধ্যমে নিয়ন্ত্রিত হয় এবং কল করে UseExceptionHandler এবং UseHsts.

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

আসল ASP.NET কোর রেজার অ্যাপ প্রকাশ এবং স্থাপন করা

আপনার রেজার পেজ অ্যাপটি পাঠানোর সময় পূর্ববর্তী সমস্ত কাঠামো এবং কনফিগারেশন কার্যকর হয়, কারণ ASP.NET কোর বিভিন্ন হোস্টিং পরিবেশ এবং কর্মপ্রবাহের সাথে মানানসই বিভিন্ন স্থাপনার বিকল্প সমর্থন করে। আপনি উইন্ডোজে IIS, ডকারে Linux কন্টেইনার, অথবা Azure অ্যাপ সার্ভিসের মতো পরিচালিত প্ল্যাটফর্ম পছন্দ করুন না কেন, প্রকাশনা প্রক্রিয়াটি MSBuild দ্বারা চালিত হতে পারে এবং আপনার CI/CD পাইপলাইনে সংহত করা যেতে পারে।

ভিজ্যুয়াল স্টুডিও এবং রাইডার উভয়ই প্রকাশনা প্রোফাইল অফার করে যা আপনার অ্যাপ্লিকেশনটিকে প্যাকেজ করতে পারে এবং ওয়েব ডিপ্লয় (MSDeploy) ব্যবহার করে IIS-এ স্থাপন করতে পারে, এটি একটি স্থানীয় বা নেটওয়ার্ক ফোল্ডারে অনুলিপি করতে পারে, অথবা FTP, FTPS বা SFTP এর মাধ্যমে সরাসরি একটি দূরবর্তী সার্ভারে পুশ করতে পারে। একটি প্রকাশনা প্রোফাইল তৈরি করা আপনার স্থাপনার সেটিংসকে এনকোড করে যাতে ভবিষ্যতের প্রকাশনাগুলি প্রোফাইল নির্বাচন করা এবং একটি বোতামে ক্লিক করা বা একটি কমান্ড চালানোর মতোই সহজ হয়।

ক্লাউড পরিস্থিতির জন্য, Azure অ্যাপ সার্ভিস একটি জনপ্রিয় লক্ষ্য, এবং IDE গুলি আপনার প্রকল্প থেকে সরাসরি ওয়েব অ্যাপ তৈরি এবং প্রকাশ করার জন্য Azure টুলিংকে একীভূত করে, আবার MSBuild এবং MSDeploy-তে পিগিব্যাকিং করে। এই পদ্ধতিটি স্থানীয় এবং ক্লাউড পরিবেশের মধ্যে বিল্ড এবং ডিপ্লয়মেন্টকে সামঞ্জস্যপূর্ণ রাখে এবং Azure DevOps, GitHub Actions বা অন্যান্য CI সিস্টেমে স্বয়ংক্রিয়ভাবে ব্যবহার করা যেতে পারে।

ASP.NET Core-এর জন্য ডকার হল আরেকটি প্রথম শ্রেণীর বিকল্প, যা আপনাকে আপনার Razor Pages অ্যাপটিকে কন্টেইনারাইজ করতে দেয় যাতে এটি কন্টেইনার সমর্থন করে এমন যেকোনো পরিবেশে পূর্বাভাসযোগ্যভাবে চালানো যায়। রাইডার এবং ভিজ্যুয়াল স্টুডিও আপনাকে ডকারফাইল তৈরি করতে এবং ডকার-কম্পোজ কনফিগারেশন তৈরি করতে সাহায্য করতে পারে, যার ফলে আপনি এমন একটি ওয়ার্কফ্লো সক্ষম করতে পারেন যেখানে আপনি স্থানীয়ভাবে বা কুবারনেটসের মতো অর্কেস্ট্রেটরে আপনার অ্যাপটি কন্টেইনারের ভিতরে ডেভেলপ, ডিবাগ এবং স্থাপন করতে পারবেন।

লক্ষ্য যাই হোক না কেন, প্রকাশের ধাপটি আপনার C# কোড কম্পাইল করে, রেজার ভিউগুলিকে একত্রিত করে, স্ট্যাটিক অ্যাসেটগুলি অনুলিপি করে এবং সেটিংসের উপর নির্ভর করে, একটি স্বয়ংসম্পূর্ণ রানটাইমও তৈরি করতে পারে যাতে হোস্ট মেশিনের একটি শেয়ার্ড .NET ইনস্টলেশনের প্রয়োজন না হয়। এই বান্ডলিং আপনার ডেভেলপমেন্ট প্রকল্পকে প্রকৃত ব্যবহারকারীদের ব্যবহারের জন্য প্রস্তুত একটি স্থাপনযোগ্য শিল্পকর্মে পরিণত করে।

ডেভেলপমেন্ট সার্টিফিকেট এবং Program.cs থেকে শুরু করে Pages এবং wwwroot এর মাধ্যমে ডিবাগিং এবং প্রকাশনা পর্যন্ত - এই সমস্ত অংশগুলিকে একত্রিত করে Razor Pages বাস্তব-বিশ্বের ASP.NET কোর ওয়েব অ্যাপ্লিকেশন তৈরির একটি বাস্তবসম্মত উপায় অফার করে যা রক্ষণাবেক্ষণযোগ্য, কর্মক্ষম এবং আরামদায়ক ডেভেলপারদের জন্য যারা ইতিমধ্যেই C# তে কাজ করতে উপভোগ করেন এবং প্রতিটি পরিস্থিতির জন্য একটি একক-পৃষ্ঠার কাঠামোর উপর সম্পূর্ণরূপে নির্ভর করতে প্রস্তুত নন।

সম্পর্কিত পোস্ট: