Dot net In Blue

شنبه، اسفند ۰۶، ۱۳۸۴

View State آشنایی با

اگر حتی برنامه نویس دات نت هم نباشید و فقط به برنامه نویسی برای وب علاقه داشته باشید حتما در سرس صفحات دات نتی بارگزاری شده روی سیستمان (سرس صفحه *.aspx که توی مرورگر میبینید ) با یک چیز عجیب و غریب و بدرد نخود به صورت :

 

 < input type="hidden" name="__VIEWSTATE" value="dDwtMTI1MzE5Njg3NTt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjtp =" />

 برخورد کرده اید این value که به نظر چرت و پرت هم میرسد گاهی بسیار طولانی میشود و چندین کیلوبایت فقط صرف این value نامفهوم میشود ، اما واقعا این چیست ؟؟ چرا باید باشد View State در حقیقت مجموعه ای از value های کنترل های داخل صفحه است !
 View State هیچ اطلاعاتی از سرور و کلاینت در خود نگهداری نمیکند و فقط تا زمانی وجود خواهد داشت که صفحه در مرورگر وجود دارد . مطمئنا هیچ انسانی نمیتواند از این string ای که به عنوان Valueبرای View State گذاشته میشود سر در بیاورد چون اطلاعات به صورت base64 کد شده اند و البته دقت میکنیم که کد شده اند و نه رمزنگاری ! base64 فقط کمک میکند تا رد بدل اطلاعات از طریق HTTP راحت تر باشد !
 خوب حالا این View State به چه درد میخورد ؟! تا به حال تعجب نکرده اید که چرا پس از ارسال صفحه به سرور و بازگشت آن اطلاعات کنترل های شما کماکان باقی میماند ؟؟ خوب کار، کار همین View State است ! مثلا برای ساختن یک دیتاگرید فقط یک بار به بانک اطلاعاتی مراجعه میکنید و آن را میسازید در روفت و آمد های بعدی همین View State است که به شما کمک میکند هربار مجبور نباشید به دیتابیس خود وصل شوید فقط وقتی که Page.IsPostback نیست باید این دیتاگرید یک بار و برای همیشه ساخته میشود !
 اما توجه کنید !درست است که درنظر اول این قضیه بسیار عالی به نظر میرسد ولی وقتی محتویات View State را در سرس صفحه میبینید شکه خواهید شد ! چرا این همه طولانی ؟!؟! خوب آن همه اطلاعات بالاخره باید ثبت شوند ! حالا فرض کنید که میدانید این صفحه فقط یک بار ساخته برای کاربر فرستاده میشود و دیگر رفت و برگشتی وجود نخواهد داشت که این همه اطلاعات به درد بخورد !
 آیا میشود از شر این مقدار سنگین برای View State راحت شد ؟؟ جواب بله است ! : تمام کنترل ها در دات نت سر انجام از کلاس Control مشتق میشوند ، به همین دلیل همه دارای property با عنوان EnableViewState هستند که به صورت پیش فرض true است با false نمودن این property شما میتوانید از داشتن View State برای آن کنترل صرف نظر کنید !
همینطور میتوانید درقسمت  بالای سرس  هر وب فرم این کار را انجام دهید:

<%@ Page ... EnableViewState="false" %>

اگر میخواهید از پایه در وبسایت خود این مقوله را غیر فعال کنید باید در web.config وارد کنید :

<pages enableViewState="false" />

 
 پس همیشه عاقلانه درباره EnableViewState تصمیم بگیرید. و ببینید کدام کفهه ترازو میچربد ؟ False یا True . View State چه type هایی را قبول میکند ؟ با آنکه View State برای type های محدودی پشتیبانی دارد خوشبختانه برای string, integer, boolean, ArrayLists و HashTable پشتیبانی در نظر گرفته شذه است .
View State حتی به شما این امکان را میدهد که اطلاعاتی را که میخواهید روی کلاینت ذخیره کنید ، طریقه این کار تقربا مشابهتی با Session State دارد ولی باید همیشه توجه کنیم که View State فقط تا وقتی اعتبار دارد که صفحه حاوی آن بسته نشده باشد !!!

ViewState ["SortOrder"] = "email"

در اینجا مقایسه ای بین View State و Session State به عمل آمده است .

View State Session State  
خیر بله استفاده از منابع سرور
ندارد 20 دقیقه  ( پیش فرض ) محدودیت زمانی
محدودیت ، پشتیبانی فقط  شامل :
strings, integers, Booleans, arrays, ArrayList, hashtable, custom TypeConverters
 
