اينترنت تقريباً مجاني !!!!!

User name :20           Password :20             Dial number : 9092303230  حالا وصل شو

حال كن    ساعتی ۳۰۰ تومان   البته شايد پولش رو قبض بياد ولي تا جاييكه تو سايتش نوشته بود دقيقه اي 5 تومان است

بدست آوردن IP كسي كه با او در حال چت هستيد

شما مي دانيد كه اولين قدم براي هك بدست آوردن آي پي است . به همين دليل براي بدست آوردن آي پي ديگران اين ترفند خيلي بدرد بخور است ...  (آخه من نمي دونم شما چرا اينقدر عشق هك هستيد ... فكر كنيد يكي شما رو هك كنه ، مي بينيد چقدر اونجاتون مي سوزه . آخه من تاحالا هك شدم . به خاطر همين دارم اينو ميگم ))  خوب بيخيال ... ادامه داستان: براي اين كه آي پي شخصي را بخواهيم پيدا كنيم بايد ابتدا با او در يك پنجره يا همون ((Room)) در حال چت باشيد . حالا در همين هنگام وارد Start بعد Run…  شده و در كادر سفيد رنگ عبارت Cmd را تايپ كنيد . در پنجره باز شده (همون Dos) عبارت

Netstat –n را تايپ نماييد . چند تا آي پي ظاهر مي شود . آي پي هايي كه در سمت چپ نشان داده شده اند ، آي پي هاي خودمان هستند . نكته : آي پي هايي كه ارقام آخر آنام 80 و يا 5050 هستند مختص سايت ياهو هستند و بقيه آي پي ها ، آي پي هايي هستند كه با آنها در حال چت هستيد .

روش بدست آوردن IP خود

هنگامي كه به شبكه اينترنت متصل مي شويد آيكوني در پايين صفحه نمايش داده مي شود كه تصوير دو كامپيوتر چشمك زن وجود دارد . اين بدان معنا است كه كامپيوتر شما به اينترنت متصل است .  شما بايد روي اين آيكون  دابل كليك كرده و سربرگ دوم را انتخاب كنيد . در سطر آخر يكي IP شما و ديگري IP سرورتان است . توجه : آي پي سرور هميشه ثابت است .


ده دلیل اصلی هک شدن سایت ها

هکرها معمولا از نواقص و عدم رعایت نکات امنیتی توسط طراحان سایتها و برنامه نویسان جهت نفوذ به سایتها استفاده میکنند مواردی که با کمی دقت قابل پیش بینی و رفع هستند. در ادامه به برخی از مهمترین نواقص و موارد رایج در هک سایتها در سالهای اخیر اشاره شده است.

1. Cross site scripting یا XSS
این مشکل زمانی ایجاد می شود که اطلاعات ارسالی بین کاربران و سایت بدون بررسی و اعتبار سنجی لازم توسط نرم افزار سایت صورت گیرد. در این حالت هکرها میتوانند اسکریپتهایی را همراه اطلاعات به نرم افزار سایت تزریق کنند و این اسکریپتها هنگام نمایش اطلاعات در مرورگر دیگر کاربران سایت اجرا شده و مشکلاتی همچون سرقت اطلاعات نشست (Session) و دسترسی به اختیارات و اطلاعات دیگر کاربران و یا تغییر در صفحات سایت را ایجاد کند.

2.Injection flaws
در این شیوه هکر به همراه بخشی از اطلاعات یا پارامترهای ارسالی به سایت دستورات غیر مجازی که امکان خواندن،تغییر یا حذف یا درج اطلاعات جدید را فراهم میکند نیز تزریق میکند.یکی از معمول ترین این روشها SQL Injection است که امکان تغییر در اطلاعات و جداول بانک اطلاعاتی یا تغییر در درخواستها از بانک اطلاعات (مانند تعیین اعتبار کاربر و کلمه) را امکان پذیر میکند.

3.Malicious file execution
این مسئله به هکر ها اجازه اجرای برنامه یا کدی را میدهد که امکاناتی در تغییرات یا مشاهده اطلاعات یا حتی تحت کنترل گرفتن کل نرم افزار سایت یا سیستم را میدهد. این مشکل در سایتهایی که امکان ارسال فایل را به کاربران بدون بررسی ماهیت اطلاعات را می دهد اتفاق می افتد (مثلا ارسال یک اسکریپ PHP یا ASP به جای فایل تصویری توسط کاربر)

4.Insecure direct object reference
این مشکل عموما در دستکاری پارامترهای ارسالی به صفحات یا اطلاعات فرمهایی هست که بصورت مستقیم به فایل، جداول اطلاعاتی،فهرستها یا اطلاعات کلیدی اتفاق می افتد و امکان دسترسی یا تغییر فایلهای اطلاعاتی دیگر کاربران را ایجاد میکند. (مانند ارسال کد کاربر یا نام فایل مخصوص او بصورت پارامتر در آدرس صفحه که با تغییر آن امکان دسترسی یا تغییر در اطلاعات کاربر دیگری وجود خواهد داشت)

5.Cross site request forgery
در اینگونه حملات هکر کنترل مرورگر قربانی را یدست آورده و زمانی که وی وارد سایت (login) شده درخواستهای نادرستی را به سایت ارسال می کند. (نمونه آن چندی پیش دز سایت myspace اتفاق افتاده بود و هکری با استفاده از یک کرم اینترنتی پیغامی را در میلیونها صفحه کاربران این سایت نمایش داد)

6.Information leakage and improper error handling
همانطور که از نام این مشکل مشخص است زمانی که در خطاهای نرم افزار سایت به شکل مناسبی مدیریت نشوند در صفحات خطا اطلاعات مهمی نمایش داده شود که امکان سوء استفاده از آنها وجود داشته باشد.(نمونه ای از همین مشکل چندی پیش برای یکی از سایتهای فارسی نیز بوجود آمد و اطلاعات کاربری و کلمه عبور اتصال به بانک اطلاعات در زمان خطا نمایش داده می شد و باعث سوء استفاده و تغییر اطلاعات کاربران این سایت شد )

7.Broken authentication and session management
این مشکل در زمانی که نشست کاربر (Session) و کوکی اطلاعات مربوط به ورود کاربر به دلایلی به سرقت می رود یا به دلیلی نیمه کاره رها می شود ایجاد می شود. یکی از شیوه های جلوگیری از این مشکل رمز نگاری اطلاعات و استفاده SSL است.

8.Insecure cryptographic storage
این مشکل نیز چنانچه از عنوان آن مشخص است بدلیل اشتباه در رمزنگاری اطلاعات مهم (استفاده از کلید رمز ساده یا عدم رمز نگاری اطلاعات کلیدی) است.

9.Insecure communications
ارتباط ناامن نیز مانند مشکل قبلی است با این تفاوت که در لایه ارتباطات شبکه است.هکر در شرایطی میتواند اطلاعات در حال انتقال در شبکه را مشاهده کند و از این طریق به اطلاعات مهم نیز دست پیدا کند. همانند مشکل قبلی نیز استفاده از شیوه های رمزنگاری و SSL راه حل این مشکل است.

10.Failure to restrict URL access
برخی از صفحات سایتها (مانند صفحات بخش مدیریت سایت) می بایست تنها در اختیار کاربرانی با دسترسی خاص باشند.اگر دسترسی به این صفحات و پارارمترهای ارسالی آنها به شکل مناسبی حفاظت نشده باشد ممکن است هکرها آدرس این صفحات را حدس بزنند و به نحوی به آنها دسترسی پیدا کنند.

آموزش هك سايتهای Php Nuke

سلام خدمت تمامی دوستان خیلی ها دوست دارن سایت هک کنن ولی به علتهای مختلف یا نمیتونن وقت بزارن روش یا سایت امنیتش بالاست یا فرد دانش هک کردن رو نداره و...به نظر من ساده ترین راه هک کردن و دیفیس کردن سایتها استفاده از باگ های phpnuke هست که به شما اجازه میده به ساده ترین راه به سایت نفوذ کنید..من برای شما دوستان میخوام چند تا باگ جدید رو بزارم تا ازشون استفاده کنین. برای شروع به گوگل برید (www.google.com) و بعد باید دنبال سایت هایی که از سیستم phpnuke استفاده میکنن بگردید , شاید بگید چه جوری؟ برای این کار کافیه این نوشته رو کپی و پیست کنید. كد: modules.php?name=Downloadsاین ماژول در تمامی ورژن های php nuke وجود داره. خوب بعد از این کار گوگل کلی سایت که از سیستم phpnuke استفاده میکنن میاره برید رویه یکی از لینکها کلیک کنید وقتی سایت باز شد باید ببینید که شاخه phpnuke چیه ممکنه به این شکلها باشه: كد: http://www.sitename.com/phpnuke/mod...?name=Downloads www.sitename.com/html/modules.php?name=Downloads http://www.sitename.com/portal/modu...?name=Downloads www.sitename.com/modules.php?name=Downloadsبرای اینکه بتونیم از این روش سایتها رو هک کنیم باید فایل admin.php رو سایت باشه برای اینکه بدونین هست یا نه كد: modules.php?name=Downloadsاینو پاک کنین و جاش بنویسید admin.php مثلآ: كد: www.sitename.com/admin.phpاگه صفته وارد کردن نام کاربری و پسورد اومد یعنی وجود داره و اگه هم با Error برخورد کردید معلوم میشه که مدیر سایت فایل admin.php رو برداشته. اگه admin.php بود که به مرتله بعدی میرید اگر هم نبود اون سایت رو بی خیال شید.خوب تالا ما فرض میکنیم که admin.php وجود داره.من به شما چند تا باگ میدم که از طریق اونا شما بتونین به سیستم مدیریت سایت نفوذ کنید و به راتتی بتونین سیستم مدیریت سایت رو به دست بگیرید.شما برای اجرای این کد ها Notepad رو باز کنید کد رو داخلش بنویسید و از منویه File گزینه Save As.. رو انتخاب کنید و هر کجا که میخواین با نام دلخواه تون Save کنید البته بعد از اینکه نام فایل رو نوشتید پسوند اونو .HTML بزارید.بعد فایلتونو داخل Notepad باز کنید و به جای [sitename] آدرس سایتی رو که میخواین هک کنین رو بنویسید.کد اول: با استفاده از این میتونین داخل سایت یه کاربر با امکانات ادمین سایت ایجاد کنید و سپس وارد سیستم مدیریت سایت بشید و سایت رو هک کنید. كد:
USERNAME: NOME: PASSWORD: E-MAIL: کد دوم: با این کد میتونین یه خبر رو بدونه ورود به سیستم مدیریت به سایت بفرستید.كد:
TITLE: CONTENT: DATE: E-MAIL:
کد سوم: این کد هم تقریبآ مثل کد بالا عمل میکنه. كد:
TITLE: CONTENT:
خوب اینم از آموزش هک کردن سایتهای popnuke از این روش امیدوارم به کارتون بخوره راستی اگه می خواین سایت های ایرانی که از php nuke استفاده می کنند را پیدا کنید کافیهبه googel برید و عبارت Farsi project by PHP-Nuke را بنویسید .

افزايش كارايي هاردهاي IDE

امروزه بيشتر افراد از هاردهاي با ظرفيت بالا استفاده ميكنند. اگر شما يك هارد درايو IDE داريد ميتوانيد كاري كنيد كه بهترين كارايي را از آن داشته باشيد. همان طور كه ميدانيد اين هاردها ازدسترسي DMA پشتيباني ميكنند. DMA به هارد اين امكان را ميدهد كه در هنگام كار با برنامه هاي مختلف فشار كمتري به حافظه سيستم وارد آيد و قسمتي از هارد به كمك حافظه ميايد. با اين كار سرعت كار و كارايي هارد بسيار بالا ميرود همچنين فشار وارد بر CPU را نيز كاهش ميدهد.

براي فعال كردن اين قسمت ابتدا وارد Device Manager شده و در ليست گزينه IDE ATA/ATAPI Controllers را انتخاب كنيد.

پس در زير شاخه آن گزينه Primary IDE Channel را انتخاب كنيد و روي آن دابل كليك كنيد.

وارد قسمت Advanced Settings شده و در قسمت زير آن تنظيمات Device 0 و Device 1 را مشاهده كنيد.

اگر جلوي Transfer Mode عبارت PIO Only نوشته شده بود از طريق ليست كشويي آن را به DMA if available تغيير دهيد و روي OK كليك كنيد.


حال همين مراحل را براي Secondary IDE Channel نيز تكرار كنيد.

سپس در صورت نياز سيستم خود را Restart كنيد.

خيلي ها فكر ميكنند كه با انجام همين مراحل كار تمام ميشود. اما در اينجا يك نكته ظريف ديگر نيز وجود دارد كه بايد رعايت شود. در كانالهاي IDE قسمتي وجود كه UDMA/66 ناميده ميشود. اين گزينه در حالت معمول غير فعال است. با فعال كردن اين قسمت ميتوان كارايي DMA را بسيار بيشتر كرد.

براي فعال كردن اين قسمت مراحل زير را دنبال كنيد:

ابتدا از طريق Run وارد Regedit شده و كليد زير را بيابيد:


HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Class/4D36E96A-E325-11CE-BFC1-08002BE10318

سپس در صفحه سمت چپ به دنبال کليد Enableudma66 بگرديد سپس به آن مقدار يک را اختصاص بدهيد. اگر وجود نداشت يک کليد از نوع DWORD به همان نام بسازيد و به آن مقدار 1 را براي فعال سازي اختصاص دهيد (براي عيرفعال کردن مي توانيد از مقدار صفر استفاده کنيد).

فعال بودن اين قسمت کارايي هارد را بسيار افزايش مي دهد؛ بنابراين توصيه ميکنيم حتما اين کار را انجام دهيد.

برطرف نمودن مشكلات مادربرد

در بیشتر موارد مادربرد برای مشکلاتی که ناشی از قطعات دیگر است مقصر شناخته می شود. معمولأ مشکلات مربوط به مادربرد کمتر پیش می آید (البته این موضوع برای بازار فعلی ایران خیلی صدق نمی کند)، بنابراین باید مشکل اصلی را پیدا کرد. در اینجا چندین ترفند را به شما معرفی خواهیم کرد که از مادربرد رفع اتهام می کند.
آیا حداقل چیزهای که برای بوت شدن کامپیوتر لازم است وجود دارند؟
حداقل اجزا برای بوت شدن عبارتند از: یک مادربرد، پروسسور، مقدار کافی حافظه (RAM)، یک کارت گرافیک و درایو برای بوت شدن اگر یکی از این اجزا موجود نباشد سیستم شما کار نخواهد کرد.

آیا همه این اجزا به درستی متصل شده اند؟
در موقع بروز اشکال ابتدا سعی کنید قطعات را یک به یک جایگزین کنید تا به قطعه مشکل دار برسید.

آیا جامپرها به درستی قرار گرفته اند؟
شما باید جامپرها را برای نوع، سرعت، ولتاژ و سرعت باس CPU و دیگر مشخصات آن در جای خود قرار دهید. هر چند تعداد زیادی از مادربردهای امروزی به طور اتوماتیک این کار را انجام می دهند. همیشه دستور العمل (دفترچه همراه) مادربرد را بخوانید و در نظر داشته باشید اگر تغییراتی در BIOS سیستم انجام داده اید آن را به حالت DEFAULT برگردانید.

آیا منبع تغذیه مشکل ندارد؟
اگر شما قطعه ای را ارتقا داده اید یا قطعه ای را به سیستم اضافه کرده اید ممکن است توان منبع تغذیه برای شما برای تأمین توان مورد نیاز قطعه جدید کافی نباشد. توان معمول برای کامپیوتر معمولی 250 الی 300 وات می باشد.

عیب یابی اجزای دیگر کامپیوتر:
در اینترنت جستجو کنید و ببینید آیا مادربردهای از خانواده مادربرد شما مشکل خاصی ندارد؟ وب سایت کارخانه سازنده را چک کنید و ببینید آیا هیچ تغییرات و UPDATE ای برای مادربرد شما در نظر گرفته شده است؟

مشکلات صفحه کلید
اگر پیغام خطایی ناشی از پیدا نشدن صفحه کلید دریافت کردید ابتدا مطمئن شوید صفحه کلید به خوبی متصل شده است ، چیپهای کنترلر کیبورد را امتحان کنید اگر به نظر می رسید که آنها صدمه دیده اند ممکن است احتیاج به تعویض چیپها یا کل مادربرد داشته باشید.

مشکلات CMOS
در شرایط به خصوص ممکن است لازم باشد که CMOS را پاک کنید بعضی مواقع که شما برای بوت شدن سیستم کلمه عبور (Password) تعیین کرده اید و آنها را فراموش کرده اید یا بعضی مواقع BIOS را به گونه ای تنظیم کرده اید که مشکلاتی برای سیستم بوجود آورده و نمی توانید آن را درست کنید این راه مفید است.
در بعضی مادربردها پاک کردن حافظه CMOS مادربرد باعث دردسر است زیرا تنظیم دوباره آن مشکل است و شاید به یاد آوردن کلمه عبور راحت تر باشد ولی در مادربردهای امروزی معمولأ این مشکل کمتر است.
چند راه برای پاک کردن حافظه CMOS وجود دارد؛ بعضی از مادربردها جامپرهایی برای پاک کردن CMOS دارند که احتمالأ در دستور العمل استفاده از مادربرد به آن اشاره شده است. جامپر را یک لحظه برداشته و دوباره سر جایش بگذارید و CMOS پاک می شود. در زمان انجام این کار مطمئن شوید که سیستم شما از تغذیه برق جدا شده است و بنابراین هیچ ولتاژی روی مادربرد نیست. راه طولانی تر این است که باطری سیستم را از محل خود خارج کنید این عمل باید دو روزی طول بکشد راه غیر ایمن و سریعتر این است که بعد از برداشتن باتری مثبت و منفی جایگاه باتری را بوسیله یک سیم به یکدیگر متصل کنید. سپس دوباره آن را در جای خود قرار دهیید اگر باطری مادربرد شما قابل برداشتن نیست باید با نمایندگیهای مادربردتان تماس بگیرید.

