جلسه ششم آموزش ASP.NET : سمت سرور در ASP.NET
سمت سرور (Server Side) در ASP.NET
ما چرخه صفحه و انواع کنترل هایی که یک صفحه می تواند حاوی آنها باشد ، را در جلسات قبل مطالعه کرده ایم. یک صفحه می تواند به عنوان یک شیء کنترل نمونه برداری شود. تمام فرم های وب ، اساساً به عنوان نمونه ای از کلاس Page در ASP.NET محسوب می شوند. کلاس Page دارای ویژگی های فوق العاده مفیدی می باشد که با اشیاء intrinsic مرتبط هستند. این ویژگی ها عبارتند از:
- Session
- Application
- Cache
- Request
- Response
- Server
- User
- Trace
ما هر یک از این اشیاء را در زمان مناسب مورد بحث و بررسی قرار خواهیم داد. در این آموزش ، ما شیء Server ، شیء Request و شیء Response را تشریح خواهیم کرد.
شیء Server
شیء Server در ASP.NET به عنوان یک نمونه از کلاس System.Web.HttpServerUtility می باشد. کلاس HttpServerUtility ، خصیصه ها و متدهای متعددی را برای اجرای کارهای مختلف فراهم می کند.
خصیصه ها و متدهایی از شیء Server
متدها و خصیصه های کلاس HttpServerUtility از طریق شیء Server حقیقی که توسط ASP.NET ارائه می شوند ، مورد استفاده قرار می گیرند.
در جدول زیر فهرستی از این خصیصه ها ارائه شده است:
Property |
توضیحات |
MachineName |
نام کامپیوتر سرور |
ScriptTimeOut |
مقدار time-out را به صورت ثانیه دریافت کرده و تنظیم می کند. |
جدول زیر فهرستی از برخی از متدهای مهم را ارائه می دهد:
Method |
توضیحات |
CreateObject(String) |
یک نمونه از شیء COM را که توسط ProgID (Programmatic ID) آن شناسایی می شود ، ایجاد می کند. |
CreateObject(Type) |
یک نمونه از شیء Com را که توسط Type آن قابل شناسایی است ، ایجاد کی کند. |
Equals(Object) |
تعیین می کند که آیا شیء مشخص شده برابر با شیء فعلی است یا نه. |
Execute(String) |
هندلر را برای مسیر مجازی تعیین شده در context درخواست جاری ، اجرا می کند. |
Execute(String, Boolean) |
هندلر را برای مسیر مجازی تعیین شده در context درخواست جاری ، اجرا می کند و تعیین می کند که آیا QueryString و مجموعه های Form پاک شوند یا نه |
GetLastError |
مقدار استثناء قبلی را باز می گرداند. |
GetType |
مقدار Type نمونه جاری را دریافت می کند. |
HtmlEncode |
یک رشته عادی را به کاراکترهای HTML مجاز تغییر می دهد. |
HtmlDecode |
یک رشته HTML را به یک رشته عادی تبدیل می کند. |
ToString |
یک رشته را که شیء جاری را نشان می دهد ، باز می گرداند. |
Transfer(String) |
برای درخواست جاری ، اجرای صفحه جاری را اتمام می بخشد و اجرای یک صفحه جدید را با استفاده از مسیر URL تعیین شده صفحه ، شروع می کند. |
UrlDecode |
یک رشته URL را به یک رشته عادی تبدیل می کند. |
UrlEncodeToken |
همانند UrlEncode عمل می کند ، اما با یک آرایه بایتی که حاوی داده های کد شده با فرمت Base64 هستند ، کار می کند. |
UrlDecodeToken |
همانند UrlDecode عمل می کند ، اما با یک آرایه بایتی که حاوی داده های کد شده با فرمت Base64 هستند ، کار می کند. |
MapPath |
مسیر فیزیکی را که متناظر با یک فایل مجازی تعیین شده در سرور است ، باز می گرداند. |
Transfer |
اجرا را به یک صفحه وب دیگر در برنامه کاربردی جاری ، انتقال می دهد. |
شیء Request
شیء request یک نمونه از کلاس Transfer می باشد. این شیء ، مقادیر خصیصه های درخواست HTTP را نشان می دهد که امکان لود شدن صفحه در مرورگر را فراهم می نمایند.
اطلاعات نشان داده شده در این شیء ، در انتزاع های سطح بالایی (مدل کنترل وب) پوشش داده می شوند. با این حال ، این شء در بررسی کردن برخی از اطلاعات مانند مرورگر کلاینت و کوکی ها کمک می کند.
خصیصه ها و متدهای شیء Request
جدول زیر برخی از خصیصه های قابل توجه از شیء Request را ارائه نموده است:
Property |
توضیحات |
AcceptTypes |
یک آرایه رشته ای از انواع مورد قبول MIME که توسط کلاینت پشتیبانی می شود را دریافت می کند. |
ApplicationPath |
مسیر ریشه مجازی application برنامه کاربردی ASP.NET در سرور را دریافت می کند. |
Browser |
اطلاعات در مورد قابلیت های requesting مرورگر کلاینت را دریافت کرده یا تنظیم می کند. |
ContentEncoding |
مجموعه ای کاراکتر از entity-body را دریافت کرده یا تنظیم می کند. |
ContentLength |
طول محتوای ارسالی از کلاینت را بر حسب بایت تعیین می کند. |
ContentType |
نوع MIME محتوای درخواست وارد شده را دریافت کرده یا تنظیم می کند. |
Cookies |
مجموعه ای از کوکی ها را که توسط کلاینت ارسال می شود ، دریافت می کند. |
FilePath |
مسیر مجازی از درخواست جاری را دریافت می کند. |
Files |
مجموعه ای از فایل های آپلود شده توسط کلاینت در فرمت MIME چند بخشی را دریافت می کند. |
Form |
یک مجموعه از متغیرهای form را دریافت می کند. |
Headers |
مجموعه ای از هدرهای HTTP را دریافت می کند. |
HttpMethod |
متد انتقال داده HTTP (همانند GET ، POST یا HEAD) استفاده شده توسط کلاینت را دریافت می کند. |
InputStream |
محتواهای entity body مربوط به HTTP وارد شده را دریافت می کند. |
IsSecureConnection |
مقداری را دریافت می کند که نشان می دهد آیا اتصال HTTP از سوکت های امن (که HTTPS است) استفاده می کند یا نه. |
QueryString |
مجموعه ای از متغیرهای رشته ای query مربوط به HTTP را دریافت می کند. |
RawUrl |
URL خام از درخواست جاری را دریافت می کند. |
RequestType |
متد انتقال داده HTTP (GET یا POST) استفاده شده توسط کلاینت را دریافت کرده یا تنظیم می کند. |
ServerVariables |
مجموعه ای از متغیرهای سرور Web را دریافت می کند. |
TotalBytes |
تعداد بایت ها در stream (جریان ) ورودی جاری را دریافت می کند. |
url |
اطلاعاتی در مورد URL درخواست جاری را دریافت می کند. |
UrlReferrer |
اطلاعاتی در مورد URL درخواست قبلی کلاینت را دریافت می کند که به URL جاری لینک شده است. |
UserAgent |
رشته خام user agent (عامل کاربر) مروگر کلاینت را دریافت می کند. |
UserHostAddress |
آدرس IP میزبان از کلاینت راه دور (remote) را دریافت می کند. |
UserHostName |
نام DNS کلاینت راه دور را می گیرد. |
UserLanguages |
آرایه رشته ای مرتب شده از تنظیمات language کلاینت را دریافت می کند. |
جدول زیر فهرستی از برخی از متدهای مهم را ارائه می دهد:
Method |
توضیحات |
BinaryRead |
عملیات خواندن باینری از تعداد مشخصی از بایت ها از stream ورودی جاری را انجام می دهد. |
Equals(Object) |
تعیین می کند که آیا شیء مشخص شده برابر با شیء جاری است (ارث برده شده از شیء) |
GetType |
نوع شیء نمونه جاری را دریافت می کند. |
MapImageCoordinates |
یک پارامتر فیلد تصویری از فرم ورودی را به مقادیر مناسب از مختصات x , y نگاشت می کند. |
MapPath(String) |
یک مسیر مجازی تعیین شده را به مسیر فیزیکی نگاشت می کند. |
SaveAs |
یک درخواست HTTP را در دیسک ذخیره می کند. |
ToString |
یک رشته ای را که شیء جاری را نشان می دهد ، باز می گرداند. |
ValidateInput |
موجب اعتبارسنجی برای مجموعه های قابل دسترسی از طریق خواص کوکی ها ، فرم ها و QueryString می شود. |
شیء Response
شیء Response پاسخ سرور به درخواست کلاینت را نشان می دهد و یک نمونه از کلاس System.Web.HttpResponse می باشد.
در ASP.NET ، شیء response نقش مهمی در ارسال کردن متن به کلاینت ایفا نمی کند ، زیرا کنترل های سمت سرور ، متدهای تودرتو و شیء گرا برای رندر کردن خود دارند.
با این حال ، شیء HttpResponse هنوز برخی از عملکردهای مهم مانند خصوصیت کوکی و متد Redirect() را فراهم می کند. متد Response.Redirect() ، اجازه انتقال کاربر به صفحه دیگری در داخل و خارج از برنامه کاربردی را فراهم می کند. این کار نیاز به یک round trip دارد.
خصیصه ها و متدهای شیء Response
جدول زیر برخی از خصیصه های مهم از شیء Response را ارائه می دهد:
Property |
توضیحات |
Buffer |
مقداری را دریافت کرده و تنظیم می کند که نشان می دهد آیا کار پردازش بافر کردن خروجی و ارسال آن پس از ارائه کامل پاسخ ، به اتمام رسیده است یا خیر. |
BufferOutput |
مقداری را دریافت کرده و تنظیم می کند که نشان می دهد آیا کار پردازش بافر کردن خروجی و ارسال آن پس از ارائه کامل صفحه ، به اتمام رسیده است یا خیر. |
Charset |
مجموعه ای از کاراکترهای HTTP از stream خروجی را دریافت کرده و تنظیم می کند. |
ContentEncoding |
مجموعه ای از کاراکترهای HTTP از stream خروجی را دریافت کرده و تنظیم می کند. |
ContentType |
نوع HTTP MIME از stream خروجی را دریافت کرده و تنظیم می کند. |
Cookies |
مجموعه کوکی response را دریافت می کند. |
Expires |
تعداد دقایقی را قبل از این که یک صفحه کش شده در یک مرورگر منقضی شود را دریافت کرده یا تنظیم می کند. |
ExpiresAbsolute |
زمان و تاریخ قطعی را که اطلاعات کش شده از حافظه پنهان حذف می شوند را دریافت کرده یا تنظیم می کند. |
HeaderEncoding |
شیء کد گذاری شده را که نشان دهنده کد گذاری برای stream (جریان) خروجی هدر جاری می باشد را دریافت کرده یا تنظیم می کند. |
Headers |
مجموعه ای از هدرهای پاسخ را دریافت می کند. |
IsClientConnected |
مقداری را که نشان می دهد آیا کلاینت هنوز به سرور متصل است را دریافت می کند. |
Output |
خروجی متن را برای stream پاسخ خروجی HTTP فعال می کند. |
OutputStream |
خروجی باینری را برای بدنه محتوا خروجی HTTP فعال می کند. |
RedirectLocation |
مقدار هدر HTTP Location را دریافت کرده یا تنظیم می کند. |
Status |
وضعیت خطی را که به کلاینت برگشت داده می شود را تنظیم می کند. |
StatusCode |
کد وضعیت HTTP از خروجی برگشت داده شده به کلاینت را دریافت کرده یا تنظیم می کند. |
StatusDescription |
رشته وضعیت HTTP از خروجی برگشت داده شده به کلاینت را دریافت کرده یا تنظیم می کند. |
SubStatusCode |
مقداری را که کد وضعیت پاسخ را تعیین می کند ، دریافت کرده یا تنظیم می کند. |
SuppressContent |
مقداری را دریافت کرده یا تنظیم می کند که نشان می دهد آیا محتوای HTTP به کلاینت ارسال می شود یا خیر |
جدول زیر فهرستی از برخی ار متدهای مهم را ارائه می دهد:
Method |
توضیحات |
AddHeader |
هدر HTTP را به جریان خروجی اضافه می کند. AddHeader برای سازگاری با ورژن های قدیمی تر ASP ارائه شده است. |
AppendCookie |
زیرساخت یک کوکی HTTP را به مجموعه کوکی حقیقی اضافه می کند. |
AppendHeader |
هدر HTTP را به جریان خروجی اضافه می کند. |
AppendToLog |
اطلاعات log سفارشی را به فایل log مربوط به IIS (InterNET Information Services) اضافه می کند. |
BinaryWrite |
یک رشته از کارامترهای باینری را در جریان خروجی HTTP می نویسد. |
ClearContent |
تمام محتوای خروجی را از بافر stream پاک می کند. |
Close |
اتصال سوکت به یک کلاینت را می بندد. |
End |
تمام خروجی های بافر شده را به کلاینت ارسال می کند ، اجرای صفحه را متوقف می کند ، رویداد EndRequest را ایجاد می کند. |
Equals(Object) |
تعیین می کند که آیا شیء مشخص شده برابر با شیء جاری هست یا نه. |
Flush |
تمام خروجی بافر شده فعلی را به کلاینت ارسال می کند. |
GetType |
نوع نمونه جاری را دریافت می کند. |
Pics |
یک هد HTTP PICS-Label به جریان خروجی ضمیمه می کند. |
Redirect(String) |
یک درخواست را به یک URL جدید هدایت کرده و URL جدید را تعیین می کند. |
Redirect(String, Boolean) |
کلاینت را به یک URL جدید هدایت کرده و URL جدید را تعیین می کند و مشخص می کند که آیا اجرای صفحه جاری خاتمه یابد یا نه. |
SetCookie |
یک کوکی موجود را در مجموعه کوکی به روز رسانی می کند. |
ToString |
یک String را که نشان دهنده شیء جاری است ، بر می گرداند. |
TransmitFile(String) |
فایل مشخص شده را به صور مستقیم در جریان خروجی پاسخ HTTP می نویسد ، بدون این که آن را در حافظه بافر کند. |
Write(Char) |
یک کاراکتر را در جریان خروجی پاسخ HTTP می نویسد. |
Write(Object) |
یک شیء را در جریان پاسخ HTTP می نویسد. |
Write(String) |
یک رشته را در جریان خروجی پاسخ HTTP می نویسد. |
WriteFile(String) |
محتواهای فایل تعیین شده را به طور مستقیم در یک جریان خروجی پاسخ HTTP به عنوان یک فایل block می نویسد. |
WriteFile(String, Boolean) |
محتواهای فایل تعیین شده را به طور مستقیم در یک جریان خروجی پاسخ HTTP به عنوان یک حافظه block می نویسد. |
مثال
مثال ساده زیر ، یک Text box control دارد که کاربر می تواند نامی را در آن وارد کند ، یک کلید برای ارسال اطلاعات به سرور ، و یک label control برای نمایش دادن URL کامپیوتر کلاینت دارد.
محتوای فایل به شرح ذیل است:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="server_side._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Enter your name:
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
<br />
<asp:Label ID="Label1" runat="server"/>
</div>
</form>
</body>
</html>
کد پشت صحنه Button1_Click به شرح ذیل است:
protected void Button1_Click(object sender, EventArgs e) {
if (!String.IsNullOrEmpty(TextBox1.Text)) {
// Access the HttpServerUtility methods through
// the intrinsic Server object.
Label1.Text = "Welcome, " + Server.HtmlEncode(TextBox1.Text) + ". <br/> The url is " + Server.UrlEncode(Request.Url.ToString())
}
}
صفحه را برای دیدن خروجی حاصل شده ، اجرا می کنیم:
این فصل در یک نگاه:
در این فصل پس از بررسی سیستم مسیریابی و طراحی صفحه نمایش ویدیو ها، به سراغ پنل کاربری خواهیم رفت و مباحث Model Binding و…
توجه: این دوره آموزشی به صورت پیوسته بر اساس آخرین نسخه ی ASP.NET Core بروزرسانی خواهد شد. آموزش صفر تا صد طراحی سایت اشتراک ویدیو مشابه آپارات با استفاده از ASP.NET CORE MVC 3.0 و V…این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه قصد داریم تا فروشگاه اینترنتی دیجی کالا رو با Asp.Net Core3 پیاده سازی کنیم. ابتدا طراحی قالب دیجی کالا رو به صورت کامل انجام خواهیم داد. در مرحله میریم …این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه آموزشی، با استفاده از جدیدترین تکنولوژی ها و ابزار های مایکروسافت (دات نت)، به یک پروژه جذاب مدیریت آگهی مشابه دیوار می پردازیم. این آموزش در دو بخش کلی و…این فصل در یک نگاه:
در این دوره به آموزش صفر تا صد جدیدترین نسخه ASP یعنی CORE جدیدترین ورژن خواهیم پرداخت.این آموزش از سطح مقدماتی تا فوق …
دوره آموزش کامل طراحی وب به همراه پروژه ساخت سیستم مدیریت کتابخانه این دوره با کور 1 آغاز می شود و در ادامه پروژه به کور 2 تبدیل می شودو پروژه نهایی (سیستم مدیریت کتابخانه) با Asp.net کور…این فصل در یک نگاه:
ساخت محیط کاربریآموزش نحوه ی ارسال ایمیل در Asp.net MVCآموزش تنظیمات Gmail برای استفادهاستفاده از Yahooاستفاده از سرویس …
به نام خدا... در خدمتتون هستم با آموزش ارسال ایمیل در Asp.net MVC... ارسال ایمیل یکی از اجزای اصلی ییک سایت به شمار می رود و واقعا سایتی که برای اجزای مختلفش همانند ثبت کاربر جدید و یا ارسال…این فصل در یک نگاه:
فصل دوم در یک نگاه:فصل دوم در یک نگاه:…
در این پکیج به مبحث طراحی وب ، در قالب ساخت یک سایت فروشگاهی 5040 به آدرس http://5040.ir می پردازیم که به جرات مشهورترین و یکی از برترین فروشگاه های مجازی در کشور است. در این مجموعه قصد داری…این فصل در یک نگاه:
…
در این دوره آموزشی، وبسایت ورزش3 را با استفاده از ASP.NET Core پیاده سازی می کنیم و همچنین اپ اندروید آن را هم با Xamarin متصل به سرور سایت طراحی و در نهایت نحوه انتشار آن در مارکت هایی مثل …این فصل در یک نگاه:
کاملترین آموزش هاست و کار با سی پنل.در هنگام خرید سرویس هاست کلمه ای به نام “کنترل پنل” را زیاد خواهید دید آیا تا به حال…
سی پنل یک کنترل پنل هاست محبوب و معروف در جهان و ایران است. در فیلم آموزش سی پنل هم توصیه اکید شده تا افراد مبتدی و حتی افراد حرفه ای از این کنترل پنل هاست سی پنل استفاده کنند. آموزش cpanel …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…این فصل در یک نگاه:
رشد و درآمدزایی یک وب سایت یا کسب و کار اینترنتی کاملا به ذوق و مهارت وب مستر یا همان مدیر اصلی وب سایت گره خورده و متاس…
اصول مدیریت وب سایت برای وب مستر شدن برای موفقیت یک وب سایت لازم الاجراست. زیرا شما دوست دارید وب سایت خود را به کارخانه پولسازی تبدیل کنید. این واقعیت رویا نیست. هرکس این اصول را بداند به …