بله ذخیره سازی  تمام  type های دات نت
بله خیر طولانی کردن زمان لود صفحه

 

 آیا میتوان View State را رمز نگاری هم کرد ؟؟بله ، چرا که نه ! فقط دو قدم
 : 1) باید enableViewState="true" باشد

 2) باید machineKey validation type را به صورت 3DES تنظیم کنید به عبارت دیگر دو خط زیر را در web.config خود داشته باشید :

 < enableviewstate="true" enableviewstatemac="true"> < validation="3DES">

 

دنیای View State مانند تمام دنیا های دات نت در حوصله این وبلاگ نمی گنجد ، قصد فقط آشنایی بود ، ادامه مسیر با شما !

سه‌شنبه، اسفند ۰۲، ۱۳۸۴

راهی ساده برای ساختن سیستم لاگین ASP.net 2

راهی ساده برای ساختن سیستم لاگین ASP.net 2 در دات نت 2 تا حد امکان ساده سازی صورت گرفته است ! به یاد بیاورید وقتی با asp 3 میخواستیم یک سیستم لاگین برای یک وب سایت بسازیم چقدر مصیبت داشتیم !
 باید اطلاعات کاربر را درخل سیشن یا کوکی نگهداری میکردیم و بعد در هر صفحه باید چک میکردیم آیا این کاربر مجاز به دسترسی به صفحه هست یا نه و اگر نبود او را به صفحه لاگین هدایت میکردیم و بیاد بیاورید که به عنوان یک برنامه نویس حرفه ای باید بعد از لاگین کردن کاربر به همان صفحه ای که تقاضا کرده بود باز میگشت ، البته این همه کار در نسخه اول ASP.net بسیار ساده شده بود و با قراردادن یک سیستم authorization مبنتی بر ویندوز ، پاسپورت و اغلب وب فرم کار تمام میشد ! ولی باز هم مجبور بودیم یک کار تکراری را انجام دهیم ! طراحی فرم های ثبت نام ، ورود به سایت ، بازیابی کلمه عبور و .... و پیش ساخته شدن اینها تنها آرزویی بود که در سر میپروراندیم و هیچ فکر نمیکردیم که فقط با یک دراگ کردن ساده حتی لازم نباشد دیتابیس طراحی کنیم و برای خواندن ، نوشتن و به روزکردن اطلاعات کاربر کوئری صد من یک غاز بنویسیم !!!
 عجب دنیاییست ! کم به بیل گیتس بد و بیراه نگفتم ولی در این یک مورد واقعا" میکروسافت غوغا کرد! و اما چطور سیستم لاگین بسازیم !؟
 یک وب سایت جدید در ویژال استدیو دات نت باز کنید :

 File > new > web site

حالا از منوی web site موجود در toolbar ویژال استدیو ASP.net configuration را انتخاب کنید ، یک صفحه وب در مقابل شما به نمایش در می آید ، وارد قسمت Security شوید

. Use the security Setup Wizard to configure security step by step.

را انتخاب کنید و ویزارد را تکمیل کنید ، و یک کاربر جدید بسازید . خسته نباشید شما الان دارای یک سیستم security برای وب سایت جدیدتان هستید !
 میخواهد فرم ثبت نام را هم با هم بسازیم ؟! آماده شوید کار سختی در پیش داریم !؟!؟:
 یک صفحه وب جدید درست کنید و نام آن را registration.aspx بگذارید (یا هر اسم دیگری که دوست دارید ) حالا از ToolBox قسمت login را پیدا کنید و CreateUserWizard را داخل آن دراگ کنید . کار سخت شما تمام شد شما قسمت ثبت نام سایت خود را هم ساختید !
 میخواهید کمی از آن حالت ساده خارجش کنید و رنگ و لعابی به آن بدهید ؟!محتوای آن رذا کم و زیاد کنید و قسمتی که بعد از ثبت نام کاربر به او نمایش داده میشود را به میل خود تغییر دهید ؟؟ به محض اینکه موس خود را روی این کنترل ببرید (همین فرمی که دراگ کردید!) یک فلش در گوشه بالا سمت راست ظاهر میشود ، از طریق آن میتوانید کارهای بیشتری انجام بدهید ! با بقیه کنترل های موجود در قسمت لاگین toolbox هم همین رفتار را بکنید و از برنامه نویسی asp.net لذت ببرید !
 احتیاط کنید : من از همینجا از شما دوست محترم که asp3 کار کردید عاجزانه تقاضا دارم روش ساختن لاگین خود را در asp.net عوض کنید ! (والبته به دوستانتان هم این مطلب را بیاموزید !)