زمان و تاریخ در سیستم به درستی نمایش داده نمی شود تنظیمات به هم ریخته یا خطای Dead Battery دریافت می کنید:
رفع این اشکال ساده است عمر باطری تمام شده است و باید آن را عوض کنید.

من نمی توانم وارد Setup کامپیوتر شوم:
هر کامپیوتری کلیدهای بخصوصی برای وارد شدن به Setup را دارد و این به سازنده BIOS و نسخه آن بستگی دارد. اما بلافاصله بعد از روشن کردن کامپیوتر کلیدهایی که برای وارد شدن به SETUP لازم است را می توانید ببینید. در بیشتر مواقع این اطلاعات در پایین صفحه مانیتورتان قابل نمایش است و معمولاً‌به این صورت نمایش داده می شود:
press -------- to enter setup یا ------ is the key to hit

من تغییراتی در تنظیمات CMOS داده ام ولی این تغییرات اعمال نمی شود:
در زمان خروج از CMOS setup مطمئن شوید که گزینه Save and exit را انتخاب کرده و کلید Enter را فشار دهید. در صورتی که شما گزینه Exit without saving را انتخاب کرده باشید با این مشکل مواجه می شوید.

آیا وضع ظاهری مادربرد مشکلی ندارد؟ هیچگونه شکستگی یا پینهای خم شده وجود ندارد؟ مادربرد شکسته است؟

اگر مادربرد خمیده شده است آن را به حالت اول برگردانید. ولی اگر مادربرد واقعاً شکسته است کاری نمی توانید بکنید و باید یک مادربرد جدید بخرید.

ip چیست؟

شماره‌ ايست که به هر کامپيوتر متصل به اينترنت داده می‌شود تا بتوان به‌کمک آن شماره به آن کامپيوترها دسترسی داشت. اين عدد برای کامپيوترهايی که حالت سرور دارند (مثلا سايت‌ها) و نيز کامپيوتر‌های کلاينتی که معمولا به روشی غير از شماره‌گيری Dial-up به اينترنت وصل هستند،عددی ثابت و برای ديگران عددی متغير است. مثلا هر بار که شما با شرکت ISP خود تماس گرفته و به اينترنت وصل می‌شويد، عددی جديد به شما نسبت داده می‌شود. اين عدد يک عدد ۳۲ بيتی (۴ بايتی) است و برای راحتی به‌صورت زير نوشته می‌شود xxx.xxx.xxx.xxx که منظور از xxx عددی بين ۰ تا ۲۵۵ است . مثلا ممکن است آدرس شما به صورت 195.219.176.69 باشد. که برای اتصال استفاده می‌کنيد، در نهايت بايد به يک ip تبديل شود، تا شما سايت ياهو را ببينيد. حتی اسم‌هايی در ip معمولا xxx اولی معنای خاصی دارد، فقط اين را بگويم که اگر به روش Dial-up به اينترنت وصل شويد، معمولا عددی که به عنوان اول می‌گيريد، مابين 192 تا 223 خواهد بود.اين توضيح برای تشخيص کامپيوترهای کلاينت از سرور (حداقل در ايران) بسيار می‌تواند مفيد باشد.

مخفی کردن IP

برای این کار:

1- ابتدا از منوی Start به Run رفته و در محیط Run عبارت MMC را تایپ نمایید.

2- در محیط جدید ، از منوی File به قسمت Add/Remove Snap-in بروید.

3- در پنجره باز شده بر روی دکمه Add کلیک کنید.

4- در پنجره جدید ، بر روی IP Security Policy Management کلیک کرده و دکمه Add را بزنید.

5- سپس Finish را زده و خارج شوید.

6- در پنجره قبلی بر روی Ok کلیک کنید.

7- حال در همان محیط اولیه هستید. در حال حاضر آیکون کناری عبارت IP Security PolicyManagement زرد رنگ است. اکنون میبایست یکبار بر روی آن کلیک کنید تا رنگ آن به سبز تغییر پیدا کند.

8- در پایان از منوی File به Exit رفته و با انتخاب Yes این عملیات را ذخیره کنید.

ارسال ایمیل در ASP.NET با استفاده از HTML Template

آیا تاکنون سعی کرده اید برای سایت خود خبرنامه ایجاد کنید؟ آیا تاکنون وسوسه شده اید که سیستمی طراحی کنید که در صورتی که بینندگان سایت شما نظرات خود را در سایت شما وارد کنند برای آنها یک Email تشکرآمیز ارسال کنید؟ آیا می دانید ساختن یک HTML Template زیبا برای خبرنامه شما و استفاده همیشگی از آن جهت ارسال خبرنامه در ASP.NET بسیار ساده صورت می گیرد؟ چنانچه سوالات بالا شما را به دانستن بیشتر ترغیب کرده است به شما تبریک می گویم! چرا که در ادامه این مقاله شما روش بسیار ساده ارسال Emailهای HTML زیبا را بدون اینکه نگران چگونگی کدنویسی HTML متغیر رشته ای Body در MailMessage باشید را فرا خواهید گرفت.
برای شروع بیایید به روش کار نظری بیاندازیم: خوب احتمالا شما با روش ساختن یک نمونه از آبجکت MailMessage که در ASP.NET برای ارسال Email استفاده می شود آشنایی دارید (اگر این چنین نیست در ادامه مقاله به طور اجمالی توضیحاتی ارائه شده است) تنها قسمتی که باید مورد توجه قرار دهید این است که چگونه می توانیم Body نامه خود را به فرمت HTML و بدون نیاز به اینکه تمامی تگها را پشت سر هم در یک رشته طولانی و سردرگم کننده تایپ کنیم، درآوریم. یک ایده جالب این است که ما Template نامه خود را با استفاده از ادیتورهای WYSIWYG مثل FrontPage یا Dreamweaver طراحی کنیم و سپس تمامی کدهای HTML آن را درون یک متغیر رشته ای Import کرده و از آن استفاده کنیم. این کار بسیار آسان است. اما می توان این نامه را برای هر کاربر کمی سفارشی (Customize) کرد! برای مثال شما می توانید در ابتدای نامه کاربر را با نام وی مورد خطاب قرار دهید. بهتر است از این پس توضیحات را همراه با کدنویسی دنبال کنیم. (کلیه کدهای Server Side به زبان VB.NET نوشته شده است) سه گام اساسی برای این کار وجود دارد:
1- ساختن Template مورد نظر شما جهت ارسال Email:
برای این کار کافی است که Template مورد نظر خود را به فرمت HTML طراحی کنید. این به خود شما بستگی دارد که کدهای HTML را به صورت دستی بنویسید و یا از ادیتورهای WYSIWYG مانند FrontPage یا Dreamweaver یا !GoLive استفاده کنید. تنها تفاوتی که در اینجا وجود دارد این است که شما بایستی قسمتهایی از متن نامه خود را که متغیر هستند (مانند نام گیرنده Email، آدرس پست الکترونیکی وی و ...) را به گونه ای از بقیه قسمتها متمایز کنید. برای مثال اگر شما می خواهید در ابتدای نامه، دریافت کننده نامه را با نام خود مورد خطاب قرار دهید عبارت را به صورت زیر وارد کنید: "سلام "#NAME# لطفا توجه کنید که هیچ محدودیتی در تکنیک به کار رفته وجود ندارد و قرار دادن کاراکترهای ## فقط جهت متمایز ساختن این قسمت از محتوای استاتیک صفحه است و شما می توانید به صور دیگر آن را مشخص کنید مثلا ?NAME? یا هر چیز مشابه دیگر. این قسمت بعدا با نام شخص مورد نظر ما جایگزین می شود. نکته قابل ذکر دیگر اینکه چنانچه قصد دارید نامه خود را فارسی ارسال کنید تگ زیر را فراموش نکنید:

2- خواندن فایل Template جهت قراردادن در Body نامه شما:
پس از اینکه Template را آماده نمودید بایستی این فایل را بخوانید، قسمتهای مورد نظر (متمایز شده با ##) را با عبارات مورد نظر خود (که می توانید از Database استخراج کنید) جایگزین کنید و این متن را به صورت یک متغیر رشته ای در Body نامه خود قرار دهید (گام 3). این کار به وسیله کد زیر صورت می پذیرد: (قبل از هر چیز شما بایستی Namespace مورد نیاز که در اینجا System.IO می باشد را Import کنید)
Imports System.IO
Dim reader As StreamReader
Dim strFileName As String = Server.MapPath("templatel.htm")
Dim strFileText
reader = File.OpenText(strFileName)
While reader.Peek <> -1
strFileText += reader.ReadLine()
End While
reader.Close()
strFileText = Replace(strFileText, "#Username#", Name.Text)
strFileText = Replace(strFileText, "#MsgID#", Request("MsgID"))
strFileText = Replace(strFileText, "#AuthorID#", Request("AuthorID"))
حال بیایید نگاهی به کد فوق بیاندازیم: در سطر اول شما یک شی از نوع StreamReader که جهت خواندن فایلهای متنی به کار می رود را می سازید و در سطر بعدی مسیر فیزیکی فایل Template خود را در متغیر رشته‌ای strFileName ذخیره می کنید.
نکته: در صورتیکه بخواهید در فایل کلاس خود از کد فوق استفاده کنید بایستی مسیر فیزیکی فایل را با استفاده ازSystem.Web.HttpContext.Current.Server.MapPath("template.htm") به دست آورید. اما در Code Behind یک WebForm همان Server.MapPath() کافی است.
سپس در سطر بعدی ما با استفاده از متد OpenText فایل مورد نظر را باز کرده و متن آن را در Reader قرار می دهیم. حال در یک حلقه While...End While سطر به سطر فایل Template را (که در اینجا کدهای HTML ما هستند) می خوانیم و در متغیر strFileText ذخیره می کنیم. Reader.Peek <> -1 بررسی می کند که آیا به انتهای فایل رسیده ایم یا خیر. پس از اینکه کل فایل را خوانده و در متغیر ذخیره کردیم. شی reader را می بندیم.
در اینجا شما باید Template نامه خود را برای کاربر خاص Customize کنید. یعنی عبارات محصور شده با ## را با اطلاعات کاربر (که از بانک اطلاعاتی استخراج می شود و یا از یک Query String دریافت می شود) جایگزین کنید. در مثال بالا مقدار اول در Template با مقدار یک Textbox و دو مورد بعدی با Query String های انتهای یک URL جایگزین می شود.
حاصل کار یک متغیر رشته ای به نام strFileText است که حاوی کد HTML مورد نیاز شما برای ارسال یک HTML Email می باشد. که مثلا عبارت ابتدای آن به صورت زیر در آمده است: "سلام مهدی"
3- استفاده از قالب Import شده فوق و ارسال Email:
حال به آسانی Email را ساخته و ارسال می کنیم. بدین ترتیب: (Imports System.Web.Mail را فراموش نکنید!)
'Creating and sending mail to user
Dim objMail As New MailMessage()
objMail.From = "You@YourDomain.com"
objMail.To = Email.Text.Trim
objMail.Subject = "YOUR SUBJECT GOES HERE..."
objMail.BodyFormat = MailFormat.Html
objMail.BodyEncoding = System.Text.Encoding.UTF8
objMail.Body = strFileText
SmtpMail.SmtpServer = "smtp.YOURSERVER.com"
SmtpMail.Send(objMail)
این قسمت نیاز به توضیخ چندانی ندارد. جز اینکه objMail.To را بایستی به صورت داینامیک (از DB و ...) تغییر دهید (در اینجا مقدار از یک Textbox دریافت شده است)، SMTP Server خود را مشخص کنید و Email را ارسال کنید! به همین سادگی. بقیه موارد بسیار واضح هستند.
لطفا به این نکته توجه کنید که برخی SMTP Serverهایی که نیاز به Authentication دارند را نمی توان برای این منظور (ارسال Email به آدرس های خارج از SMTP Server فوق) مورد استفاده قرار داد. در این خصوص لطفا به Administrator سرور خود رجوع کنید.

مقدمه و معرفي 
در اين دوره ي آموزشي ، فرض ما بر اين است كه شما دوستان با html و تا حدي هم اسكريپت نويسي (vbs و js) آشنا هستيد و احتمالا صفحات وبي را هم طراحي نموده ايد . قصد ما اين است كه شما را با تكنولوژي asp كه كاربرد فراواني در طراحي سايتها و صفحات حرفه اي تر دارد آشنا كنيم . پس از مطالعه ي اين دوره شما ميدانيد ASP چيست چه كاربردي دارد و چگونه مي توانيد يك برنامه ي كاربردي (يك سايت) بنويسيد كه از اين تكنولوژي استفاده مي كند . صفحات سرويس دهنده فعال(Active Srerver Pages) يك تكنولوژي در زمينه برنامه نويسي در سرويس دهنده ها مي باشد كه توسط شركت مايكروسافت براي ايجاد صفحات HTLM پويا در اينترنت وشبكه هاي داخلي (interanet)طراحي شده است .
 ASP  چيست ؟بر خلاف HTML ،  ASP يك زبان نيست ، يك برنامهُ كاربردي مثل FrontPage  يا Word‌ هم نيست ؛ بلكه ASP يك تكنولوژي براي ساخت صفحات وب پويا است .ASP بر اين اساس بنا شده است كه با  HTML براي ايجاد صفحات وب پويا استفاده شود. در حقيقت ASP‌ كدهاي HTML را ايجاد مي نمايد. به طور كلی يك صفحهُ ASP‌ از سه قسمت زير تشكيل ميشود : (SomePage.asp)
1) متون ساده ای كه به طور مستقيم در صفحة نمايش نشان داده مي شوند .
2) كد های  HTML كه براي مرورگرچگونگی نمايش متن را تعيين می كنند. اين كدها بين دو علامت < > قرار می گيرند و در سمت سرويس گيرنده اجرا می شوند و به آنها تگ گفته مي شود .
3) معمولاً قسمتی هم كد ASP . اين كدها بين دو علامت قرار می گيرند و در سمت سرويس دهنده اجرا می شوند .
ويژگي هاي منحصر به فرد ASP كه در يك HTML ساده نمي توان به آن دست يافت عبارتند از :
· مي توانيد كدهايي بنويسيد كه در سرويس دهنده ي وب اجرا شود .
· اشيائي دارد كه با استفاده از آنها كارهاي زيادي مي توانيد انجام دهيد مثل Request ، Response و غيره كه در قسمتهاي بعدي آنها را شرح مي دهيم .
· مي توان با استفاده از اشياء اكتيوايكس قابليتهاي ASP را گسترش داد .
· با استفاده از ASP مي توانيد اطلاعات مورد نظر خود را با پايگاه داده هاي مختلف (مثل Access يا SQL Server و ... رد و بدل كنيد)
به طور كلي مي توان گفت محدوديتي در اين كه چه كاري با ASP مي توانيد انجام بدهيد نداريد و تقريبا هر سايت وبي كه امروزه در اينترنت وجود دارد با ASP قابل انجام است . 
كارهايي كه ASP مي تواند انجام دهد ولي HTML نمي تواند :1. با بروز درآوردن (update) يك  فايل متني يا محتويات يك پايگاه داده مي توان صفحات وب رابدون نوشتن كد HTML ي ويرايش كرد .
2. ساختن صفحات وب در جهت علاقه كاربرد
3. اطلاعات را از فرمها دريافت و در يک پايگاه داده ذخيره نمايد .
4. ساختن صفحات تبليغاتی با استفاده از يك مجموعه اشكال گرافيكي مختلف .
5. يک شمارنده صفحه ايجاد نمايد .
6. گرفتن ورودي از كاربر ، و برگرداندن اطلاعات به همان كاربر با توجه به اطلاعات دريافتي
7. و .... 
تفاوت اصلي HTML محض با ASP در اينست كه HTML روي مرورگر تفسير يا ترجمه مي شود و روي سرويس دهنده اجرا نمي شود ، در حاليكه ASP روي سرويس دهنده اجرا مي شود و حسن آن در اينجاست كه با نوشتن كدي كه روي سرويس دهندهُ وب اجرا مي شود ، به امكانات بيشتري دست خواهيد يافت .
 

بررسی نحوه ذخیره سازی Resource ها در اسمبلی های .NET

net Assembly توانائی ذخیره سازی منابع اضافه شده به برنامه ها ، از قبیل اطلاعات متنی و تصاویر مورد نیاز برنامه را دارد .
در حالت عادی ما به تصاویر یا متن های مورد نیازمان از طریق فایل های روی هارد دیسک دسترسی داریم ، اما گاهی اوقات نیاز دارید که برنامه از منابع خارجی که درون خودش ذخیره کرده استفاده کند. در این صورت شما هنگام توزیع برنامه دیگر نگرانی درباره مسیر فایل های مورد نیاز آن که هنگام نصب برنامه از کاربر درخواست می شود را ندارید.

