آشنایی با وب فرم ها در ASP.NET

30 01 2009

ASP.NET فریم ورک قدرتمند مایکروسافت برای ایجاد وب اپلیکیشن های تجاری و بزرگ است. این فریم ورک با پشتیبانی مایکروسافت و داشتن یک محیط قدرتمند و سریع توسعه به نام Visual Studio به یکی از محبوب ترین و قدرتمند ترین ابزارهای توسعه وب تبدیل شده است. در این نوشته قصد داریم مروری بر یکی از ویژگی های اساسی ASP.NET به نام Web Forms بپردازیم.

Web Forms پایه و اساس ASP.NET است. وب فرم ها قلب و روح ASP.NET هستند. وب فرم ها رابط کاربری وب اپلیکیشن شما را شکل می دهند و راه حلی مناسب برای توسعه ی آن به شما ارائه می کنند. وب فرم ها شبیه به ویندوز فرم ها دارای مشخصات، متدها و رویدادهای کنترل های داخلشان هستند. اجزای رابط کاربری داخل وب فرم ها بر اساس درخواستی که به آن ها فرستاده می شود، به زبان نشانه گذاری مناسب (مثل HTML) رندر می شوند.

وب فرم ها شامل دو قسمت هستند : قسمت بصری (فایل aspx)، و Code Behind که هر کدام در کلاس های جداگانه ای قرار می گیرند. فایل aspx کدهای مربوط به طراحی وب فرم ها را شامل می شود و Code Behind شامل کدهای منطق برنامه و رویدادهای مروبط به کنترل های سمت سرور است. Code Behind می تواند به زبان ویژوال بیسیک یا سی شارپ نوشته شود.

asp-dot-net-web-forms

از مزایای استفاده از وب فرم ها می توان به نکات زیر اشاره نمود :

  • جداسازی منطق برنامه از کدهای HTML
  • استفاده از مدل برنامه نویسی مبتنی بر رویدادها
  • کد کامپایل شده و پشتیبانی از چند زبان برنامه نویسی
  • مجموعه ای از کنترل های سمت سرور که قادر به شناسایی مرورگر کاربر هستند و بر اساس آن کد زبان نشانه گذاری (مثل HTML یا WML) را تولید می کنند
  • به شما اجازه می دهند تا کنترل های جدید با قابلیت های جدید به آن اضافه کنید
  • کد کمتری برای کارهای مختلف همچون بایند کردن داده های بانک اطلاعاتی به کنترل ها خواهید نوشت
  • زمان توسعه را به حداقل می رساند و بهره وری را افزایش می دهد

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

کنترل های HTML همانطور که از نامشان پیداست شامل همین کنترل های معمول HTML مانند Button, Text Field, Text Area, Dropdown هستند. اگر تا به حال از نرم افزارهای ویرایشگر HTML برای طراحی رابط کاربری وب استفاده کرده باشید، کاملاً با این کنترل ها آشنایی دارید. شما می توانید از کنترل های استاندارد HTML در وب فرم ها استفاده کنید. کنترل های HTML که در ویژوال استادیو یافت می شوند همان هایی هستند که در Front Page هم پیدا می شدند. این کنترل ها نیازی به پردازش تحت سرور ندارند و به سادگی توسط مرورگر رندر می شوند. هر چند شما می توانید با اضافه کردن runat=”server” به مشخصات هر یک از کنترل های HTML کاری کنید تا به رویدادهای تحت سرور هم پاسخ گوید.
کنترل های وب فرم روی سرور ساخته می شوند و پس از اینکه وظیفه ای که برایشان مشخص شده را به انجام رساندند، کد HTML متناظر را تولید کرده و به خروجی می فرستند. این کنترل ها برخلاف کنترل های استاندارد HTML، هوشمند هستند؛ یعنی قادر به تشخیص مرورگر کاربر و فرستادن کد زبان نشانه گذاری مناسب هستند. به طور مثال اگر مروگر کاربر فایرفاکس باشد، کد HTML مناسب با آن را تولید می کنند و اگر کاربر بوسیله یک گوشی هوشمند درخواستی فرستاده باشد، کد WML را به خروجی می فرستند. تمام کنترل های وب فرم از یک کلاس عمومی با نام System.Web.UI.WebControls مشتق می شوند. این کلاس پایه مجموعه ای از مشخصات عمومی را برای کنترل های وب فرم پیاده سازی می کند.

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