چهارشنبه، بهمن ۲۶، ۱۳۸۴

قبول پروژه های برنامه نویسی و طراحی وب سایت

اینجانب حسین روزنامه چی افتخار دارم خدمات برنامه نویسی دات نت را به صورت پروژه ای و با پشتیبانی 24 ساعت و 7 روز در هفته به هم میهنان عزیزم ارائه کنم .
 زمینه اصلی فعالیت من توسعه کلان سایت های ایتنرنتی و نرم افزارهای اتوماسیون اداری وب بیس و ویندوز بیس با استفاده از دات نت و به صورت ساختار یافته با طراحی ابجکت اورینتد میباشد که این مهم علاوه بر اینکه احتمال به وجود آمدن خطا را در برنامه به حد اقل میرساند ، به روز کردن برنامه را در حداقل زمان ممکن و با کمترین هزینه ممکن میسازد . به علاوه ساختار یافته بودن یکی از اهرم های اصلی کاهش هزینه ها است .
 هم اکنون ورژن 1 پرتال من با قابلیت مدیریت محتوی توسط صاحبان وبسایت به دو حالت اجازه نصب سالیانه و اجازه نصب نا محدود با حداقل قیمت برای یک پرتال کاملا فارسی و کاربرپسند آماده نصب روی وب سایت شما میباشد .
 من ارزان ترین کار را ارائه نمیدهیم! بلکه کمترین قیمت را برای بهترین کیفیت به شما پیشنهاد میکنم . اگر شما هم از دسته افرادی هستید که برای شرکت مطبوع خود به دنبال یک توسعه دهنده نرم افزار میگردید تا به شما یک وبسایت آبرومند تحویل دهد . یا اتومایسون اداری وب بیس یا ویندوزبیس کاملی را برای شما پیاده سازی کند ، از تماس با اینجانب پشیمان نخواهید شد .
 خدمات:

 · طراحی ، برنامه نویسی و پیاده سازی وبسایت
· برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری وب بیس
· برنامه نویسی و پیاده سازی سیستم اتوماسیون اداری ویندوزبیس
· طراحی و برنامه نویسی نرم افزار های چند رسانه ای
 · همکاری برنامه نویسی به صورت پروژه ای با همکاران

سرعت کار و کیفیت کار بی نظیر است :
 · با اولین تماس تمام اطلاعات مورد نیاز برای شما فکس یا ایمیل میشود .
· حد اکثر 24 ساعت بعد از سفارش شما ، آرم ، شماره تلفنها و آدرس شما در ساییتان در سراسر حهان قابل مشاهده خواهد بود .
 · مرحله طراحی گرافیکی قبل از بارگزاری محتوی سایت به تایید شما خواهد رسید و اصلاحات موردنظر شما (کلی یا جزئی) در آن اعمال خواهد شد .
· تمامی هزینه های مربوط به توسعه سایت بعد از تحویل سایت و اعلام رضایت شما دریافت خواهد شد .
· تحویل پروژه، به خاطر اعمال روشهای کنترل پروژه در این فرایند هرگز از زمان معین شده تجاوز نخواهد کرد .
· به خاطر ساختار آبجکت اورینتد برنامه ها دارای کمترین احتمال داشتن باگ می‌باشند .

 برای اینکه از این خدمات اطلاعات کاملتری به دست آورید ، شماره تلفن ، فکس یا آدرس ایمیل خود را به نشانی rooznamechi@rooznamechi.cjb.net ایمیل کنید ، یا در قسمت نظرات (در انتهای این مطلب ) وارد کنید ، بدیهی است که این اطلاعات محرمانه بوده و در دسترس عموم نخواهد بود . همینطور میتوانید با تلفن همراه : 00989123862841 یا تلفن ثابت  00982177927854   به طور مستقیم با من(حسین روزنامه‌چی ) تماس بگیرید .

 توجه : برنامه نویسان محترم ! لطفا مشکلات برنامه نویسی خود را در انجمن های بین‌المللی مانند http://www.asp.net/ یا در انجمن های فارسی مانند http://forum.persiantools.com/f20.html مطرح نمایید ، در این انجمن دوستان برنامه نویس من و خود من پاسخ گوی شما خواهیم بود. و توجه داشته باشد این گونه سوالات به هیچ وجه تلفنی پاسخ داده نخواهد شد .

چرا این وبلاگ را راه اندازی کردم ؟