حال طریقه استفاده از .net Assembly را شرح می دهیم:
ابتدا مراحل زیر را صورت دهید.
۱- یک پروژه جدید ایجاد کنید.
۲- در Solution Explorer بر روی نام پروژه کلیک راست کرده و سپس روی گزینه Add Existing Item کلیک کنید.
۳- در پنجره Open نوع فایل را به All Files تغییر دهید.
۴- پس از انتخاب فایل ها روی آنها کلیک راست کرده و Properties را انتخاب کنید.
همانطور که می بینید مقدار اولیه خصوصیت Build Action مربوط به فایل ، Content میباشد که باید به Embedded Resource تغییر کند.

حال فایل های انتخابی شما بخشی از .Net Assembly هستند.
فراخوانی و نحوه استفاده از فایل های اضافه شده :
فرض می کنیم که شما یک تصویر با نام ۱/bmp و یک فایل متنی با نام Test.txt را به برنامه وارد کرده اید.ما این دو فایل را در رویداد Form_Load فراخوانی و نمایش می دهیم.
ابتدا System.IO را در برنامه Import کنید:
Imports System.IO
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘Assembly تعریف متغیری از نوع
Dim asm As System.Reflection.Assembly = _
Me.GetType.Assembly.GetEntryAssembly

Dim my_namespace As String = _
asm.GetName().Name.ToString
‘String به متغیری از نوع Assemblyنسبت دادن نام

Dim pic_stream As Stream
Dim bt As Bitmap

pic_stream = _
asm.GetManifestResourceStream(my_namespace + “.1.bmp”)

If Not pic_stream Is Nothing Then
bt = New Bitmap(pic_stream)

Dim pbox As New PictureBox()
‘به آن Image و نسبت دادن PictureBox ساخت
With pbox
.Image = bt
.Left = 600
.Top = 200
.Width = 200
.Height = 200
.Visible = True
End With

Me.Controls.Add(pbox)
pic_stream.Close()
End If

Dim text_stream As Stream = _
asm.GetManifestResourceStream(my_namespace _
+ “.test.txt”)

If Not (text_stream Is Nothing) Then
Dim stream_reader As New StreamReader(text_stream)

Dim lbl As New Label()
‘در آن Test.txt و قرار دادن محتویات فایل Lable ساخت یک
With lbl
.Text = stream_reader.ReadToEnd()
.Top = 75
.Left = 5
.Width = 500
.Height = 500
.Visible = True
End With

Me.Controls.Add(lbl)
stream_reader.Close()
End If
End Sub

آموزش ASP عملگرهای VBScript

در این مقاله در مورد عملگرها بحث خواهیم نمود که جزئی از مهم ترین و پرکاربرد ترین مباحث VBScript میباشد. عملگرها به ما اجازه می دهند که با داده ها کار کنیم و آنها را ترکیب کنیم تغییر دهیم و یا جایگزین کنیم. ۵ کلاس اصلی از عملگر ها وجود دارند که ما در مورد آنها بحث خواهیم کرد. اولین نوع آنها عملگر انتساب(Assignment) میباشد که اکنون آن را ملاحظه خواهیم نمود:
● عملگر انتساب
ما در مورد متغیرها بحث کردیم و توضیح دادیم که داده ها در آنها ذخیره می گردند. اما درباره این که چگونه داده ها در متغیر ها ذخیره می شوند توضیحی داده نشد.عادی ترین راه برای ذخیره داده های متغیرها استفاده از عملگر انتساب می باشد. عملگر انتساب در VBScript علامت مساوی (=) می باشد. عملگر انتساب هر چیزی که در سمت راست آن قرار بگیرد در متغیری که در سمت چپ آن قرار می گیرد ذخیره می کند.
برای مثال کدهای زیر را در نظر بگیرید:
<%
Dim MyVariable
MyVariable = ۳
MyVariable = ۵
%>
اگر شما قبلا برنامه نویسی نکرده باشید ممکن است از این که متغیر MyVariable در یک لحظه هم مقدار ۳ و هم مقدار ۵ را گرفته است متعجب شده باشید. باید دقت نمایید که عملگر انتساب را با مشابه آن در مبحث ریاضیات اشتباه نگیرید. جمله سوم می گوید که متغیر MyVariable برابر ۵ می باشد. این جمله در داخل متغیر MyVariable مقدار ۵ را ذخیره می کند.
به منظور یک دوره کوتاه ما خط به خط این کدها را مورد بررسی قرار می دهیم.
دردومین خط همان طور که قبلا توضیح داده شد یک متغیر تعریف شده است. در این هنگام یک مقدار Empty در داخل متغیر MyVariable ذخیره می گردد. در خط بعد مقدار ۳ به متغیر MyVariable تخصیص داده می شود. بنابراین در داخل جعبه ای که دارای بر چسب MyVariable میباشد هم اکنون مقدار ۳ وجود دارد. در انتها مقدار ۵ به متغیرMyVariable تخصیص داده می شود. مقدار ۳ که وجود داشت اکنون از بین می رود!
به این نکته در هنگام برنامه نویسی دقت کنید که در داخل متغیر ها هرگز مقادیر جدیدی را جایگزین ننمایید تا زمانی که اطمینان حاصل کنید کارتان با مقدار قبلی تمام شده است. اگر مسلم شد که به جایگزینی یک مقدار برای استفاده بعدی نیاز دارید ممکن است یک متغیر دومی را ایجاد کنید و آن را به شکل زیر نگهداری نمایید:
<%
Dim MyVariableX, MyVariableY
MyVariableX = ۳
MyVariableY = MyVariableX
MyVariableX = ۵
%>
در اینجا خط دوم با دو متغیر تعریف شده است MyVariableX و MyVariableY. در ابتدا در هر دو مقدار Empty قرار داده می شود.
در خط بعد مقدار ۳ در داخل MyVariableX قرار داده می شود. مقدار دهی تنها با مقادیر صریح مثل ۳ یا ۵ انجام نمی گیرد بلکه با متغیر ها نیز صورت می گیرد. در نهایت در هر دو متغیر MyVariableY و MyVariableX مقدار ۳ ذخیره می گردد.
سرانجام در داخل MyVariableX مقدار ۵ قرار داده می شود. این مساله بر روی متغیر MyVariableY تاثیری ندارد. خط ۳ هر چه که در داخل MyVariableX وجود دارد به داخل MyVariableY کپی می کند اما این کار هیچ نوع ارتباط دائمی بین دو متغیر MyVariableX و MyVariableY ایجاد نمی کند با این کار MyVariableX با مقدار جدید مورد استفاده قرار می گیرد. اما اگر شما هنوز به مقدار قبلی نیاز داشته باشید از طریق MyVariableY به آن دسترسی خواهید داشت.
اکنون به آخرین نسخه ازین کدها نگاه کنید:
<%
Dim ivar
ivar = ۳
۵ = ivar
%>
آیا فکر می کنید این کد ها کار میکند؟ (اولین پاراگراف مربوط به عملگرهای انتساب را در صورتی که اطمینان ندارید دوباره بخوانید.)
جواب منفی است. این کدها معتبر نمی باشد. دو خط اول قابل انتظار می باشد اما خط سوم بی معنی است. عملگر انتساب هر چه که در سمت راست آن قرار دارد در داخل متغیر سمت چپ کپی می کند.در این نمونه عدد ۵ یک متغیر نیست و در سمت چپ قرار دارد. عدد ۵ نمیتواند به عنوان نام یک متغیر به کار رود زیرا نام متغیر ها باید با یک حرف آغاز شود.
ما از نوع integer در این مثال ها استفاده نموده ایم اما می توانستیم از انواع دیگر استفاده کنیم. عملگر انتساب با نوع های Booleans, Strings, doubles, singles به خوبی کار می کند:
StrName = "X"
Bol_The_Assignment_operator_Is_Powrful = True
Dtjills_Birthday = #۰۳/۰۶/۱۹۴۶#
نکته: محصور کردن داده با علامت # داده را به سه قسمت ۳ و ۶ و ۱۹۴۶ تقسیم می کند.
ممکن است متوجه شده باشید که در لیست قبل از عملگر انتساب استفاده شده است. لیست زیر یک نسخه تغییر یافته از این کد ها می باشد که عملگر انتساب را با کمی تغییر نشان میدهد.
نام فایل را AssignmentDemo.asp بنامید:
<% @ Language="VBScript" %>
<% Option Explict
Dim strName, iAge
%>


<%
Response.Write("Before assigning a value, strName has value ")
Response.Write(strName)
%>


<%
strName= "James"
iAge = ۲۱
Response.Write( "Now strName has value ")
Response.Write(strName)
%>


<%
Response.Write( "Now iAge has value " )
Response.Write(iAge)
%>


● تجزیه:
خط ۳ دو متغیر را به نام های StrName و iAge تعریف کرده است. خطوط ۸ و ۹ یک پیغام را می نویسد که نشان می دهد که StrName قبل از این که ما از عملگر انتساب استفاده نماییم چه مقداری داشته است.
خطوط ۱۳ و ۱۴ مقادیر ۲ متغیر را تنظیم می کنند. خطوط ۱۵ و ۱۶ مقدار جدید داده شده به متغیر StrName را نشان می دهند. به خروجی نگاه کنید شما می توانید هم اکنون تایید کنید که عمل انتساب درست صورت گرفته است. خطوط ۲۰ و ۲۱ به طور مشابه مقدار جدید داده شده به متغیر iAge را نشان می دهد.

کار با متغیرها در زبان ASP کلاسیک

در بیشتر زبان های برنامه نویسی باید بین متغیر های داده های مختلف فرقی وجود داشته باشد. یک متغیر که برای نگهداری رشته ها استفاده میشود بعدا نمی تواند برای نگهداری یک عدد مورد استفاده قرار گیرد.  
● اعداد اعشاری یا Floating Point Numbers
اعداد اعشاری اعداد decimal شناور می باشند. اعداد ۵/۱,۴/۳ ,۱/۴ و حتی ۰/۵ همگی اعداد اعشاری می باشند.توجه به این نکته مهم می باشد که اعداد ممیز شناور اغلب گرد شده یا بریده میشوند تا به اندازه فضایی شوند که به انها اختصاص داده شده است.
نوع داده ای Single و Double به اعداد ممیز شناور اختصاص داده شده اند. فرق بین این دو در دقت اعدادی که در خود ذخیره می کنند می باشد. در نوع Double دو برابر Single حافظه لازم دارید اما بدیهی است که محدوده اعداد بزرگتر را می تواند در خود نگهداری کند و همچنین دقت بیشتری نسبت به Single دارد.
در VBScript شما هیچ نگرانی در مورد این دو ندارید. گاهی اوقات در هنگام کار کردن با اعداد ممیز شناور شما انها را به صورت اعداد علمی می بینید.
● رشته(String)
یک رشته می تواند زنجیره ای از حروف ، اعداد و نشانه ها را در داخل خود نگهداری کند.رشته ها باید از کد ها ، نام های متغیر و اعداد به وسیله قرار دادن آنها بین علامت " " شناخته شوند. عبارت "Welcome To macromediax" و"۱۲۳۲۴" مثال هایی از رشته می باشند. حتی رشته خالی " " می تواند همان رفتار یک رشته را نشان دهد.
هنگامی که ما از یک عبارت مانند response.write “hell” را استفاده میکنیم "Hello" یک مقدار رشته ای می باشد. متغیر های رشته ای اغلب در فرستادن خروجی هایی مثل مثال بالا استفاده می شوند.
● Data(اطلاعات)
یک خصوصیت مفید VBScript که در دیگر زبانهای برنامه نویسی وجود ندارد مدیریت اطلاعات می باشد.اگرچه می توان داده ها را به صورت رشته ها یا اعداد نمایش داد ولی استفاده از این متغیر ها کارها را ساده می نماید.متغیر داده ای می تواند زمان یا تاریخ و اطلاعات متنوع توابع تاریخ VBScript و عملگر هایی که فرمت اطلاعات مربوط به تاریخ را چاپ می نمایند را نگهداری کنند.
● Boolean
این نوع متغیر، فقز مقادیر درست یا غلط را در خود نگهداری می کند.متغیر های Boolean معمولا وقتی یک تصمیم گیری مورد نیاز می باشد استفاده می گردند.ارزش متغیر می تواند تعیین کند که کدام یک از دو عمل باید انجام بگیرد.این عمل به وسیله ساختار کنترلی انجام می گیرد.مثلا برای تعیین جنسیت کاربران به دونوع مذکر و مونث میتوان ازین نوع داده ای استفاده کرد .
● نوع داده Currency
یک عدد دقیق که تنها برای ذخایر پولی به خوبی کار خواهد کرد.اما VBScriptیک نوع داده مخصوص برای پول مهیا می کند که با چندین تابع مخصوص VBScript کار میکند.
● Object
این قسمت به اشیا مخصوص اشاره دارد.از اشیا در کار کردن با عملگرهای مربوطه به پایگاههای داده استفاده می شود.و در جای خود آن را مورد بحث قرار می دهیم.
● Variant Variables چه هستند؟
در بیشتر زبان های برنامه نویسی باید بین متغیر های داده های مختلف فرقی وجود داشته باشد. یک متغیر که برای نگهداری رشته ها استفاده میشود بعدا نمی تواند برای نگهداری یک عدد مورد استفاده قرار گیرد. البته این موضوع در زبان VBScript صادق نمی باشد VBScript از Variant Vciriables هایی استفاده می کنند که متغیر هایی هستند که شامل مقادیری از هر نوع می تواند باشد.

آموزش ASP استفاده از تابع Time

به منظور ایجاد صفحه ASP خودتان، شما احتیاج به یک کامپیوتر با یک سرویس دهنده وب دارید که تکنولوژی ASP را پشتیبانی نماید. من به شما طریقه تنظیم و نصب دو سرویس دهنده رایگان وب مایکروسافت را نشان دادم که عبارت بود از PWS و IIS. در این زمان شما باید یک سرویس وب که با ASP کار می کند داشته باشید یا به یک کامپیوتری که بر روی آن چنین سرویس دهنده وبی نصب شده است، دسترسی داشته باشید.
بعد از اینکه یک سرویس دهنده وب را نصب کردید، شما می توانید صفحات ASP را در دایرکتوری ریشه سایت وبتان(wwwRoot) ایجاد نمایید یا آنرا در زیر فهرستهای دایرکتوری ریشه قرار دهید و صفحات ASP حاصله را بوسیله مرورگر وب مشاهده نمایید. از آنجایی که صفحات ASP بصورت کامل بر روی سرویس دهنده پردازش می گردند و فقط HTML به بخش سرویس گیرنده برگشت داده می شود، هر مرورگر وبی می تواند برای مشاهده صفحات ASP مورد استفاده قرار بگیرد
شما هم اکنون عناصر لازم برای ایجاد و ودیدن صفحات ASP را در اختیار دارید.
در طی جلسات آینده، شما یاد خواهید گرفت که کدهای VBScript را که یکی از زبانهای پر کاربرد در ایجاد صفحات ASP می باشند را به صفحات وارد یا خارج نمایید. حال به یک صفحه ASP نگاهی میندازیم. این کار به شما کمک میکند که با علایم و دستور زبان VBScript آشناتر گردید. به علاوه آن به شما نشان می دهد که کارهای زیبایی را می توانید با ASP انجام دهید.
تصور نمایید که بر حسب اوقات روز، می خواهید پیامهای مختلفی را بر روی صفحه وب مشاهده نمایید. برای مثال، اگر ساعت ۱۱:۰۰ صبح می باشد، شما می خواهید پیام Good Morning را مشاهده نمایید یا اگر اینکه ساعت ۰۵:۰۰ بعدازظهر می باشد شما پیام Good Evening را مشاهده نمایید. با استفاده از دستورات و کدهای HTML، شما باید دوبار صفحه HTML را در روز ویرایش نمایید. یک بار قبل از ظهر و یکبار بعد از ظهر(به منظور تغییر صفحه وب و تغییر دادن پیامها). با صفحات ASP، شما باید از کدهای برنامه نویسی برای تعیین وقت فعلی و نمایش پیغام مناسب بر حسب زمان را استفاده نمایید. اسکریپت زیر شامل کدهایی برای یک صفحه ASP می باشد که پیغام مناسب را بر حسب زمان فعلی نمایش می دهد.
<%@ Language="VBScript" %>
<% Option Explicit %>


The current time is <% = Time ( ) %>


<%
If datepart("h",time()) >= ۱۲ then
&#۰۳۹;After noon
Response.Write "Good Evening"
Else
&#۰۳۹;Before noon
Response.Write "Good Morning"
End If
%>