مانند ویندوز فرم ها، رویدادهایی به صورت پشت سر هم و یا بر اساس درخواست کاربر در وب فرم ها اتفاق می افتند. رویدادهایی مانند Load, Draw (Render) و Unload برای وب فرم ها اتفاق می افتد. در زمان این اتفاقات ممکن است روال های مختلفی صدا زده شوند یا اشیای مختلفی ایجاد شوند. در ابتدا رویداد Init مقداردهی های اولیه صفحه وب را بر اساس تگ های به کار رفته در فایل aspx انجام می دهد. بعد از این، رویداد Load برای صفحه اتفاق می افتد. رویداد Load جایی است که شما می توانید چک کنید که آیا صفحه برای اولین بار توسط کاربر بارگذاری شده یا توسط کلیک روی یک دکمه، صفحه وب به سرور وصل شده و به اصطلاح به خودش Post Back کرده است. در رویداد Load می توانید کاری کنید که برخی اعمال فقط برای اولین بارگزاری صفحه وب انجام شوند؛ مثل بایند کردن داده های دیتابیس به کنترل ها. سپس اگر صفحه Post Back شود، رویدادهای کنترل های روی وب فرم ها اتفاق می افتند. مثلاً هنگامی که روی یک دکمه کلیک می شود، صفحه وب اطلاعاتی را به سرور می فرستد و دوباره به صفحه بر می گردد. در این صورت رویداد کلیک برای دکمه فوق اتفاق افتاده و کدی که شما برای آن نوشته اید اجرا شده است.

االبته قبل از Dispose شدن صفحه وب، رویداد Page_Unload هم اتفاق می افتد. به این علت که صفحه از قبل رندر شده و رویدادهای مورد نیاز کاربر اتفاق افتاده اند، این رویداد بیشتر به منظور عملیات لاگینگ استفاده می شود. پس از این رویداد صفحه وب از حافظه سرور حذف می شود.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

پ.ن : این مطلب در جهت معرفی ASP.NET نوشته شده و مقدمه ای بود در مورد ویژگی های آن. از این پس بیشتر در مورد ASP.NET مطلب خواهم نوشت. دوستان ایراد میگرفتن که چرا در این مطلب از PHP طرفداری کردم و از ASP.NET مطلبی نمی نویسم. از این به بعد از هر دو مطلب خواهم نوشت!





SQLite Wrapper برای دلفی 2009 و دات نت 2 و 3.5

27 01 2009

برای انجام پروژه ای نیاز به استفاده از بانک اطلاعتی SQLite در دلفی 2009 و دات نت فریم ورک 2 دارم، همانطور که می دانید به صورت پیش فرض RAD Studio و دات نت فریم ورک کلاسی برای کار با SQLite ندارند. پس از کمی جستجو در وب سایت ها و همچنین پیشنهاداتی که در سایت رسمی SQLite داده شده (اینجا) بود یکسری Wrapper را مورد بررسی قرار دادم. برای دلفی 2009 کامپوننت RemObjects AnyDAC 2.0 راه حل خوبی است اما متاسفانه رایگان نیست. البته نسخه شخصی و رایگان DISQLite3 هم می تواند نیاز من را برطرف کند. اما در این میان با کلاس ساده و مناسبی برخورد کردم که هم رایگان است و هم ساده. برای دات نت فریم ورک من قصد دارم از این در پروژه ام استفاده کنم.

SQLite for Microsoft .NET framework and Delphi 2009

برای دلفی 2009

آقای Tim Anderson برای استفاده خودش Wrapper مناسب و ساده ای نوشته و آن را در اختیار عموم قرار داده است. این Wrapper شامل سه کلاس پایه است که اعمال درج, حذف، به روز رسانی و واکشی داده ها از یک دیتابیس SQLite را انجام می دهند. این Wrapper همچنین از تراکنش های بانک اطلاعاتی (Commit, RollBack) پشتیبانی می کند اما متاسفانه از قابلیت هایی مثل Full-text search پشتیبانی نمی کند. این کلاس ها را نمی توان در حالت طراحی (Design Time) استفاده نمود و بایستی برای استفاده از این Wrapper از کلاس های مورد نیاز خود نمونه سازی کنید. در واقع شما از دو کلاس TSQLiteDatabase و TSQLIteTable برای دستیابی به فایل دیتابیس و اعمال تغییرات در آن استفاده می کنید. نکته ای که باید در نظر داشته باشید این است که این Wrapper را نمی توانید با کامپوننت های دیگر همچون Dataset ارتباط دهید، در نتیجه نمی توانید از کامپوننت های DBAware مثل DBText استفاده کنید و یا داده ها را به یک DBGrid بایند کنید.

برای دریافت این Wrapper به این صفحه از سایت Tim Anderson مراجعه کنید. همراه با کلاس های فوق، یک برنامه نمونه ساده هم موجود است که نحوه ی استفاده از آن را به سادگی توضیح داده است.