مدت مدیدی بود که میخواستم وبلاگی در ارتباط با دات نت برپا کنم و تجربیات برنامه نویسی ام را در آن با فارسی زبانان شریک شوم . برای این کار مانند هر برنامه نویس دیگری تصمیم داشتم وبلاگم را خودم برنامه نویسی کنم و دامنه ای خصوصی برای آن اخذ نمایم . از خدا پنهان نیست ! از شما چه پنهان چندین بار هم خواستم شروع کنم و چند قدمی هم برداشتم . بدنه اصلی برنامه را هم نوشتم ولی هربار که آمدم دستی به سر رو روی آن بکشم و آن را رو اینترنت قرار دهم یک پروژه پیشنهاد میشد ، دست آخر با خودم گفتم سیلی نقد به ز حلوای نسیه است ! اگر می خواهی کار ثواب انجام دهی بسم الله ! و این شد که بلاگ فا را برگزیدم تا در خدمت شما باشم ! و بلاگ فا را برگزیدم چون ایرانی است ، بلاگ فا را برگزیدم چون سرویس های کاملی دارد و بلاگ فا را برگزیدم چون با دات نت نوشته شده است و برنامه نویس آن یکی از همراهان خوب سایت Iranasp.net است که متاسفانه این سایت رسما تعطیل شد! و چه خواهیم نوشت ؟! سعی خواهم کرد مشکلات متداول دوستانی را که تازه به جمع برنامه نویسان دات نت پیوسته اند را مطرح کنم و آنها را پاسخ گو باشم سعی خواهم کرد در حد توان دانش دات نت خوانندگان این وبلاگ را ارتقا دهم و امیدوار باشم برنامه روزی تمام برنامه های دات نتی دارای لایه داده ها باشند و هیچ برنامه دات نتی را نبینیم که با روش های asp 3 یا همان کلاسیک نوشته شده باشد . سعی خواهم کرد درباره طراحی الگوی شی گرا ، با دانش UML در حد ساده و عامه فهم مطالبی را مطرح کنم تا برنامه نویسی شی گرا که متاسفانه اکثرا درست درک نمیشود جای خود را به برنامه نویسی به اصطلاح (هردمبیلی ! ) بدهد . و اهتمام خواهم ورزید به آموزش دات نت 2 در کنار بقیه مقالات ، تا همه دوستان خواننده این وبلاگ به راحتی بتوانند با زمان پیش روند و در موقع لازم دانش دات نت 2 را نیز داشته باشند . خواندن این وبلاگ را به افراد زیر توصیه میکنم : اساتید برنامه نویسی سرورساید به خصوص asp.net تا با کمال بزرگواری ایراد های مرا به من گوشزد کرده و دیگران را از دانش خود بی بهره مگذارند. دوستان برنامه نویس که در حال افزایش سطح معلومات خود هستند (از جمله خود من ! ) بلکه مطلب جدیدی در این وبلاگ برای آنها مفید واقع شود . دوستانی که تازه شروع به آموزش asp.net کرده اند یا قصد دارند از جایی شروع کنند ( به قول قلم چی برای شما برنامه ویژه ای داریم !! ) دوستانی که دنبال مطالبی غیر از دات نت هستند ! (چرا که نه ؟! قرار است مطالب دیگری نیز در این سایت باشد !) خواندن این وبلاگ را به افراد زیر توصیه نمیکنم ! افراد دانشجویی که قصد دارند بدون داشتن دانش asp.net یک پروژه سرهم بندی کنند و به استاد تحویل دهند !

معرفی خودم