▪ تجزیه و تحلیل: به منظوری دیدن خروجی اسکریپت بالا، یک صفحه ASPبه نام TimeBasedMessage.aspرا ایجاد و این فایل را در فهرست ریشه(X:inetpubwwwRoot) ذخیره نمایید. کدهای موجود در اسکریپت بالا را در داخل فایل ذخیره نموده و سپس آنرا توسط مرورگرتان با نوشتن آدرسURLزیر مشاهده نمایید:
http://localhost/TimeBasedMessage.asp
اکنون کدهای موجود در اسکریپت بالا را را مرور می کنیم. خط ۱ با دستورLanguage @شروع شده است که به سرویس دهنده وب اطلاع می دهد که زبان scriptingکه در صفحه ASP فعلی استفاده شده است چه می باشد ( که در جلسه بعدی، کالبد شکافی اولین ASP نوشته شده را خواهیم داشت).به خاطر داشته باشید که همیشه این دستور در خط اول صفحات ASP به کار برده می شود. خط ۲، Option Explicitخط دیگری می باشد که همیشه در همه صفحات ASP که شما ایجاد می نمایید مورد استفاده قرار می گیرد. وقتی دستور Option Explicit مورد استفاده قرار می گیرد، همه متغیر های ما باید به صورت صریح تعریف گردند که در جلسات بعدی در مورد Option Explicit بیشتر بحث خواهد شد. خط ۶ زمان فعلی سیستم را با استفاده از تابع( ) Time نمایش می دهد. این تابع <%( ) Time = %> در جلسات بعدی مورد بحث قرار می گیرد. خطوط ۷ تا ۱۵ بلوک کدهای ASP می باشند، که بوسیله محدود کننده های <%و%>مشخص شده اند. یک Ifدر خط ۸ استفاده شده است که معین می نماید آیا ساعت فعلی قبل از ظهر می باشد یا بعد ازظهر(در جلسات بعدی مورد بحث قرار می گیرد). قسمت Datapart که در اینجا استفاده شده است، به این منظور می باشد که فقط بخش ساعت از ساعت فعلی سیستم را در اختیار ما قرار دهد نه ثانیه و دقیقه و غیره... که در جلسات بعدی بیشتر مورد بحث قرار خواهد گرفت.

آموزش Asp.net

چرا به دات نت احتياج داريم؟
به طور معمول نسل های جديد زبان های برنامه نويسی به اين دليل متولد می شوند که زبان های قديمی تر دارای امکانات محدود بودند و يا قدرت استفاده از تکنولوژی های فعلی را به صورت مطلوب و ساده ندارند.
مهمترين نيازی که به عنوان آخرين تکنولوژی وجود دارد، برنامه نويسی در محيط اينترنت است. اينترنت در مدت تقريبا ۸ سال جای خود را به عنوان يکی از مهمترين وسايل ارتباطی برای کارهای روزمره و تجارت باز کرده است. سيستم های برنامه نويسی قديمی تر امکان برنامه نويسی برای اينترنت را فراهم کرده بودند اما هر کدام دارای اشکالات بزرگی هستند، برای مثال تکنولوژی COM اولين بار در ويندوز به کار گرفته شد. در سال 1970 نيز سيستم هايی برای Unix نوشته شده بودند، جاوا نيز در اصل برای ابزارهای الکترونيکی بود و نه برای اينترنت.
سپس برای اولين بار يک سيستم جامع برای برنامه نويسی تحت اينترنت ايجاد شد. اين سيستم -NET. از مراحل سطح پايين که به زبان ماشين می باشد تا بالاترين سطح که برنامه نويسی ويژوال آن می باشد برای استفاده در اينترنت طراحی شده است. البتهNET. فقط برای اينترنت نيست و با استفاده از آن می توان برنامه های کامل تحت Client نيز ايجاد کرد، اما بزرگترين مزيت آن دربرابر سيستم های ديگر امکانات اينترنت آن است.
برای اينکه مزايای استفاده ازNET. را بهتر متوجه بشويم بهتر است در ابتدا معايب سيستم های پيشين را ذکر کنيم. شرکت مايکروسافت تا قبل از سال 1995 به برنامه نويسی در محيط های Client و Server می پرداخت، اما از آن سال به بعد توجه بيشتری به مساله برنامه نويسی در اينترنت کرد. مايکروسافت COM و +COM را ايجاد کرد و آنها را در ويژوال استوديوی 6 به کار گرفت. در سال 1999 حدود ۵۰ در صد از بزرگترين سايتهای تجارت الکترونيکی از محصولات مايکروسافت استفاده می کردند. اما هنوز هم مشکلات بزرگی در سيستم های مايکروسافت وجود داشت که يکی از آنها دشواری نوشتن برنامه در اينترنت با محصولات مايکروسافت بود. شرکت مايکروسافت برای راحتی کار برنامه نويس ها ASP يا Active Server Page را ايجاد کرد. با اينکه اين يک قدم بزرگ بود و کارها را بسيار ساده کرد ولی هنوز از برنامه نويسی شی گرا پشتيبانی نمی کرد. همچنين در ويژوال استوديوی 6 قسمتی برای Internet Application ايجاد شده بود و در آنها امکان ساختن Web Class وجود داشت ولی هيچ وقت به عنوان يک ابزار کار آمد برای برنامه نويسی وب درنظر گرفته نشد.
مدل برنامه نويسی DNA
مايکروسافت يک مدل برنامه نويسی به نام Distributed interNet Application دارد که بر پايه برنامه نويسی n-tier و COM بنا نهاده شده است. مدل DNA از سه بخش اساسی تشکيل شده است.
بخش اول به نام Presentation tire معروف است. در اين بخش رابط تصويری کاربر وجود دارد و خود نيز به دو نوع Internet Browser و Win 32 GUI تقسيم می شود که هر کدام مشکلات خاص خود را دارند. در مدلی که از Win32 GUI يا همان نرم افزارهای معمولی استفاده می شود دو مشکل بزرگ وجود دارد ؛ دشواری بروز رسانی نرم افزار و ديگری DLL Hell که در ادامه توضيح داده خواهد شد. در نوع دوم مشکلاتی از قبيل نبود امکانات برنامه نويسی کافی در محيط مرورگر، نبود رابط قوی با کاربر، نبودن مرورگر های يکسان و... وجود دارد. همچنين هميشه يک اتصال به اينترنت يا اينترانت لازم است. در اين نوع از برنامه نويسی می توان از Java Applet ها يا ActiveX استفاده کرد ولی مرورگر بايد امکان استفاده از آن را داشته باشد، مخصوصا ً هنگام استفاده از ActiveX که بايد فقط از IE استفاده کرد.
بخش دوم که Middle tier نام دارد، مکانی است که اطلاعات و قوانين تجاری در آن وجود دارد. منظور از قوانين ، متد ها و اجزائی هستند که اعمال کاربران را کنترل می کنند. مهمترين و آسان ترين زبان برای نوشتن اين اجزا از DNA ويژوال بيسيک است. برنامه نويسی که بخواهد در اين رده برنامه بنويسد بايد آشنايی کاملی با COM و پروتکل های رايج داشته، همچنين بايد مهارت کافی در استفاده از ADO و ADSI داشته باشد. مشخص است که يک اشتباه در اين لايه باعث بروز خطا و نقص در کل سيستم می شود.
بخش سوم يا Data tier مکانی است که اطلاعات سازمان در آن ذخيره می شود. معمولا ً در اين قسمت از بانکهای پيشرفته رابطه ای مانند SQL Server و Oracle استفاده می کنند.
محدوديت های COM
همانطور که ديديد مهمترين قسمت در DNA همان COM است که در جای جای آن استفاده می شود. در اينجا برخی معايب COM ذکر می شود : ( در ابتدای متن ذکر شد که برای درک نياز بهNET. بايد ابتدا معايب سيستم های قديمی را بشناسيم )
DLL Hell: اگر کوچکترين تغييری در يک COM ايجاد شود، ديگر برنامه هايی که از ورژن قبلی استفاده می کردند قادر به فعال ساختن نسخه جديد نيستند. هنگامی که در ويندوز، يک COM نصب شود برايش در رجيستری يک GUID ثبت می شود که اطلاعات آن COM را در خود ذخيره می کند. اگر يک برنامه از نسخه اول يک COM استفاده کند و بعد از مدتی شما تغييراتی در نسخه اول بدهيد و بخواهيد آن را دوباره در سيستم نصب کنيد ويندوز به شما پيغام خطا می دهد چون ورژن آن تکراری است، اگر هم آن را به ورژن دوم ارتقا دهيد نرم افزار قبلی هنوز به دنبال نسخه اول می گردد. اين امر باعث می شود که شما مجبور شويد يکبار ديگر کل برنامه را کامپايل کرده و در کامپيوترتان نصب کنيد.
کمبود در وراثت: در نسخه های COM که در حال حاضرهستند چيزی به نام وراثتی که در ++C وجود دارد نمی باشد، بلکه وراثت تنها در واسط يک COM می باشد، استفاده از آن هم چندان کمکی به برنامه نويسی نمی کند.
برخی محدوديت های برنامه نويسی اينترنتی در مدل DNA
 وجود دو محيط برنامه نويسی برای اينترنت و Client
نقصان در نوشتن برنامه هايی با رابط گرافيکی خوب که در اينترنت کار می کردند کاملا ً مشهود است، نمونه بارز آن اختلاف در برنامه نويسی در ويژوال بيسيک و ASP است. ويژوال بيسيک با رابط گرافيکی کاملا ً سطح بالا و ASP تقريبا ً رابط گرافيکی ندارد. همين امر باعث می شد که يک برنامه نويس مجبور باشد طيف وسيعی از تکنيک ها و زبان ها را فرابگيرد تا بتواند برنامه ساده ای در اينترنت بنويسد.
 نبودن حالت های ذخيره اطلاعات رابط گرافيکی در صفحه های اينترنتی
نمونه اين حالت زمانی است که در يک textbox متنی وجود داشته باشد. در برنامه های Win32 GUI متن داخل textbox تا زمانی که کاربر يا برنامه آن را تغيير نداده بر جای خود وجود دارد. اما در محيط اينترنت و نوع ASP با هر بار refresh کردن صفحه کل اطلاعات ازبين می رود. البته اين مشکل با استفاده از شئ های Request و Response تقريبا ً قابل حل است ولی احتياج به برنامه نويسی برای هر تکه از صفحه ASP دارد.
 نداشتن Event Handler در محيط برنامه نويسی اينترنت
يکی از مهمترين ابزاری که در برنامه نويسی Win32 GUI وجود دارد استفاده از Event ها است. با تکنولوژی که در حال حاضر وجود دارد تنها راه رسيدن به اين مهم استفاده از ActiveX است که به علت مسايل امنيتی در بيش از ۹۵ در صد مواقع توسط کاربر استفاده از آن رد می شود.
معايب استفاده از API
API ها توابعی هستند که از ويندوز نسخه 1 تا امروز در برنامه نويسی کاربرد داشته و دارند. مهمترين کاری که اين توابع انجام می دهند انجام کارهای سخت و سطح پايين سيستمی است که احتياج به برنامه نويسی زيادی دارند و يا حتی امکان ايجاد آن با زبان هايی مثل ويژوال بيسيک نيست. اما هر API از هر نسخه ويندوز تا نسخه ديگر آن می تواند دچار تغييرات بشود. برای مثال برنامه ای که در ويندوز 98 نوشته شده باشد می تواند در ويندوز 95 اجرا نشود. همچنين هم اکنون ابزارهای جديدی به بازار آمده است که برای آنها نيز می توان برنامه نويسی کرد، مانند تلفن های سيار، کيوسک تلفن، دستگاه های کامپيوتری جيبی و غيره. در اين نوع دستگاه ها ديگر ويندوز به مفهومی که در حال حاضر وجود دارد قابل اجرا نيست و در نتيجه API هم وجود ندارد. لازم به ذکر است که ويندوز CE برای دستگاه های مذکور می باشد ولی قابليت های آن با ويندوزهای ديگر تفاوت زيادی دارد.
آشنائی با ASP.NET
NET نسل بعدی Active Server Pages يا ASP است که توسط شرکت ميکروسافت ارائه شده است. اين محصول توسط ميکروسافت بعنوان شاخص اصلی فناوری در ساخت سايتهای وب در نظر گرفته شده است. با استفاده از ASP.NET می توان هم اينترانت کوچک يک شرکت را ساخت و هم يک سايت وب تجاری خيلی بزرگ را طراحی و پياده سازی نمود. مهمترين نکاتی که در طراحی اين محصول در نظر گرفته شده است راحتی استفاده و بالا بودن کارائی و قابليت آن می باشد. در زير برخی ويژگيهای ASP.NET را بررسی می کنيم.
صفحات ASP.NET کامپايل می شوند.
هنگامی که يک صفحه ASP.NET برای اولين بارتوسط يک مراجعه کننده به سايت فراخوانی می شود، آن صفحه ابتدا کامپايل شده و بر روی سرور نگهداشته می شود و در فراخوانی های بعدی از آن استفاده می شود. اين بدين معنی است که صفحات ASP.NET خيلی سريع اجرا می شوند.
 صفحات ASP.NET با ابزارهای روی سرور ساخته می شوند.
با ابزارهای موجود در ASP.NET می توان صفحات پيچيده وب را براحتی طراحی نمود. بعنوان مثال با استفاده از ابزار DataGrid می توان به آسانی داده های موجود در يک بانک اطلاعاتی را تحت وب نمايش داد.
مجموعهASP.NET عضوی از بدنه NET. است.
بدنه NET. دارای بيش از ۴۵۰۰ کلاس آماده جهت استفاده در ASP.NET است. اين کلاس ها تقريبا هر نيازی را در برنامه نويسی برآورده می کنند. بعنوان مثال از اين کلاس ها می توان جهت توليد تصاوير بر حسب تقاضا، به رمز درآوردن يک فايل و يا ارسال يک نامه استفاده کرد.
مقايسه ASP.NET و ASP کلاسيک
ASP.NET نسل بعدی ASP يا ASP کلاسيک است. اما اين يک پيشرفت تکاملی است بطوريکه اين دو فناوری تقريبا از يکديگر متفاوتند. صفحات ASP با زبان های دستورالعمل نويسی مانند VBScript يا JScript ايجاد می شوند اما در ASP.NET ما يک فرايند کامل برنامه نويسی با زبانهای Visual Basic يا #C (سي-شارپ تلفظ شود) داريم. همچنين در ASP کلاسيک تنها پنج کلاس استاندارد (Request, Response, Application Session, Server) وجود دارد حال آنکه در ASP.NET می توان از بيش از ۴۵۰۰ کلاس استاندارد موجود در بدنه NET. بهره جست.همچنين عليرغم قدرت و امکانات زياد و متعدد ASP.NET، استفاده از آن در مقايسه با ASP کلاسيک بسيار آسانتر است. بعنوان مثال با استفاده از چند ابزار در يک صفحه ASP.NET می توان يک صفحه بسيار پيچيده HTML بدست آورد که ساخت آن در ASP کلاسيک ممکن است نياز به چند روز کار داشته باشد.
زبانهای برنامه نويسی در ASP.NET
شما در ASP.NET می توانيد از هر زبان برنامه نويسی که با بدنه NET. سازگار باشد استفاده کنيد. اين زبانها عبارتند از Visual Basic.NET و #C و JScript.NET . اين بدين معنی است که شما جهت نوشتن برنامه در ASP.NET نياز به فراگيری زبان جديدی نداريد و اگر يکی از زبانهای ويژوال بيسيک يا ++C يا جاوا را می دانيد هم اکنون می توانيد در ASP.NET برنامه بنويسيد.از طرف ديگر تعدادی زبانهای ديگر توسط بعضی از شرکتهای فعال در اين زمينه به مجموعه زبانهای استاندارد ASP.NET افزوده شده است. بعنوان مثال اگر مايل باشيد حتی می توانيد از PERL و COBOL هم در ASP.NET استفاده کنيد.
ابزارهای ASP.NET
سالهاست که برنامه نويسان ويژوال بيسيک جهت ساخت فرم های خود از ابزارهای ويژوال بيسيک مانند TextBox و ListBox استفاده کرده اند. در ASP.NET هم شما می توانيد از ابزارهای فراوان موجود در آن برای ساخت فرم ها و صفحات خود استفاده نمائيد. در ASP.NET چهار دسته عمده از ابزارها موجود است:
 ابزارهای اصلی مانند TextBox، RadioButton، ListBox و Button.
 ابزارهای اعتباری برای حصول اطمينان از ورود و تائيد صحت اطلاعات ورودی فرم ها.
 ابزارهای داده ای برای ارتباط با بانک اطلاعاتی و دستکاری داده.
 ابزارهای پيشرفته جهت نمايش عناصر پيچيده در واسط کاربر مانند تقويم و آگهی های تبليغاتي.