برای دات نت فریم ورک 2 و 3.5

ADO.NET 2.0 Provider for SQLite دارای یک فایل اسمبلی است که شامل موتور دیتابیس SQLite و کلاس های ADO.NET مورد نیاز برای دسترسی و استفاده از SQLite می باشد. به سادگی فایل اسمبلی این Wrapper را به Referenceهای پروژه خود اضافه می کنید و از فضای نام System.Data.SQLite به کلاس های داخل آن دسترسی پیدا می کنید. اسمبلی دیگر این Wrapper به شما اجازه استفاده از LINQ به SQLite را می دهد. نحوه استفاده از کلاس های این Wrapper دقیقاً مشابه استفاده از کلاس های دیگر Data Providerها مانند OleDb و Sql است. این Wrapper از .NET Compact Framework نیز پیشتبانی می کند، پس می توانید از SQLite در برنامه های مبتنی بر ویندوز موبایل بهره ببرید.

این Wrapper را می توانید از اینجا دریافت کنید. در زیر مثالی از ایجاد یک جدول در یک فایل دیتابیس SQLite با استفاده از این Wrapper به زبان سی شارپ را مشاهده می کنید.

SQLiteConnection con = new SQLiteConnection("Provider=System.Data.SQLite;Data Source=C:\\data.db");
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);
cmd.CommandText = "CREATE TABLE farasun (post_id INT, title TEXT(150), post VARCHAR)";
cmd.ExecuteNonQuery();

فقط توجه داشته باشید که بایستی فضای نام System.Data.SQLite را using کرده باشید. اگر نیازی به توضیح بیشتر و مثالی واضح تر بود، در نظرات اعلام کنید.

به یاد داشته باشید که SQLite یکی از مناسب ترین راه حل ها برای ذخیره داده های محلی است. نرم افزارهای معروفی مثل Firefox و Google Gears از SQLite به صورت توکار (Built-in) استفاده می کنند.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :





برنامه نویس; مرد یا زن!؟

8 01 2009

اشتباه نکنید! قصد ندارم در این مقاله به دسته بندی آدم ها بپردازم و زن و مرد را از هم جدا کنم. تفاوت های فیزیکی و روحی مردان و زنان در فعالیت های روزانه شان بسیار تاثیر گذاراند. در حرفه ای مثل برنامه نویسی که در آن قدرت تفکر، دانش، هنر، ذوق و سلیقه تاثیر بسیاری در روند کار دارد، تفاوت های مرد و زن کاملاً تاثیر خود را نشان می دهد. هر چند میدانم این بحث زن یا مرد بودن برنامه نویس تکراری شده، اما میخوام از نظر و تجربه خودم در این مورد بنویسم.

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

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

www.semclubhouse.com

عکس از : www.semclubhouse.com

یک عادت خوب دیگری که بیشتر در زنان مشاهده شده، پشتیبان گیری از سورس کدها بعد از انجام کارشان است. البته در تعداد بسیار معدودی از مردان نیز این خصلت تازگی ها یافت شده، اما نمی توان به آن دل خوش کرد!

طرح ایده های نو و استفاده از تکنولوژی های روز دنیا بیشتر در آقایان دیده شده تا خانم ها. معمولاً مردها همیشه دنبال برتری و پیشرفت در کارشان هستند. به همین علت سعی می کنند اطلاعاتشان به روز باشد و با تکنولوژی های جدید آشنایی کافی داشته باشند. سعی می کنند در جلسات بیشتر خود را نشان بدهند و در مورد هر موضوعی ایده ی خود را مطرح کنند. بسیاری از پروژه های نرم افزاری موفق در جهان از ایده های همین آقایان خلاق متولد شده اند!

معمولاً مدیران و مدیر پروژه ها طراحی رابط کاربری نرم افزارها را به دست خانم ها می سپارند و نمی دانند که چه اشتباه بزرگی را مرتکب شده اند. زن ها در طراحی رابط کاربری احساسات و سلیقه ی خود را دخالت می دهند، در حالی که طراحی رابط کاربردی از استانداردهای خاصی در سیستم عامل های مختلف پیروی می کند. این موضوع باعث می شود تا رابط کاربری که خانم ها طراحی می کنند نسبت به همتایی که آقایان طراحی می کنند ضعیفتر باشد.

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

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

کدامیک را استخدام کنیم!؟

businesswelcome_4_3

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

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

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

پ.ن : به علت امتحانات دانشگاه ها، این وبلاگ حداقل تا دو هفته دیگر به روز نخواهد شد. از صبر و بردباری شما کمال تشکر را دارم.