معرفی خودم : من حسین روزنامه چی ، متولد 25 ام بهمن سال 1360 در یک روز برفی در سالی که پیش از آن برف نباریده بود چشم بر جهان گشودم.دکتر رضایی مرا به دنیا آورد و دکتر غفاری مرا زنده نگاه داشت خدایشان پاداش نیک دهد . دانش آموخته رشته مهندسی صنایع (تولید صنعتی ) در دانشگاه آزاد اسلامی قزوین ، باراجین ! هستم . و میدانم که در آینده بسیاری از هم دانشگاهی های من از این وبلاگ بازدید خواهند کرد پس به آنها خیر مقدم میگویم داستان برنامه نویس شدن من : از دبیرستان شروع به یاد گرفتن طراحی وب نزد خودم کردم (یعنی معلم نداشتم ) و در فتوشاپ و فرانت پیج به چنان مهارتی رسیدم که به عنوان استاد خصوصی به تدریس پرداختم .در زمان دانشجویی مدتی در رشته سخت افزار در قسمت تولید و گارانتی شرکت خدمات ماشینی تامین مشغول به کار شدم اما چون کار سخت افزار با روحیات ام سازگار نبود استعفا دادم . دوره بین اتمام کنکور و شروع دانشگاه را به صورت فشرده به مطالعه برنامه نویسی زبان C از نوع ANSI گذراندم و کتاب مقدماتی و پیشرفته را در این مدت با انجام تمام تمریناتش تمام کردم ! سپس به ویژال C++ روی آوردم و پس از اینکه نصف کتاب را خواندم خسته شدم و جاوا را پیشه کردم ! کتاب جاوا اسکریپت را در عرض یک یا دو هفته خواندم و یکی از اوین تقویم های هجری را با آن نوشتم که برای 5 سال فقط کار میکرد (و مسلما دیگر کار نخواهد کرد ) در آن دوران هنوز Utf-8 موجودیت خودش رو اعلام نکرده بود و وبسایت ها با فونت های سپهر و سپید و ایران سیستم برپا میشدند . اولین وبسایت یونیکدی خودم رو در سال 1380 ساختم . در آن زمان هنوز برنامه نویسی های سرور ساید اینقدر معروف و گسترده نبودند برای همین هم مدتی دست به کار CGI با زبان Perl شدم جای شما خالی خدا نصیب تان نکند. حتی سروی که رویش آزمایش کنم هم در دست نبود . بعد با ASP آشنا شدم ! عجب دوران خوبی بود ! با دانش Qbasic خود میتوانستم از خواندن کتاب asp منتشر شده توسط انتشارات ناقوس (نشر علوم و ... (اینجا چقدر اسم عوض میکنه ؟؟ ) ) لذت بردم ، چندین وبسایت با این زبان نوشتم ! خدایشان بیامرزد ! همه رفتند مگر وبسایت قدیمی خودم دوستانه !! روی یک سرور مجانی (خدا خیر شان دهاد ! ) با گرم شدن بازار دات نت به سمت دات نت رفتم ( نمی‌گویم که اصلا php نخواندم ولی هیچ برنامه رسمی با آن ننوشتم به هرحال خواندن کتابی که دستوراتش به زبان C نزدیکی دارد موجوب خائن شناخته شدن یک برنامه نویس محصولات ماکروسافتی نیست !!! ) با زبان ویژال بیسیک دات نت شروع کردم به آموختن دات نت ! اوایل سخت بود چون کاری را که با ای اس پی میتوانستم به سادگی انجام دهم در دات نت باید کلی انجمنها و مقالات اینترنتی را زیرو رو میکردم تا یاد بگیرم !! اما زیاد طول نکشید که علاقه به asp کلاسیک جای خود را به علاقه به دات نت داد . من عاشق دات نت شدم ! یک عشق آسمانی ! تمام کارهایی را که میخواستم میکرد . پیشرفت کردم و مطالعه کردم تا پیشرفت کنم و دیدم دیگر بدون اینکه دانش C# داشته باشم نمیتوانم مطالعه کنم پس C# را یاد گرفتم و به آن به شدت وابسته شدم . روزی به این نتیجه رسیدم که باید بتوانم شی گرا طراحی کنم و یک کتاب بزرگ UML مربوط به طراحی Object Oriented را دانلود کردم و مشغول خواندن آن شدم . ( وسط هایش به دلیل انجام پروژه ای سنگین رها کردم ولی باز ادامه خواهم داد ) وقتی ویرایش آخر دات نت 2 وارد بازار شد من اولین کسانی بودم که DVD آن را تهیه کردم و روی سیستمم نصب کردم . با دنیای عجیبی مواجه شدم ولی فهمیدم که این دنیا را در آینده بیش از دات نت 1 دوست خواهم داشت . تا آلان ماجراهای برنامه نویسی خودم را به این دقت نمیدانستم ! خوب شد وبلاگ زدم ! و اما باز خود من ! گیتار میزنم ، سعی میکنم آهنگ بسازم ، شعر میگویم ، ترانه میسازم با ساز مینوازم ! موسیقی دنیای من است . هرجور موسیقی را دوست دارم از متالی مثل my dying bride گرفته تا تموسیقی سنتی خلیجی که به قول دوستان "خیلی دهاتی اه !"!! و از گروهای موسیقی محبوب من : Pink floyd – mettalica – anathema – sher – Chris de burg – Beatles و نانسی اجرام ! را میتوان نام برد .