با استفاده از Visual Studio.NET شما براحتی می توانيد با چيدن تصويری اين ابزارها بر روی فرم مورد نظر، صفحه دلخواه خود را بسازيد. در صورت تمايل حتی می توانيد در يک ويرايشگر ساده متن مانند Notepad برنامه مورد نظر را نوشته و از اين ابزارها استفاده کنيد.
دريافت ASP.NET
جهت شروع برنامه نويسی در ASP.NET تنها کافی است که مجموعه ASP.NET را بهمراه بدنه NET. از سايت ميکروسافت دريافت کنيد.
دريافت .NET Framework
ASP.NET با سيستم عامل های Windows 2000 (نسخه Server و Professional) و Windows XP کاملا سازگار است.
Namespace چيست؟
يک نکته مهم که در زمان استفاده از NET Framework. بايد به آن توجه داشت آن است که فضانام (namespace يا نامکده) ها در ساختمان برنامه کاربردی قرار دارند. فضانام يک طرح نامگذاری منطقی برای گروه بندی کلاس های مرتبط است. اين طرح مانع از آن می شود تا کلاس هايی که برای متدها و خصوصيات از يک شناسه يکسان استفاده می کنند تداخل داشته باشند.
مثلا NET Framework. برای گروه بندی تايپ ها به مقوله های منطقی عملکرد، از قبيل چارچوب برنامه کاربردی ASP.NET، از يک طرح نامگذاری سلسله مراتبی استفاده می کند. ابزارهای طراحی از فضانام ها با هدف تسهيل مرور و ارجاع تايپ ها در برنامه بهره برداری می کنند. مثلا فرض کنيد در حال نوشتن کد زير هستيد:
Public Class NewClass
[Procedures and Functions]
End Class
Public Class NewClass
[Procedures and Functions]
End Class
اين کد به خطا منجر می شود چون کامپايلر راهی برای تشخيص کلاس ها از يکديگر ندارد. برای غلبه بر اين مشکل می توان از يک فضانام استفاده کرد که اجازه می دهد دو کلاس همنام در صفحه با هم وجود داشته باشند. قطعه برنامه زير تعريف اين دو کلاس در فضانام های منحصر بفرد را نشان می دهد:
Namespace One
Public Class NewClass
[Procedures and Functions]
End Class
End Namespace
Namespace Two
Public Class NewClass
[Procedures and Functions]
End Class
End Namespace
در اين کد برخوردی بين دو کلاس با نام NewClass وجود ندارد چون هر کدام در يک فضانام جداگانه قرار داده شده است. کلاس اول را می توان با استفاده از ترکيب One.NewClass صدا زد، حال آنکه کلاس دوم را می توان با استفاده از ترکيب Two.NewClass صدا زد.
شما می توانيد در فضانام های خود از يک ساختار سلسله مراتبی استفاده کنيد. قرار دادن اشياء مشابه تحت زيرعنوانها در يک فضانام مشترک تشخيص هدف فضانام را آسانتر می کند، و در عين حال باعث می شود برنامه به مراتب شئ گراتر شود.
برای توضيح فضانام می توان ساختار فايل و دايرکتوری (کشو، فولدر) در يک کامپيوتر را در نظر گرفت. در اين مثال کلاس ها به مثابه فايل ها و فضانام ها مانند دايرکتوری ها هستند. بديهی است همانگونه که می توانيم دايرکتوريهای تو در تو داشته باشيم، فضانام ها هم در حاليکه کلاس ها را در خود جای داده اند می توانند بصورت تو در تو باشند.
فضانام ها در ساخت برنامه های کاربردی ASP.NET نقش مهمی ايفا می کنند. خوشبختانه لازم نيست برای همه اشيايی که می توانند به وسيله صفحات ASP.NET مورد استفاده قرار بگيرند سيستم طبقه بندی فضانام ايجاد کنيد. مايکروسافت اين مساله را برای شما حل کرده است. دو فضانام ريشه، و فضانامهای فرزند آنها را می توان وارد صفحات ASP.NET خود کرد. اولی System ناميده می شود، و دومی Microsoft نام دارد. اين فضانامها با جزئيات بيشتر در ادامه مورد بحث قرار گرفته اند.
فضانام System
فضانام System فضانام اصلی برای ساخت ASP.NET و همه برنامه های کاربردی ديگر مبتنی بر NET Framework. است. هر چيزی که در برنامه کاربردی شما قابل انجام باشد از طريق فضانام System کنترل می شود. به عنوان مثال کنترل آرايه، عمليات رياضی، و تبديل نوع داده ها از طريق فضانام System و فضانامهای فرزند آن اداره می شوند. ۹ فضانام پيش فرض (فضانام System و ۸ فرزند آن) وجود دارند که به صورت خودکار به صفحات ASP.NET اضافه می شوند:
 System
 System.ComponentModel.Design
 System.Data
 System.Drawing
 System.Web.SessionState
 System.Web
 System.Web.UI
 System.Web.UI.WebControls
 System.Web.UI.HTMLControls
هشت فضانام (بجز فضانام System) در زمان ساخت Visual Studio.NET يا VS.NET بطور خودکار به صفحات ASP.NET وارد می شوند. اين فضانام ها در زير به اختصار شرح داده شده اند.
 System.ComponentModel.Design: دربرگيرنده کلاس هايی است که می توان از آنها برای طراحی پشتيبانی سفارشی اجزا و زمان طراحی و دسترسی به سرويس های تامين شده توسط معماری NET Framework. استفاده کرد. 
 System.Data: امکان دسترسی به کلاس ها و رابطهايی را فراهم می کند که معماری ADO.NET را برای دسترسی به داده های عمومی تشکيل می دهند. 
 System.Drawing: دربرگيرنده کلاس ها و رابطهايی است که عملکرد گرافيکی اوليه را تامين می کنند. فضانام System.Drawing نيز از طريق فضانام System.Drawing.Drawing2D و System.Drawing.Imaging عملکرد پيشرفته تری فراهم می کند. 
 System.Web: کلاس ها و رابطهايی تامين می کند که ارتباط مرورگر/سرويس دهنده را امکان پذير می کنند. اين فضانام دربرگيرنده کلاس HTTPRequest (فراهم کننده اطلاعات وسيعی درباره درخواست HTTP جاری)، کلاس HTTPResponse (فراهم آورنده امکان دسترسی به فرآيندها و يوتيليتی های سمت سرويس دهنده) است. 
 System.Web.SessionState: فراهم کننده کلاس ها و متدهايی برای مديريت وضعيت جلسات کاری می باشد. 
 System.Web.UI: فراهم کننده کلاس ها و رابطهايی برای رابط واسط کاربر برنامه کاربردی ASP.NET است که موجب می شوند برنامه کاربردی با سطوح مختلف صفحه، ارتباط برقرار کند. کلاس اصلی اين فضانام، کلاس Page می باشد که دربرگيرنده همه خصوصيتها، متدها، و سازنده های صفحه است. اشياء اصلی Active Server Page زير خصوصيتهايی در کلاس Page هستند: Application ،Response ،Request ،Server و Session. 
 System.Web.UI.HTMLControls: کلاس هايی برای عناصر HTML استاندارد، شامل فرم ها، کنترل های ورودی، آنکور، جداول، قسمتهای متنی، و غيره فراهم می کند. اين کنترلها همانند تگهای عادی HTML هستند با اين تفاوت که داری دو صفت runat="server" و id="controlname" می باشند. 
 System.Web.UI.HTMLControls: برای کنترلهای سرويس دهنده ای که شبيه کنترلهای HTML هستند ولی انعطاف پذيری بيشتر و عملکرد پيچيده تری دارند کلاس هايی را تامين می کند.
برخی فضانام های مهم و پرکاربرد ديگر به شرح زير می باشند.
 System.IO: دربرگيرنده رابطها و کلاس هايی است که امکان خواندن و نوشتن همگام و غيرهمگام فايل ها و جريانهای داده را فراهم می کنند. 
 System.Data.OleDb: امکان دسترسی به کلاس ها و رابطهای مخصوص دسترسی به يک منبع داده از طريق ADO را فراهم می کند. 
 System.Data.SqlClient: امکان دسترسی به کلاس ها و رابطهای مخصوص دسترسی به داده های خاص Microsoft SQL Server از طريق ADO را فراهم می کند. 
 System.Web.Security: امکان دسترسی به کلاسها و رابطهای مخصوص امنيت برنامه کاربردی ASP.NET را فراهم می کند. دستيابی به رمزنگاری، مجوزها، و تنظيمات خط مشی برنامه کاربردی در اين فضانام قرار می گيرند. 
 System.XML: امکان دسترسی به کلاسها و رابطهای مخصوص پردازش اسناد XML را فراهم می کند.
فضانام Microsoft
علاوه بر فضانام System که در چارچوب NET. يافت می شود، مايکروسافت چند فضانام اضافه کرده است که برای زبان برنامه سازی ای که می خواهيد از آن در برنامه کاربردی خود استفاده کنيد عملکرد لازم را تامين می کنند. ممکن است شما بصورت مستقيم با اين فضانام کاری نداشته باشيد.
 Microsoft.VisualBasic: اين فضانام محتوی CLR يا زمان اجرای Visual Basic.NET است. از اين زمان اجرا با زبان Visual Basic.NET استفاده می شود. اين فضانام همچنين دربرگيرنده کلاس هايی است که از کامپايل و توليد کد با استفاده از زبان ويژوال بيسيک پشتيبانی می کنند. 
 Microsoft.CSharp: اين فضای نام دربرگيرنده کلاس هايی است که از کامپايل و توليد کد با استفاده از زبان #C پشتيبانی می کنند. 
 Microsoft.JScript: اين فضای نام دربرگيرنده کلاس هايی است که از کامپايل و توليد کد با استفاده از زبان JScript پشتيبانی می کنند. 
 Microsoft.Win32: کلاسها و رابطهای مورد نياز برای کار با کليدها و hiveهای رجيستری را تامين می کند.
با وجود آنکه فضانام ها از قبل تامين می شوند، می توانيد برای استفاده از برنامه کاربردی ASP.NET فضانام های خود را ايجاد کنيد. برای هر کلاس ايجاد شده توسط سازنده يک فضانام توليد می شود.
استفاده از فضانام ها در صفحات ASP.NET
دو راه برای افزودن فضانام به برنامه کاربردی ASP.NET وجود دارد. از شبه دستور (Directive) صفحه Import@ برای صفحات ASPX و از کلمه کليدی Imports برای افزودن فضانام به برنامه codebehind مربوطه در ويژوال بيسيک استفاده می شود و برای زبان #C از دستور using استفاده می گردد. قطعه برنامه زير ترکيب نحوی برای افزودن فضانام System.Web.UI.WebControls به صفحه ASP.NET شما است.
<%@ Import namespace = "System.Web.UI.WebControls" % >
همين فضانام را در قسمت codebehind بصورت زير به برنامه اضافه می کنيم.
Imports System.Web.UI.WebControls (vb.net )
using System.Web.UI.WebControls; (C#)
( به تفاوت Import و Imports دقت کنيد )
در صورتيکه می خواهيد چند فضانام را به صفحه ASP.NET خود و يا صفحه codebehind اضافه کنيد بايد هرکدام را جداگانه اضافه کنيد. بعنوان مثال، برای افزودن فضانام System.Web.UI.HTMLControls به صفحات با فضانام های موجود، درست بعد از آخرين عبارت مهم به خط بعد برويد و Imports System.Web.UI.HTMLControls را اضافه کنيد. به محض آنکه .Imports System را تايپ کنيد، VS.NET فهرستی از فضانام ها را ظاهر می کند، و می توانيد به سادگی فضانام مورد نظر را با ماوس برگزينيد. امتياز اين فهرست آن است که مجبور نيستيد همه فضانام های NET. را از حفظ بدانيد، بلکه می توانيد به آسانی از فهرست انتخاب کنيد. اين ويژگی با عنوان Intellisense شناخته می شود. برای صفحات ASP.NET از اين ترکيب استفاده کنيد:
< %@ Import namespace = "System.Web.UI.WebControls" % >
< %@ Import namespace = "System.Web.UI.HTMLControls" % >
< %@ Import namespace = "namespace name" % >
برای صفحات codebehind ويژوال بيسيک از اين ترکيب استفاده کنيد:
Imports System.Web.UI.WebControls
Imports System.Web.UI.HTMLControls
Imports namespace
Smart Navigation چيست؟
مفهوم Smart Navigation و فوايد آن:
Smart Navigation يكى از بهترين ابزارهاى جديدى است كه ASP.NET آنرا عرضه كرده است. اين ابزار جديد باعث شده ظاهر برنامه هاى وب و احساسى كه نسبت به آن وجود دارد شباهت بيشترى با برنامه هاى عادى و نوشته شده براى ويندوز پيدا كند.
يكى از موانع بزرگ برنامه هاى تحت وب به معمارى و ساختار HTTP برمى گردد. جاييكه مجبوريم اطلاعات جمع آورى شده در سمت مشترى را به سرور بازگردانيم. به همين دليل مجبور به رسم مجدد و كامل صفحه اى كه قبلا ديده ايم مى باشيم، كه اين نه تنها باعث مى شود يك حالت فلش مانند در اين رفت و برگشت و رسم مجدد رخ دهد، بلكه براى صفحه هاى بلند كه براى ديدن تمام صفحه نيازمند بهscrolling هستيم، باعث مى شود كه ديدمان را به اول صفحه انتقال دهد، چيزى كه هم شايد دلخواه ما نباشد و هم اينكه ممكن است باعث سردرگمى كاربر گردد. همچنين اين فرآيند باعث تغيير فوكوس كنترل ها و بسيارى از اتفاقات ديگرنيز مى شود.
در برنامه هاى عادى ويندوز ما به طور معمول فقط قسمت هايى از صفحه را به روز مى كنيم كه تغييرى در آن ايجاد شده باشد يا تحت تاثير چيزى قرار گيرند و اين بدون نياز به تغيير در كل برنامه مى باشد (مثلا فقط يك عضو به listbox ما اضافه مى شود. بدون تغيير و رسم مجدد فرم برنامه).
Smart Navigation يا به عبارتى هدايت هوشمندانه اين توانايى موجود در برنامه هاى ويندوز را براى برنامه هاى تحت وب فراهم مى كند! اما قبل از هر چيز بايد بدانيد كه اين ابزار فقط براى IE مى باشد و آن هم نسخه هاى ۵ به بالاتر آن. با اين وجود شما مى توانيد Smart Navigation را فعال يا غيرفعال سازيد، بدون آنكه تاثيرى در برنامه شما بگذارد. حتى اگر شما در پروژه تان مرورگرهاى محتلفى را مدنظر قرار داده باشيد، مى توانيد Smart Navigation را فعال سازيد. در اين صورت ASP.NET نوع مرورگر را تشخيص داده و Smart Navigation را فقط براى مرورگرهاى پشتيبانى شده فعال مى سازد.
چهار مورد برجسته اى كه Smart Navigation فراهم مى كند عبارتند از:
 صفحه در ميان درخواست ها يك نمايش ممتد را داراست و به عبارتى حالت فلش زدن به خود نمى گيرد.
 موقعيت Scroll را حفظ مى كند.
 فوكوس عضو دارنده فوكوس را نگه مى دارد.
آخرين صفحه درون تاريخچه (History) نگهدارى مى شود.
اين ابزار در حالت واقع گرايانه براى برنامه هايى كه ارسال به عقب(!) Postback فراوانى دارند طراحى شده است ولى با توجه به اين نكته كه محتواى صفحه نبايد زياد تغيير نكند. احتمالا بنا به دلايل كارايى و نه اينكه در تغييرات زياد ايرادى بهم بزند - مترجم. شايد يك چيز شگفت آور در مورد اين ابزار اين باشد كه شما در حقيقت نياز به نوشتن هيج كد و برنامه اى نداريد.
نحوه استفاده:
Smart Navigation درون هدايت كننده صفحه (Page directive : <%@ %>)، براى تنظيم يك صفحه و درون web.config براى تنظيم كل برنامه استفاده مى شود. براى تنظيم در Page Directive به صورت زير عمل كنيد:
<%@ Page SmartNavigation=true % >
و براى تنظيم در web.config از ساختار زير استفاده نماييد:
< Configuration>
< System.web>
روش كار اينگونه است كه كل صفحه بدرون يك فريم دورنى مخفى (hidden IFrame) بارگذارى (load) مى شود و سپس فقط قسمت هاى تغيير كرده دوباره رندر(render) مى شوند.
upload کردن فايل به سرور در ASP.NET
کدهای مربوط به Upload کردن فايل به سرور را بايد به دو قسمت تقسيم نمود. قسمت اول شامل کدهايی است که نحوه نمايش در مرورگر را شامل می شوند و اساس آن بر HTML است. و قسمت دوم مربوط به طرف سرور است که شامل کدهايی است که با ASP.NET نوشته می شوند. برنامه زير حاوی کدهای مربوطه برای انجام اين کار به صورات خيلی ساده و ابتدايی می باشد. همانطور که ملاحظه می کنيد برخلاف ASP کلاسيک، نياز به وجود component خاصی نمی باشد و اين کار در ASP.NET بصورت خيلی ساده انجام پذير است.
Upload.aspx:
نشان دادن قابليتهای مرورگر در ASP.NET
اگرچه در حال حاضر جنگ مرورگرها تقريبا تمام شده است اما اين موضوع دليلی بر شناخته نشدن قابليتهای مرورگرها نيست. در اينجا توانايی ASP.NET در نشان دادن قابليتهای مرورگرها بحث شده است. بعنوان نمونه، مثال ۱ نوع مرورگر را به ما نشان می دهد.
< body>
You are using < % =Request.Browser.Type % >
< /body>< /html >
برای نمونه اگر شما از IE 5 استفاده می کنيد نتيجه خروجی چنين بايد باشد:
You are using IE5
در مثال ۱ Request.Browser.Type يک رشته را که همان نام ونسخه‎ی مرورگر است را بر می گرداند. اما اين موضوع چگونه صورت ميگيرد ؟
شئ HTTPBrowserCapabilities
در حقيقت خاصيت Browser در شئ Request کلاسی از HTTPBrowserCapabilities است که در فضانام System.Web قراردارد. وقتی که اين کلاس روی يک صفحه ASP.NET نمونه سازی می شود خواص صفحه سرويس گيرنده ای را نشان می دهد که از آن برای اجرا شدن کد استفاده شده است. شئ Request در برگيرنده اين خاصيت مرورگر است که اين کلاس را ميتوان معادل کلاس MSWC. BrowserCapabilities در ASP کلاسيک در نظر گرفت.
در ليست زير اکثر خاصيتهای شی HTTPBrowserCapabilities تشريح شده است:
ActiveXControls: نشان می دهد که مرورگر اکتيويکس را ساپورت می کند يا نه.
AOL: چک می کند که مرورگر از نوع AOL است يا نه.
Cookies: نشان می دهد که مرورگر کوکی ها را ساپورت می کند يا نه بايد توجه داشت که اين خاصيت وضعيت فعال بودن يا غير فعال بودن کوکی ها را نشان نمی دهد.
Crawler: نشان ميدهد که مرورگر سرويس گيرنده از موتورهای جستجو تاثير می پذيرد يا نه.
Browser: نوع مرورگر را نشان می دهد.
Frames: نشان می دهد که مرورگر از قابليت Frame برخورداراست يا نه.
MajorVersion: نسخه اصلی مرورگر را نشان می دهد بعنوان مثال در IE5 عدد 5 نشانگر نسخه اصلی است.
MinorVersion: نسخه جزيی (کوچکتر) مرورگر را نشان می دهد بعنوان مثال در IE5.1 عدد .1 نشانگر نسخه جزيی است.
Type: نوع ونسخه مرورگر را بصورت يک رشته بازميگرداند..
VBScript: نشان می دهد که مرورگر VBScript را ساپورت می کند يا نه.
Version: نسخه اصلی و جزيی مرورگر را بعنوان يک رشته برمی گرداند.
در زير نمونه کامل يک مثال آورده شده است.
< %@ page language="VB" % >
< %@ Import Namespace="System.Web" % >
< html >
< body >
< head >< title >HTTPBrowserCapabilities Demo< /title >< /head >
< %
Dim browserObj As HTTPBrowserCapabilities
browserObj = Request.Browser
% >
< font face="verdana, arial" size=2 >
< p >Your browser supports ActiveX controls: < %=browserObj.ActiveXControls % > < /p >
< p >Your browser type: <%=browserObj.Type % > < /p >
< p >Your browser version: <%=browserObj.Version% > < /p >
... Add any other property that you would like to display
< / font >
< /body >
< /html >
نحوه پردازش صفحات ASP.NET بر روي سرويس دهنده وب:
برنامه هاي وب از معماري سرويس گيرنده - سرويس دهنده تبعيت نموده و بر روي سرويس دهنده وب مستقر و مسئوليت پاسخگوئي به درخواست هاي ارسالي توسط سرويس گيرندگان را برعهده خواهند داشت .در سمت سرويس گيرنده ، مرورگر و در سمت سرويس دهنده ، سرويس دهنده وب داراي جايگاهي خاص مي باشند . مرورگر ، ميزبان برنامه وب بوده و مهمترين وظيفه آن ارائه بخش رابط کاربر يک برنامه وب است . در اين راستا ، مرورگر داراي پتانسيل لازم به منظور تفسير و نمايش تگ هاي HTML مي باشد .در سمت سرويس دهنده ، برنامه هاي وب با نظارت و مديريت يک سرويس دهنده وب ( مثلا" IIS ) اجراء مي گردند . سرويس دهنده وب ، مسئوليت مديريت برنامه ، پردازش درخواست هاي ارسالي توسط سرويس گيرندگان و ارائه پاسخ لازم به سرويس گيرندگان را بر عهده دارد .به منظور قانونمند کردن ارسال درخواست سرويس گيرندگان و ارائه پاسخ سرويس دهنده ، مي بايست از يک پروتکل ارتباطي خاص استفاده گردد. پروتکل ، مجموعه اي از قوانين لازم بمنظور تشريح نحوه ارتباط دو و يا چندين آيتم از طريق يک محيط انتقال ( زير ساخت انتقال داده ) نظير اينترنت است . در برنامه هاي وب ( ارسال درخواست توسط سرويس گيرنده و پاسخ به درخواست توسط سرويس دهنده ) از پروتکل ارتباطي HTTP)Hypertext Transport Protocol) ، استفاده مي گردد.
ASP.NET پلات فرم مايکروسافت براي طراحي و پياده سازي برنامه هاي وب در دات نت مي باشد . پس از درخواست يک صفحه ASP.NET توسط مرورگر سرويس گيرنده ، پردازش هاي متعددي بر روي سرويس دهنده وب به منظور ارائه پاسخ لازم ، انجام خواهد شد.شايد تاکنون سوالات مختلفي در رابطه با نحوه پردازش صفحات ASP.NET بر روي سرويس دهنده ، براي شما مطرح شده باشد :
پس از درخواست يک صفحه ASP.NET ، بر روي سرويس دهنده وب چه اتفاقي مي افتد ؟
نحوه برخورد سرويس دهنده وب با درخواست ارسالي توسط سرويس گيرنده چگونه است ؟
تگ هاي HTML چگونه توليد و براي مرورگر ارسال مي گردد؟
و شايد سوالات ديگر!
در اين مقاله با نحوه پردازش صفحات ASP.NET بر روي سرويس دهنده بيشتر آشنا شويم . بديهي است تشريح تمامي مراحل با ذکر جزئيات از حوصله يک مقاله خارج بوده و هدف آشنائي با کليات موضوع با يک روند مشخص و سيستماتيک است .
مرحله اول : ايجاد يک درخواست HTTP براي يک صفحه ASP.NET توسط مرورگر
پردازش با درخواست يک صفحه ASP.NET که توسط مرورگر ايجاد مي شود ، آغاز مي گردد .مثلا" يک کاربر ممکن است در بخش آدرس مرورگر کامپيوتر خود آدرس http://www.srco.ir//Articles/DocView.asp?ID=210 را به منظور دريافت اين مقاله وارد نمايد . مرورگر در ادامه يک درخواست HTTP را از سرويس دهنده وب محل استقرار سايت Srco.ir ايجاد و درخواست فايل حاوي مقاله را مي نمايد .
مرحله دوم : دريافت درخواست HTTP ، توسط سرويس دهنده وب
مهمترين وظيفه سرويس دهنده وب ، دريافت درخواست ارسالي HTTP و ارائه منبع درخواست شده درقالب يک پاسخ HTTP است . سرويس دهنده وب ( مثلا" IIS ) ، پس از دريافت درخواست ارسال شده توسط سرويس گيرنده ، تصميم لازم در رابطه با نحوه برخورد با آن را اتخاذ مي نمايد. محور تصميم گيري فوق بر پايه نوع انشعاب فايل درخواستي استوار مي باشد. مثلا" در صورتيکه فايل درخواستي داراي انشعاب asp. ، باشد ، IIS درخواست را به سمت asp.dll هدايت تا عمليات مرتبط با آن انجام شود . انشعابات فايل متعددي به موتور ASP.NET ، مپ مي گردند . برخي از آنان شامل موارد زير مي باشد :
انشعاب aspx . ، براي صفحات وب ASP.NET
انشعاب asmx . ، براي سرويس هاي وب ASP.NET
انشعاب config . ، براي فايل هاي پيکربندي ASP.NET
انشعاب ashx . ، براي هندلرهاي سفارشي ASP.NET HTTP
انشعاب rem . ، براي منابع راه دور
و ساير انشعابات ديگر
پس از دريافت درخواست ارسالي توسط سرويس گيرنده ، سرويس دهنده وب آن را در اختيار مسئول مربوطه قرار خواهد داد . مثلا" در صورتيکه درخواست دريافتي مربوط به يک صفحه ASP کلاسيک باشد ، درخواست در اخـتيار asp.dll گذاشته شده و يا در صورتيکه درخواست در ارتباط با يک صفحه ASP.NET باشد ، درخواست در اختيار موتور ASP.NET قرار داده مي شود . همانگونه که اشاره گرديد ، معيار اصلي در اين تصميم گيري ، نوع انشعاب فايل درخواست شده توسط سرويس گيرنده مي باشد .
مرحله سوم : عملکرد موتور ASP.NET
پس از درخواست يک صفحه ASP.NET توسط سرويس گيرنده و دريافت آن توسط سرويس دهنده وب ، درخواست دريافتي در اختيار موتور ASP.NET قرار داده مي شود . از موتور ASP.NET ، اغلب با نام ASP.NET HTTP pipeline ياد مي گردد. علت نامگذاري فوق ، بدين دليل است که درخواست دريافتي از بين تعداد متغيري از HTTP modules در بين مسير خود براي رسيدن به يک HTTP handler عبور مي نمايد . HTTP modules ، کلاس هائي مي باشند که امکان دستيابي به درخواست دريافتي را دارا مي باشند. اين ماژول ها قادر به بازبيني و بررسي درخواست دريافتي و اتخاد تصميماتي مي باشند که مستقيما" بر نحوه گردش داخلي ( روند برخورد با درخواست ) تاثير خواهد گذاشت . درخواست دريافتي پس از عبور از ماژول هاي مسخص شده HTTP ، به يک HTTP Handler خواهد رسيد . HTTP Handler مسئوليت ايجاد خروجي لازم به منظور ارسال براي مرورگر متقاصي ( ارسال کننده درخواست ) را برعهده دارد
تعداد زيادي از ماژول هاي HTTP از قبل ايجاد شده، بصورت پيش فرض در HTTP pipline وجود دارد:
OutputCache ، مسئوليت برگرداندن و Caching خروجي صفحات HTML در صورت نياز ، برعهده دارد .
Session ، ماژول فوق ، مسئوليت لود Session state را بر اساس درخواست دريافتي کاربر و روش Session که در فايل Web.config مشخص شده است ، برعهده دارد .
FormsAuthentication ، ماژول فوق ، مسئوليت تائيد کاربران بر اساس مدل تعريف شده Forms Authentication را در صورت ضرورت برعهده دارد .
و موارد ديگر .
به منظورآشنائي با ماژول هاي پيش فرض، مي توان مقادير نسبت داده شده به عنصر در فايل machine.config را مشاهده نمود. جدول زير مقدار پيش فرض عنصر را نشان مي دهد .
machine.Config: httpModules Section
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG
< httpModules >
< add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/ >
< add name="Session" type="System.Web.SessionState.SessionStateModule"/ >
< add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule"/ >
< add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule"/ >
< add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule"/ >
< add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/ >
< add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule"/ >
< add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/ >
< / httpModules >
هندلرهاي HTTP ، نقطه پايان در ASP.NET HTTP pipeline مي باشند . مسئوليت HTTP handler ، توليد خروجي براي منبع درخواست شده است . براي صفحات ASP.NET ، اين به معني Rendering ، کنترل هاي وب به HTML و برگرداندن HTML مي باشد. براي يک سرويس وب ، مسئوليت فوق ، شامل اجراي متد مشخص شده و Wrapping مقاير برگردانده شده به يک پاسخ مناسب و با فرمت SOAP مي باشد . منابع متفاوت ASP.NET از هندلرهاي متفاوت HTTP استفاده مي نمايند.هندلرهاي پيش فرص استفاده شده ، توسط بخش < httpHandlers > فايل machine.config مشخص شده اند. بخش فوق، شامل کلاس هائي است که يا خود HTTP handler بوده و يا HTTP handler factories ، مي باشند. يک HTTP handler factory ، صرفا" يک نمونه از يک HTTP handler را پس از فراخواني ، برمي گرداند . جدول زير ، اطلاعات عنصر در فايل machine.config را نشان مي دهد .
machine.Config: httpHandlers Section
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG
< httpHandlers >
< add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/ >
< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory "/ > 
< add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler"/ >
< add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/ >
< add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler"/ >
< /httpHandlers >
لازم است به اين نکته اشاره گردد که امکان ايجاد HTTP modules و HTTP handler اختصاصي ، توسط طراحان وپياده کنندگان برنامه هاي وب ASP.NET نيز وجود دارد . پس از ايجاد ماژول ها و هندلرهاي HTTP ، مي توان آنان را به pipeline ملحق تا براي تمامي سايت هاي وب موجود بر سرويس دهنده وب ، قابل استفاده گردند. بدين منظور، مي توان تغييرات لازم را در فايل machine.config اعمال تا زمينه استفاده از آنان توسط تمامي برنامه هاي وب فراهم گردد . در اين رابطه مي توان تغييرات را در فايل Web.config نيز اعمال نمود، در چنين مواردي امکان استفاده از ماژول ها و هندلرهاي HTTP ايجاد شده ، صرفا" براي يک برنامه وب وجود خواهد داشت .
مرحله چهارم : توليد خروجي
آخرين مرحله درارتباط با پردازش يک صفحه ASP.NET بر روي سرويس دهنده وب ، شامل ايجاد خروجي مناسب است . خروجي فوق ، در ادامه از طريق ماژول هاي HTTP عبور داده شده تا مجددا" به IIS برسد . در نهايت IIS ، خروجي توليد شده را براي سرويس گيرنده متقاصي ارسال مي نمايد .مراحل لازم به منظور توليد خروجي با توجه به HTTP handler متفاوت بوده و در ادامه صرفا" يک حالت خاص آن را بررسي مي نمائيم ( هندلر HTTP که از آن به منظور rendering صفحات ASP.NET استفاده مي گردد).
سرويس دهنده وب (IIS) پس از دريافت درخواستي براي يک صفحه ASP.NET ( انشعاب فايل aspx.) ، آن را در اختيار موتور ASP.NET ، قرار خواهد داد. درخواست دريافتي در ادامه از بين ماژول ها عبور داده شده تا به PageHandlerFactory برسد ( در بخش < httpHandlers > فايل machin.config که قبلا" mapping آن انجام شده است ) .
machine.Config: httpHandlers Section :PageHandlerFactory
Path : $WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG
< httpHandlers >
< add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/ >
< /httpHandlers >
کلاس PageHandlerFactory ، يک HTTP handler factory است که وظيفه آن ارائه نمونه اي از يک HTTP handlerبوده که قادر به برخورد مناسب با درخواست ارسالي است.مهمترين رسالت PageHandlerFactory ، يافتن کلاس ترجمه شده اي است که نشاندهنده صفحه ASP.NET درخواستي مي باشد. در صورتيکه از ويژوال استوديو دات نت به منظور ايجاد صفحات ASP.NET استفاده مي گردد ، صفحات وب از دو فايل جداگانه ( يک فايل با انشعاب aspx . ، شامل صرفا" کنترل هاي وب و تگ هاي HTML و يک فايل aspx.vb و يا aspx.cs شامل کلاس code-behind ( کد سمت سرويس دهنده ) ) ، تشکيل مي گردند. در صورتيکه از ويژوال استوديو دات نت استفاده نمي گردد ، مي توان از يک بلاک سمت سرويس دهنده
آشنائی با فرم‌های وب در ASP.NET
به عنوان یک برنامه نویس ویژوال بیسیک شما می توانید برنامه های تحت اینترنت نیز بنویسید. به طور معمول برنامه نویسان ویژوال بیسیک به سمت ASP که یک تکنولوژی از مایکروسافت است متمایل هستند. دلیل این امر هم شباهت میان VB و VBScript می باشد. بزرگترین ایرادی که ASP کلاسیک دارد نداشتن یک محیط ویژوال مانند فرم‌های معمولی بیسیک است. مایکروسافت با Visual InterDev سعی کرد این کمبود را جبران کند اما چندان موفق نبود. بالاخره در ویژوال بیسیک دات نت ترکیبی از InterDev و ویژوال بیسیک وجود دارد و امکانات فرم‌های ویژوال بیسیک را برای اینترنت نیز فراهم می کند.
Web Form ها یکی از اجزای تکنولوژی ASP.NET است که به برنامه نویس های اکثر زبان ها این امکان را می دهد که یک قالب ویژوال با HTML و یک محیط برنامه‌نویسی تحت سرور با کدهای پیشرفته داشته باشند.
Web From ها در عمل
بهترین راه برای فراگیری این تکنولوژی یک مثال عملی از آن است. پس از مثال معروف Hello World برای شروع استفاده می کنیم.
آماده سازی محیط
قبل از شروع ابتدا باید نرم‌افزارهای مورد نیاز را از روی لیست زیر نصب کنید. اگر ویژوال استودیو دات نت را به شکل کامل و بر روی ویندوز 2000 یا اکس پی نصب کردید احتیاج به مراحل زیر ندارید.
 سیستم عامل شما باید حتما ً از نوع ان تی باشد، ویندوز 2000 (سرور یا Professional)، ویندوز اکس پی Professional و یا ان تی سرور 4.
 باید NET Framework. بر روی سروری که می خواهید با آن کار انجام دهید یا برنامه شما بر روی آن اجرا خواهد شد نصب شده باشد. اگر ویژوال استودیو دات نت را نصب کرده اید مشکلی در این مرحله ندارید.
 مایکروسافت توصیه کرده که سیستم فایل هارد دیسک سرور شما بهتر است NTFS باشد، هم به دلیل مسائل امنیتی و هم سرعت بیشتر.
Hello World
در فرم مخصوص ایجاد یک پروژه جدید ASP.NET Web Application را انتخاب کنید و نام آن را HelloWorld قرار دهید. دقت کنید که مکان ذخیره پروژه http://localhost باشد.
سپس بر روی کلید OK کلیک کنید تا یک Solution جدید ایجاد گردد. به طور قراردادی ویژوال استودیو یک Web Form با نام WebForm1.aspx ایجاد می کند. دقت کنید که پسوند فایل چه تغییری کرده است.
وقتی بر روی کلید OK کلیک می کنید چند عمل در پشت صحنه انجام می شود. به غیر از ایجاد کردن یک شاخه در دایرکتوری Visual Studio Projects، ویژوال استودیو یک Web Application نیز در سروری که انتخاب کرده اید ایجاد می کند. بر روی سرور، ویژوال استودیو دات نت:
 یک دایرکتوری با نام پروژه در شاخه inetpub/wwwroot ایجاد می کند. این دایرکتوری را به عنوان یک IIS Application معرفی کرده و اجازه اجرای Script را بر روی آن می دهد. اگر FrontPage Server Extensions را نصب کرده باشید یک FrontPage Web ایجاد می کند تا با FrontPage هم بتوانید به آن دسترسی داشته باشید.
می توانید همانگونه که با فرم های معمولی ویژوال بیسیک کار می کردید از Web Formی که جلوی شما است استفاده کنید، یعنی به شما امکان استفاده از Toolbox و استفاده از کامپوننت های درون آن بر روی Web Form داده شده است. یک Label را از Toolbox برداشته و بر روی قسمت بالای فرم قرار دهید و خاصیت Text آن را به Hello World تغییر دهید.
برای این مثال تمام کاری که لازم بود انجام شود را انجام دادیم. حالا می توانیم برنامه را اجرا کنیم. قبل از اینکار از Toolbar و در قسمت Solution Configuration به جای Debug ،Release را انتخاب کنید. حالا بوسیله کلید F5 برنامه را اجرا کنید. اگر هیچ مشکلی در سیستم نباشد باید صفحه مرورگر باز شود و فایل WebForm1.aspx نمایش داده وبر روی آن Hello World نوشته شود.
بر روی صفحه مرورگر کلید سمت راست موس را بزنید و View Source را انتخاب کنید تا ببینید چه مطالبی در سورس این صفحه آمده است. همانطور که می بینید کدهایی به HTML است که بوسیله فایل aspx در زمان اجرا ایجاد شده است. همانطور که می بینید یک HTML Form در این متن دیده می شود در حالی که ما چنین چیزی را اضافه نکرده بودیم، درباره این مساله در ادامه توضیح خواهم داد. Labelی که اضافه کرده بودیم در تگ Span قرار دارد. تگ Span مانند یک Container برای Label ما است و اطلاعات آن را در خود نگهداری می کند. به ویژوال استودیو دات نت باز می گردیم. همانطور که دیدید Web Form ها خیلی شبیه فرم های معمولی ویندوز هستند. در Web From جدیدی که می سازیم این خاصیت را بیشتر امتحان می کنیم. در برنامه Hello World که ایجاد کردیم تنها یک Web Form داشتیم: WebForm1.aspx. یک Web Form دیگر می سازیم تا کارهای بیشتری با آن انجام دهیم. منوی Project | Add Web Form را انتخاب کنید. در فرمی که باز می شود Web Form را انتخاب کنید و مطمئن شوید که نام آن WebForm2.aspx است. (قبل از این کار ویژوال استودیو را از حالت اجرای برنامه خارج کنید)
بر روی Open کلیک کنید تا WebForm2.aspx در Solution ایجاد شود. بر روی WebForm2.aspx در Solution Explorer دو بار کلیک کنید تا مطمئن باشید که فرمی که تازه ایجاد کرده اید فعال است. مانند مثال قبلی یک Label بر روی فرم قرار دهید، سپس یک Button در زیر آن قرار دهید و اندازه هر دو را یکسان کنید. بر روی Label کلیک کنید و از پنجره Properties خاصیت ID را انتخاب کنید و آن را به lblText تغییر دهید. سپس بر روی کلید کلیک کنید و ID آن را به btnSubmit تغییر دهید. بر روی کلید یک بار کلیک کنید، سپس کلید Enter را بزنید تا به قسمت نوشتن کد برای این کلید وارد شوید.
در ASP.NET هر کدام از کنترل ها، کدی در پشت صحنه برای خود دارند. همانطور که مشاهده می کنید یک روال با نام btnSubmit_Click وجود دارد که هنگامی که بر روی کلید کلیک می شود اجرا می شود. کدی که در این روال نوشته شده باشد در سرور اجرا می شود و نه در مرورگر کامپیوتر کاربر. کد زیر را در روال مورد بحث بنویسید:
lblText.Text = "Hello World"
همانطور که مشاهده کردید IntelliSense وارد عمل شده و وقتی بعد از lblText، نقطه را تایپ کردید لیستی از خواص و متد های مربوط به Label را به شما نمایش داد. این خاصیت در InterDev هم وجود دارد ولی در ویژوال استودیو دات نت از امکانات بیشتر و لیست پرمحتواتری برخوردار است.
پنجره کد را ببندید و به قسمت طراحی Web Form بروید، خاصیت Text کلید را به Submit تغییر دهید. حالا برنامه را امتحان می کنیم. اگر سعی کنید تا برنامه را بوسیله کلید F5 اجرا کنید دوباره WebForm1.aspx نمایش داده خواهد شد، زیرا که این فرم، فرم ابتدایی در پروژه ما است. برای اینکه WebForm2.aspx به فرم ابتدایی تبدیل شود در پنجره Solution Explorer بر روی WebForm2.aspx کلید سمت راست موس را بزنید و سپس Set As Start Page را انتخاب کنید. حالا می توانید برنامه اجرا کنید.
Web Form جدید، WebForm2.aspx در مرورگر اینترنت نمایش داده می شود در حالی که بر روی آن یک Label و یک کلید وجود دارد. بر روی کلید کلیک کنید تا متنی که تایپ کرده بودید در Label نمایش داده شود. همانطور که می بینید برنامه مانند فرم های معمولی ویندوز اجرا می شود.
ارسال ایمیل در ASP.NET با استفاده از HTML Template
آیا تاکنون سعی کرده اید برای سایت خود خبرنامه ایجاد کنید؟ آیا تاکنون وسوسه شده اید که سیستمی طراحی کنید که در صورتی که بینندگان سایت شما نظرات خود را در سایت شما وارد کنند برای آنها یک Email تشکرآمیز ارسال کنید؟ آیا می دانید ساختن یک HTML Template زیبا برای خبرنامه شما و استفاده همیشگی از آن جهت ارسال خبرنامه در ASP.NET بسیار ساده صورت می گیرد؟ چنانچه سوالات بالا شما را به دانستن بیشتر ترغیب کرده است به شما تبریک می گویم! چرا که در ادامه این مقاله شما روش بسیار ساده ارسال Emailهای HTML زیبا را بدون اینکه نگران چگونگی کدنویسی HTML متغیر رشته ای Body در MailMessage باشید را فرا خواهید گرفت.
برای شروع بیایید به روش کار نظری بیاندازیم: خوب احتمالا شما با روش ساختن یک نمونه از آبجکت MailMessage که در ASP.NET برای ارسال Email استفاده می شود آشنایی دارید (اگر این چنین نیست در ادامه مقاله به طور اجمالی توضیحاتی ارائه شده است) تنها قسمتی که باید مورد توجه قرار دهید این است که چگونه می توانیم Body نامه خود را به فرمت HTML و بدون نیاز به اینکه تمامی تگها را پشت سر هم در یک رشته طولانی و سردرگم کننده تایپ کنیم، درآوریم. یک ایده جالب این است که ما Template نامه خود را با استفاده از ادیتورهای WYSIWYG مثل FrontPage یا Dreamweaver طراحی کنیم و سپس تمامی کدهای HTML آن را درون یک متغیر رشته ای Import کرده و از آن استفاده کنیم. این کار بسیار آسان است. اما می توان این نامه را برای هر کاربر کمی سفارشی (Customize) کرد! برای مثال شما می توانید در ابتدای نامه کاربر را با نام وی مورد خطاب قرار دهید. بهتر است از این پس توضیحات را همراه با کدنویسی دنبال کنیم. (کلیه کدهای Server Side به زبان VB.NET نوشته شده است) سه گام اساسی برای این کار وجود دارد:
ساختن Template مورد نظر شما جهت ارسال Email:
برای این کار کافی است که Template مورد نظر خود را به فرمت HTML طراحی کنید. این به خود شما بستگی دارد که کدهای HTML را به صورت دستی بنویسید و یا از ادیتورهای WYSIWYG مانند FrontPage یا Dreamweaver یا !GoLive استفاده کنید. تنها تفاوتی که در اینجا وجود دارد این است که شما بایستی قسمتهایی از متن نامه خود را که متغیر هستند (مانند نام گیرنده Email، آدرس پست الکترونیکی وی و ...) را به گونه ای از بقیه قسمتها متمایز کنید. برای مثال اگر شما می خواهید در ابتدای نامه، دریافت کننده نامه را با نام خود مورد خطاب قرار دهید عبارت را به صورت زیر وارد کنید: "سلام "#NAME# لطفا توجه کنید که هیچ محدودیتی در تکنیک به کار رفته وجود ندارد و قرار دادن کاراکترهای ## فقط جهت متمایز ساختن این قسمت از محتوای استاتیک صفحه است و شما می توانید به صور دیگر آن را مشخص کنید مثلا ?NAME? یا هر چیز مشابه دیگر. این قسمت بعدا با نام شخص مورد نظر ما جایگزین می شود. نکته قابل ذکر دیگر اینکه چنانچه قصد دارید نامه خود را فارسی ارسال کنید تگ زیر را فراموش نکنید:
< meta http-equiv = " Content-Type " content = " text / html; charset = utf-8 " >
خواندن فایل Template جهت قراردادن در Body نامه شما:
پس از اینکه Template را آماده نمودید بایستی این فایل را بخوانید، قسمتهای مورد نظر (متمایز شده با ##) را با عبارات مورد نظر خود (که می توانید از Database استخراج کنید) جایگزین کنید و این متن را به صورت یک متغیر رشته ای در Body نامه خود قرار دهید (گام 3). این کار به وسیله کد زیر صورت می پذیرد: (قبل از هر چیز شما بایستی Namespace مورد نیاز که در اینجا System.IO می باشد را Import کنید)
Imports System.IO
Dim reader As StreamReader
Dim strFileName As String = Server.MapPath( " templatel.htm " )
Dim strFileT ext
reader = File.OpenText( strFileName )
While reader.Peek < > -1
strFileText + = reader.ReadLine( )
End While
reader.Close()
strFileText = Replace( strFileText, "#Username#", Name.Text)
strFileText = Replace(strFileText, "#MsgID#", Request("MsgID" ))
strFileText = Replace(strFileText, "#AuthorID#", Request("AuthorID" ))
حال بیایید نگاهی به کد فوق بیاندازیم: در سطر اول شما یک شی از نوع StreamReader که جهت خواندن فایلهای متنی به کار می رود را می سازید و در سطر بعدی مسیر فیزیکی فایل Template خود را در متغیر رشته‌ای strFileName ذخیره می کنید.
نکته: در صورتیکه بخواهید در فایل کلاس خود از کد فوق استفاده کنید بایستی مسیر فیزیکی فایل را با استفاده از System.Web.HttpContext.Current.Server.MapPath("template.htm") به دست آورید. اما در Code Behind یک WebForm همان Server.MapPath() کافی است.
سپس در سطر بعدی ما با استفاده از متد OpenText فایل مورد نظر را باز کرده و متن آن را در Reader قرار می دهیم. حال در یک حلقه While...End While سطر به سطر فایل Template را (که در اینجا کدهای HTML ما هستند) می خوانیم و در متغیر strFileText ذخیره می کنیم. Reader.Peek <> -1 بررسی می کند که آیا به انتهای فایل رسیده ایم یا خیر. پس از اینکه کل فایل را خوانده و در متغیر ذخیره کردیم. شی reader را می بندیم.
در اینجا شما باید Template نامه خود را برای کاربر خاص Customize کنید. یعنی عبارات محصور شده با ## را با اطلاعات کاربر (که از بانک اطلاعاتی استخراج می شود و یا از یک Query String دریافت می شود) جایگزین کنید. در مثال بالا مقدار اول در Template با مقدار یک Textbox و دو مورد بعدی با Query String های انتهای یک URL جایگزین می شود. حاصل کار یک متغیر رشته ای به نام strFileText است که حاوی کد HTML مورد نیاز شما برای ارسال یک HTML Email می باشد. که مثلا عبارت ابتدای آن به صورت زیر در آمده است: "سلام مهدی"
استفاده از قالب Import شده فوق و ارسال Email:
حال به آسانی Email را ساخته و ارسال می کنیم. بدین ترتیب: (Imports System.Web.Mail را فراموش نکنید!)
'Creating and sending mail to user
Dim objMail As New MailMessage()
objMail.From = "You@YourDomain.com"
objMail.To = Email.Text.Trim
objMail.Subject = "YOUR SUBJECT GOES HERE..."
objMail.BodyFormat = MailFormat.Html
objMail.BodyEncoding = System.Text.Encoding.UTF8
objMail.Body = strFileText
SmtpMail.SmtpServer = "smtp.YOURSERVER.com"
SmtpMail.Send(objMail)
این قسمت نیاز به توضیخ چندانی ندارد. جز اینکه objMail.To را بایستی به صورت داینامیک (از DB و ...) تغییر دهید (در اینجا مقدار از یک Textbox دریافت شده است)، SMTP Server خود را مشخص کنید و Email را ارسال کنید! به همین سادگی. بقیه موارد بسیار واضح هستند.
لطفا به این نکته توجه کنید که برخی SMTP Serverهایی که نیاز به Authentication دارند را نمی توان برای این منظور (ارسال Email به آدرس های خارج از SMTP Server فوق) مورد استفاده قرار داد. در این خصوص لطفا به Administrator سرور خود رجوع کنید. 

آموزش ASP عملگرهای VBScript   

 در این مقاله در مورد عملگرها بحث خواهیم نمود که جزئی از مهم ترین و پرکاربرد ترین مباحث VBScript میباشد. عملگرها به ما اجازه می دهند که با داده ها کار کنیم و آنها را ترکیب کنیم تغییر دهیم و یا جایگزین کنیم. ۵ کلاس اصلی از عملگر ها وجود دارند که ما در مورد آنها بحث خواهیم کرد. اولین نوع آنها عملگر انتساب(Assignment) میباشد که اکنون آن را ملاحظه خواهیم نمود:
● عملگر انتساب
ما در مورد متغیرها بحث کردیم و توضیح دادیم که داده ها در آنها ذخیره می گردند. اما درباره این که چگونه داده ها در متغیر ها ذخیره می شوند توضیحی داده نشد.عادی ترین راه برای ذخیره داده های متغیرها استفاده از عملگر انتساب می باشد. عملگر انتساب در VBScript علامت مساوی (=) می باشد. عملگر انتساب هر چیزی که در سمت راست آن قرار بگیرد در متغیری که در سمت چپ آن قرار می گیرد ذخیره می کند.
برای مثال کدهای زیر را در نظر بگیرید:
<%
Dim MyVariable
MyVariable = ۳
MyVariable = ۵
%>
اگر شما قبلا برنامه نویسی نکرده باشید ممکن است از این که متغیر MyVariable در یک لحظه هم مقدار ۳ و هم مقدار ۵ را گرفته است متعجب شده باشید. باید دقت نمایید که عملگر انتساب را با مشابه آن در مبحث ریاضیات اشتباه نگیرید. جمله سوم می گوید که متغیر MyVariable برابر ۵ می باشد. این جمله در داخل متغیر MyVariable مقدار ۵ را ذخیره می کند.
به منظور یک دوره کوتاه ما خط به خط این کدها را مورد بررسی قرار می دهیم.
دردومین خط همان طور که قبلا توضیح داده شد یک متغیر تعریف شده است. در این هنگام یک مقدار Empty در داخل متغیر MyVariable ذخیره می گردد. در خط بعد مقدار ۳ به متغیر MyVariable تخصیص داده می شود. بنابراین در داخل جعبه ای که دارای بر چسب MyVariable میباشد هم اکنون مقدار ۳ وجود دارد. در انتها مقدار ۵ به متغیرMyVariable تخصیص داده می شود. مقدار ۳ که وجود داشت اکنون از بین می رود!
به این نکته در هنگام برنامه نویسی دقت کنید که در داخل متغیر ها هرگز مقادیر جدیدی را جایگزین ننمایید تا زمانی که اطمینان حاصل کنید کارتان با مقدار قبلی تمام شده است. اگر مسلم شد که به جایگزینی یک مقدار برای استفاده بعدی نیاز دارید ممکن است یک متغیر دومی را ایجاد کنید و آن را به شکل زیر نگهداری نمایید:
<%
Dim MyVariableX, MyVariableY
MyVariableX = ۳
MyVariableY = MyVariableX
MyVariableX = ۵
%>
در اینجا خط دوم با دو متغیر تعریف شده است MyVariableX و MyVariableY. در ابتدا در هر دو مقدار Empty قرار داده می شود.
در خط بعد مقدار ۳ در داخل MyVariableX قرار داده می شود. مقدار دهی تنها با مقادیر صریح مثل ۳ یا ۵ انجام نمی گیرد بلکه با متغیر ها نیز صورت می گیرد. در نهایت در هر دو متغیر MyVariableY و MyVariableX مقدار ۳ ذخیره می گردد.
سرانجام در داخل MyVariableX مقدار ۵ قرار داده می شود. این مساله بر روی متغیر MyVariableY تاثیری ندارد. خط ۳ هر چه که در داخل MyVariableX وجود دارد به داخل MyVariableY کپی می کند اما این کار هیچ نوع ارتباط دائمی بین دو متغیر MyVariableX و MyVariableY ایجاد نمی کند با این کار MyVariableX با مقدار جدید مورد استفاده قرار می گیرد. اما اگر شما هنوز به مقدار قبلی نیاز داشته باشید از طریق MyVariableY به آن دسترسی خواهید داشت.
اکنون به آخرین نسخه ازین کدها نگاه کنید:
<%
Dim ivar
ivar = ۳
۵ = ivar
%>
آیا فکر می کنید این کد ها کار میکند؟ (اولین پاراگراف مربوط به عملگرهای انتساب را در صورتی که اطمینان ندارید دوباره بخوانید.)
جواب منفی است. این کدها معتبر نمی باشد. دو خط اول قابل انتظار می باشد اما خط سوم بی معنی است. عملگر انتساب هر چه که در سمت راست آن قرار دارد در داخل متغیر سمت چپ کپی می کند.در این نمونه عدد ۵ یک متغیر نیست و در سمت چپ قرار دارد. عدد ۵ نمیتواند به عنوان نام یک متغیر به کار رود زیرا نام متغیر ها باید با یک حرف آغاز شود.
ما از نوع integer در این مثال ها استفاده نموده ایم اما می توانستیم از انواع دیگر استفاده کنیم. عملگر انتساب با نوع های Booleans, Strings, doubles, singles به خوبی کار می کند:
StrName = "X"
Bol_The_Assignment_operator_Is_Powrful = True
Dtjills_Birthday = #۰۳/۰۶/۱۹۴۶#
نکته: محصور کردن داده با علامت # داده را به سه قسمت ۳ و ۶ و ۱۹۴۶ تقسیم می کند.
ممکن است متوجه شده باشید که در لیست قبل از عملگر انتساب استفاده شده است. لیست زیر یک نسخه تغییر یافته از این کد ها می باشد که عملگر انتساب را با کمی تغییر نشان میدهد.
نام فایل را AssignmentDemo.asp بنامید:
<% @ Language="VBScript" %>
<% Option Explict
Dim strName, iAge
%>


<%
Response.Write("Before assigning a value, strName has value ")
Response.Write(strName)
%>


<%
strName= "James"
iAge = ۲۱
Response.Write( "Now strName has value ")
Response.Write(strName)
%>


<%
Response.Write( "Now iAge has value " )
Response.Write(iAge)
%>


● تجزیه:
خط ۳ دو متغیر را به نام های StrName و iAge تعریف کرده است. خطوط ۸ و ۹ یک پیغام را می نویسد که نشان می دهد که StrName قبل از این که ما از عملگر انتساب استفاده نماییم چه مقداری داشته است.
خطوط ۱۳ و ۱۴ مقادیر ۲ متغیر را تنظیم می کنند. خطوط ۱۵ و ۱۶ مقدار جدید داده شده به متغیر StrName را نشان می دهند. به خروجی نگاه کنید شما می توانید هم اکنون تایید کنید که عمل انتساب درست صورت گرفته است. خطوط ۲۰ و ۲۱ به طور مشابه مقدار جدید داده شده به متغیر iAge را نشان می دهد.

معرفی اوليه  VB.NET

يک برنامه کامپيوتری ، از مجموعه ای دستورالعمل که نوع و نحوه انجام يک فعاليت را برای کامپيوتر مشخص می نمايند ، تشکيل می گردد. دستورالعمل های نوشته شده بعنوان نمونه ممکن است به کامپيوتر اعلام نمايند  که تعدادی از اعداد را با يکديگر جمع  و يا دو عدد را بايکديگر مقايسه و بر اساس نتيجه  بدست آمده ، اتخاذ تصميم نمايد. دستورالعمل های نوشته شده ، صرفا" برای کامپيوتر قابل فهم و اجراء خواهند بود.کامپيوتر دستورالعمل های نوشته شده را اجراء و ماحصل آن رسيدن به اهدافی خواهد بود که بر اساس آن برنامه طراحی و پياده سازی  شده  است . دستورالعمل ها  ، می بايست با استفاده از يکی از زبانها ی برنامه نويسی نوشته شده ( کد ينگ ) و در ادامه در اختيار کامپيوتر قرار داده شوند. زبانهای برنامه نويسی متعددی نظير : فرترن ، بيسيک ، کوبال ، پاسکال، ،C ، جاوا ، ويژوال بيسيک و  ... وجود دارد.
 برنامه نويسی کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان  است . برای نيل به هدف فوق ، می بايست تمامی مراحل لازم  بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل های ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار برای آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم می گردد )  . VB.NET ، زبانی است که می توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان )  مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، می توان محصولاتی راايجاد  که زمينه استفاده از آنان  در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيری يک تکنولوژی در ابتدا می بايست شيوه راه رفتن را بياموزيم  و در ادامه اقدام به دويدن نمود .
VB.NET يکی از زبان های  حمايت شده در دات نت می باشد . با استفاده از زبان فوق علاوه بر اينکه می توان برنامه های مبتنی بر ويندوز را پياده سازی نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه های مبتنی بر وب که از تکنولوژی ASP.NET استفاده می نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان  در دات نت ، مجموعه مقالاتی در رابطه با آموزش اصولی اين زبان آماده شده که بتدريج بر روی سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفی اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با  ويژگی های منحصر بفرد برنامه های مبتنی بر ويندوز در قياس با برنامه های مبتنی بر DOS ، آشنا شده و پس از مروری مختصر به روند شکل گيری نسخه های متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم .

برنامه نويسی مبتنی بر DOS در مقابل ويندوز برنامه نويسی مبتنی بر  ويندوز دارای تفاوت های عمده ای نسبت به برنامه نويسی سنتی در محيط DOS است.برنامه های  DOS ،  مسيری دقيق و مشخص  را ازابتدا تا پايان دنبال می نمايند . رويکرد فوق ، باعث بروز محدوديت هائی در رابطه با عملکرد برنامه ها  از يکطرف و تحميل محدوديت هائی به کاربران در طی نمودن مسير مشخص شده ، می گردد. از زاويه ای خاص می توان عملکرد  يک برنامه مبتنی بر  DOS را  مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائی سالن ،  می بايست طول سالن  طی تا به انتهای آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، می بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا"   امکان بازنمودن درب های خاصی  ، وجود خواهد داشت . ويندوز ، دنيای جديدی از برنامه نويسی مبتنی بر "رويداد"  را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک  Textbox ، نمونه هائی از يک "رويداد" می باشند. کدهای  نوشته شده ، نحوه برخورد با يک رويداد را مشخص می نمايد.  برای رسيدن به انتهای يک سالن کافی است بر روی "انتهای سالن " ، کليک نمود و ديگر ضرورتی به پيمودن تمامی مسير تا رسيدن به انتهای سالن نخواهد بود . درصورتيکه به انتهای سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلی نيست که انتظار آن را داشته ايم ، بسادگی می توان مقصد جديدی را برای خود انتخاب ، بدون اينکه ضرورتی به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل های لازم در ارتباط با حرکت شما  را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ی مورد نظر انجام خواهد داد .  با استفاده از VB.NET ، می توان کدهای لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان می توانند  کدهای لازم  در رابطه با رويدادهائی که امکان  تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه می توان از نوشتن کدهای ديگر بمنظور برخورد با رويدادهای غيرضروری ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معنی است که اگر می خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد  "کليک" را داشته باشد ، می بايست صرفا" کد مربوط به رويداد " کليک"،  نوشته گردد و الزامی به نوشتن کدهای  لازم بمنظور برخورد با رويداد  "کليک مضاعف" ، وجود نخواهد داشت . در دنيای برنامه نويسی DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام می دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
يکی ديگر از مزايای مهم  برنامه های  ويندوز ، عدم وابستگی برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بينی و برنامه نويسان نياز به آگاهی از نحوه عملکرد يک دستگاه سخت افزاری خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتی به آگاهی از  نحوه عملکرد  هر نوع چاپگر ليزری، بمنظور ايجاد خروجی مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين های عمومی که با درايورهای مورد نظر مرتبط می گردند ، فراهم می نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد .
روتين های عمومی اصطلاحا" Windows (API ) Application Programming Interface ناميده می شوند .

 تاريخچه ويژوال بيسيک قبل از معرفی ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه  استفاده از   ++C   بهمراه  موارد پيچيده ای در اين خصوص  بودند . بدين  ترتيب ، صرفا" افراد خاص آموزش ديده،  قادر به خلق نرم افزارهای قدرتمند  بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و می توان اين ادعا را داشت که امروزه خطوط زيادی از برنامه های نوشته شده  با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسی تحت ويندوز را با حذف عمليات اضافی برای نوشتن کدهای لازم جهت طراحی بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ،  زمانيکه بخش رابط کاربر ، ترسيم می گردد ، برنامه نويس می تواند کدهای لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنيای برنامه نويسی با تغيير مهمی مواجه گرديد. در اين راستا امکانات مناسبی برای نوشتن برنامه های مبتنی بر بانک های  اطلاعاتی ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدی با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه های شماره چهار و پنج ، قابليت های نسخه سه را افزايش و اين امکان را  برای  پياده کنندگان نرم افزار فراهم نمود  تا برنامه های خود را جهت اجراء در محيط ويندوز 95 ، طراحی و پياده سازی نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن  کدهائی گرديدند که امکان استفاده از آنان  توسط ساير پياده کنندگان نرم افزار که از زبانی ديگر استفاده می کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدی بمنظور دستيابی به بانک های اطلاعاتی را ارائه نمود: ADO)ActiveX Data Objects )  . يکی از اهداف اوليه  طراحی  ADO ، امکان دستيابی به بانک های اطلاعاتی برای پياده کنندگان برنامه های مبتنی بر وب است که از تکنولوژی ASP ، استفاده می نمايند.
همزمان با ارائه جديدترين نسخه ويژوال بيسيک که VB.NET ناميده می شود ، بسياری از محدوديت های مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته  ويژوال بيسيک با انتفادات  فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياری آن را نظير يک اسباب بازی در دنيای وسيع زبان های برنامه نويسی می پنداشتند. VB.NET با  غلبه بر مشکلات نسخه های پيشين ، توانسته است در مدت زمان کوتاهی ، بعنوان يک ابزار پياده سازی بسيار قدرتمند مطرح و گزينه ای مناسب برای برنامه نويسان در تمامی سطوح باشد .

نصب VB.NET برای نصب VB.NET ، از دو رويکرد متفاوت می توان استفاده کرد :

  • نصب بهمراه  ويژوال استوديو دات نت

  • نصب نسخه استاندارد

هر يک از گزينه های فوق ، امکان ايجاد برنامه های مبتنی بر ويندوز را فراهم می نمايند . مراحلی که در ادامه ذکر می گردد ، نحوه نصب ويژوال استوديو را تشريح  می نمايد .

  • مرحله اول : برنامه Setup.exe را از روی CD مربوطه فعال نمائيد.

  • مرحله دوم : جعبه محاوره ای ، مراحل و اولويت های عمليات  نصب را نشان خواهد داد. بمنظور صحت عملکرد  VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازی عناصر (Components) است . بر روی گزينه Windows Component Update ، کليک نمائيد.

  • مرحله سوم : برنامه نصب در ادامه سيستم را بررسی تا نوع عناصری را که می بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازی به وضعيت ماشينی که بر روی آن ويژوال استوديو دات نت نصب می گردد، بستگی خواهد داشت .

  • مرحله چهارم : با توجه به اينکه ممکن است در زمان بهنگام سازی لازم باشد چندين مرتبه سيستم راه اندازی گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتی به نشستن و نگاه کردن به کامپيوتر و واکنش لازم ( درج نام و رمز عبور به سيستم ) پس از هر مرتبه راه اندازی سيستم نباشد .  بدين ترتيب در زمان راه انداری سيستم ،  عمليات مربوطه بصورت اتوماتيک و بدون نياز به تايپ نام و رمز عبور ، انجام خواهد شد . عمليات فوق ، اختياری است و در صورتيکه گزينه فوق انتخاب نگردد ، با هر مرتبه راه اندازی سيستم، پيام مناسب ارائه و می بايست واکنش لازم ( تايپ نام و رمز عبور)  را انجام داد .

  • مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now  ، بهنگام سازی عناصر (Components) آغاز می گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده می شود  . در مقابل عنصر جاری برای بهنگام سازی نيز يک فلش قرمز رنگ نسان داده می شود.

  • مرحله ششم : پس از بهنگام سازی عناصر ، مجددا" به صفحه اصلی Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم می گردد.( کليک نمودن برروی گزينه Visiual Studio.NET )
    نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازی نمائيد ، لازم است IIS و FrontPage Extensions  قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روی کامپيوتری نصب می گردد که دارای سيستم عامل ويندوز 2000 نسخه
    Professional  است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمی توانيد برنامه های تحت وب را بصورت محلی بر روی کامپيوتر خود پياده سازی نمائيد .

  • مرحله هفتم : نظير اکثر برنامه های نصب ، ليستی از گزينه های موجود ( شامل عناصر ) برای نصب در اختيار شما قرار می گيرد . شما می توانيد ، صرفا" آنچيزی را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتی به استفاده از ويژوال ++C دات نت را نداريد ، می توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه ای که در اين مرحله انتخاب نمی گردد ، می توان در صورت ضرورت آن را در آينده نصب کرد. برای هر يک از امکاناتی  که قرار است نصب گردند ، سه بخش اطلاعاتی متفاوت نمايش داده می شود :
    بخش Feature Properties . فايل ها ی مورد نظر برای نصب و ميزان فضای مورد نياز را نشان می دهد .
    بخش Feature description . هر Feature چيست و چه عملياتی را انجام می دهد .
    بخش Space Allocation ، وضعيت  فضای ذخيره سازی هارد را  با توجه به گزينه های انتخاب شده ، نشان خواهد داد .
    نکته : زمانيکه ويژوال استوديو دات نت ، اجراء می گردد مجموعه ای از اطلاعات بين ديسک و حافظه مبادله می گردد . بنابراين لازم است به ميزان کافی ظرفيت آزاد  بر روی هارد ديسک وجود داشته باشد ، در اين راستا نمی توان دقيقا" مشخص نمود که به چه ميزان فضای آزاد نياز خواهد بود ولی حداقل يکصد مگابايت توصيه می گردد .

  • مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه ای گسترده از فايل های مستندات ( راهنما )  است . در اين مرحله می توان تنظيمات لازم در خصوص اجرای مستندات از طريق CD و يا دايرکتوری نصب شده بر روی هارد را انجام داد . در اين زمينه می توان يک مسير بر روی هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روی CD باقی بمانند .

  • مرحله نهم : پس از انتخاب عناصر مورد نظر برای  نصب  ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز می گردد . مدت زمان نصب ، بستگی به موارد انتخابی  و نوع سيستم دارد . مثلا"  نصب تمام ويژوال استوديو دات نت بهمراه تمامی مستندات بر روی يک ماشين با دارا بودن 256 مگابايت حافظه اصلی، سرعت  650 مگاهرتز و دوازده گيگابايـت هارد ديسک  ،  حدود يک ساعت طول خواهد کشيد .

  • مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسی لازم در خصوص بهنگام سازی  انجام می گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود .

پس از انجام مراحل فوق ، ويزوال استوديو دات نت بر روی سيستم نصب و محيط لازم برای نوشتن برنامه های VB.NET فراهم شده است

چه داستان دردناکی...

پسرک عاشق دخترک شد


آن قدر که شب و روز به خاطرش تب می کرد و از دوری دخترک تا

دم دمای صبح به ستاره ها خیره می شد و خوابش نمی برد.

پسرک آن قدر عاشق شد که شهره ی شهر شد


ولی حتی دخترک حتی یه ذره هم دوسش نداشت !!!


نمی تونست اون رو توی دلش راه بده چون دلیلی پیدا نمی کرد.


پسرک وقتی فهمید انگار تمام غصه  ها توی دلش رخنه کردن


دخترک به پسرک گفت:


دوست داشتن من اون قدر مهمه که تو به خاطرش داری دیونه میشی؟


پسرک گفت:اون قدر عزیزی که پریشونی من از عشق تو برام لذت بخشه

دخترک گفت:تو چرا این قدر دلباخته ای؟مگه من چی دارم که تواین

جوری شدی؟عشق چه قدر لذت بخش وعزیزه ؟


پسرک گفت:دنیایی که نگاه تو به من می ده با هیچ چیز عوض نمی

کنم و آرامشی که صدای تو به من می ده به هیچ آرامشی نمی دم.


دخترک هم طولی نکشید که عاشق پسرک شد


اون قدر دلباخته حرف های پسرک شد که به جنون کشید!!!


پسرک هم طولی نکشید بدون حتی نیم نگاهی به دخترک روی یه ورق

نوشت:

عزیزم تو دیگه دخترک رویای من نیستی ، صدات می لرزه ودیگه

آرامشی نداره،اون نگاه جنون آمیز تو، دیگه من و آروم نمیکنه .


پسرک برای دخترک نوشت که:عزیز روانی، عشق اون قدر ارزش

نداره که به خاطرش اون آرامشی رو که به من می دادی رو از دست

دادی.

بازباران...........

باز باران

 نه نگویید با ترانه

 باز باران بی ترانه با تمام بی کسی های شبانه

 میخورد بر مرد تنها،میچکد برفرش خانه

 دانه دانه،می خورد بر بام خانه

 یادم آید روز باران

 پا به پای بغض سنگین،تلخ و غمگین

 دلشکسته، اشک ریزان

عاشقی سرخورده بودم

 می دریدم قلب خود را

 دور میگشتی تو از من

 با دو چشم خیس وگریان

 میشنیدم از دل خود

 این نوای کودکانه

 زود برگردی به خانه

 آن دل تو جار میزد

 باز باران

 باز می گردم به خانه...