مقدمه قبل تجزیه و تحلیل قسمتهای مختلف این سایت در ابتدای امر لازم دیدم تا راجع به یک سری مفاهیم و کنترلهای پیشرفته که تقریبا جز ثابتی از سایتهای پویا هستند توضیحاتی اجمالی ارائه دهم و جزئیات آن را موکول میکنم به زمان استفاده آن در سایت و در آن قسمت توضیحات کاملتری را ارائه خواهم داد .
اگر ما بخواهیم یک سایت برای یک فروشگاه طراحی کنیم .بدو شکل می توانیم این کار را انجام دهیم یکی با استفاده از زبانهای ایستا و دیگر آنکه از زبانهای پویا برای ساخت سایت استفاده کنیم ، حال فرض کنید فروشگاه ما یک فروشگاه زنجیره ای باشد که بیش از هفتصد محصول مختلف عرضه میکند ، برای ساخت این سایت به زبان html که زبانی ایستا برای طراحی صفحات وب است باید بیش از هفتصد صفحه وب طراحی کنیم حال آنکه بوسیله زبانهای پویا قادر خواهیم بود این کار را توسط یک صفحه انجام دهیم .
در زبان html صفحه وب برای ما حکم کاغذی را دارا ست که در آن باید حتما از بالا به پایین بنویسیم و نیز قادر به حرکت به عقب نیستیم و همچنین در این صفحات قابلیت پاک کردن را نداریم ، محدودیت وسیعتری که زبانهای ایستا بر ما تحمیل میکنند نداشتن قابلیت برنامه نویسی است و برنامه نویسی در این زبان محدود میشود به نوشتن عملیاتهای ساده ریاضی درون تگ هایی به نام با وجود این محدودیتها و گسترش روز افزون اینترنت در میان جوامع نیاز به طراحی سایتهای پویا به شدت محسوس بود تا اینکه زبانی به بازار عرضه داشتند به نام DHTML این زبان یک سری از محدودیتها را تا حدی جبران میکرد ولی هنوز نیاز به پیشرفتهای گسترده ای داشت با کاملتر شدن این زبانها زبانهای قدرتمندی عرضه شدند که توانایی ساخت برنامه های کاربردی تحت وب را دارا بودند از جمله این زبانها می توان زبان های ASP,PHP,… را نام برد ، همانگونه که گفته شد این زبانها قادرند هر گونه عملیاتی را انجام دهند .
Active Server Pages ASP یا همان صفحات فعال سرور یکی از رایج ترین زبانها برای ساخت صفحات وب است و بسیاری از سایت های شلوغ و پر بیننده از این زبان استفاده میکنند از جمله میتوان سایت شرکت مایکروسافت ،DELL را نام برد .
ASP.NET این زبان آخرین نسخه زبان Asp است که توسط شرکت مایکروسافت عرضه شده است و به دلیل وجود پیشرفتها و تغییرات بسیاری که در زبانهای تحت شبکه به اصطلاح دات نت به وجود آمده این زبان نیز تغییرات زیادی نسبت به نسخه های قبلی اش دارد .
بنا بر دلایل بالا و نیازهایی که در این پروژه با آن رویا رو بودم زبان ASP.NET را بر گزیدم .
برای استفاده از این زبان نیاز است که با زبان Html و یکی از زبانهایی که .NET Common Language Runtime را بشناسد آشنایی داشته باشیم ، از جمله این زبانها می توان به C#, Jscript.NET, Visual Basic و نسخه تعمیم یافته C++ که توسط مایکروسافت حمایت میشوند و زبانهای دیگری چون ,Smalltalk , Eiffel, COBOL Python .
بحث در مورد ساختار زبانهای دات نتی خارج از این مقوله است و فقط به بیان این نکته که در این زبان صفحات وب قبل از اجرا کامپایل میشوند و به همین دلیل سرعت اجرای بالایی دارند کفایت میکنم .
برای نوشتن کدهای این زبان میتوانید از هر نرم افزار ویرایش متنی استفاده کنید .
ولی به توصیه من استفاده از نرم افزار هوشمندی که توانایی اصلاح اشتباهات و همچنین کمک و یاری رساندن در مواجهه با خطاها را به ما بدهد می تواند سرعت انجام کار را بسیار بالا ببرد .
من برای طراحی این سایت از Microsoft Visual Studio .NET استفاده کردم.
یک صفحه ASP.NET از دو بخش تشکیل شده است یکی بخش ظاهری که وظیفه برقراری ارتباط با کاربر را دارد و دیگری منطق برنامه است که بیانگر این است که اگر دکمه ای فشرده شد چه عملیاتی باید انجام شود .
ما می توانیم با انجام تغییراتی جزئی فایل Html خود را تبدیل به یک فایل ASP.NET کنیم اول از همه پسوند فایل را به .aspx تغییر دهیم سپس صفت Runat=”server” را به تگهای اضافه کنیم و به جای استفاده از nameاز ID استفاده کنیم و چهارم اینکه به جای نوشتن تگ زیر از این تگ استفاده کنیم سوالی که ممکن است پیش آید این است که چطور صفحات ASP.NET با مرورگر سازگارند و چطور این امکان وجود دارد که مرورگری چون IE این توانایی را داشته باشد که تمامی زبانها را بشناسد ؟
جواب این سوال براحتی با دانستن این مطلب که این صفحات در سرور اجرا میشوند و سپس صفحه استاندارد Html ساخته شده و به مرورگر ارسال میشود قابل حل است .و اگر زمانی نیاز باشد که از کنترلهای طرف کلاینت استفاده کنیم نیازی به نوشتن هیچ کدی نیست و خود کنترل تشخیص میدهد که اگر مرورگر قابلیت اجرای کنترلهای طرف کلاینت را دارد آنها را به اجرا درآورد یا خیر .
بحث در مورد فواید ASP.NET و را به پایان میبرم و در مورد کنترلهای Html ی به طور عملی در تشریح قسمتهای مختلف سایت صحبت میکنم .
اما کنترلهای وبی این کنترلها خود به پنج گروه تقسیم میشوند.
اولین گروه وب کنترلهای پایه هستند که تقریبا معادل کنترلهای Html هستند که از آن جمله Label Image TextBox Button Hyperlink و دیگر کنترل ها ...
گروه دوم کنترلهای اعتبار سنجی اند که در توضیح صفحه Order به تفصیل در مرد آنها صحبت خواهد شد گروه سوم کنترلهای داده ای نام دارند که نامشان Data Grid Data List Repeater در مورد این کنترل ها به طور اجمالی بحث میکنیم و جزئیات را به قسمت تشریح سایت موکول میکنیم گروه چهارم به کنترلهای پیچیده موسومند که از آن جمله یک تقویم تعاملی calendar و کنترلی برای نمایش تبلیغات AdRotator که در یکی از صفحات سایت از آنها استفاده شده است گروه پنجم کنترلهای موبایل هستند که برای کار با دستگاههای موبایل از قبیل تلفن همراه ,PDA و ...
بوسیله این کنترل ها که تعداد انها بسیار زیاد است میتوانید در سایتتان از گوشی های موبایل نیز استقبال کنید.
بانکهای اطلاعاتی در ASP.NET یکی از مهمترین نیازهایی که یک طراح سایت پویا دارد اطلاع از چگونگی عملکرد زبان با بانکهای اطلاعاتی است و نحوه برقراری این ارتباط .
ASP.NET این قابلیت را به ما میدهد که با تمامی بانکهای اطلاعاتی ارتباط برقرار کنیم .
ASP.NET برای برقراری ارتباط دو راه را پیش روی ما میگذارد یکی استفاده از OLE DB,ODBC است که برای کلیه بانکهای اطلاعاتی مورد استفاده قرار میگیرد و دیگری استفاده از کلاسهایی است که مایکروسافت برای بهینه سازی SQL SERVER از آن استفاده کرده است ، این کلاسها چند ویژگی با ارزش دارند یکی اینکه به دلیل دور زدن OLE DB,ODBC و استفاده مستقیم از TDS سرعت و کارایی برنامه را بسیار بالا میبرد دیگر آنکه با استفاده از این کلاسها دیگر نیازی به استفاده از یک تامین کننده Provider و یا اینترفیسی چون ADO , ODBC نخواهیم داشت در ضمن محدودیتهایی نیز خواهیم داشت که از آن جمله اینکه استفاده از این کلاسها منوط به این است که ما حتما از بانک اطلاعاتی SQL SERVER استفاده کنیم و دیگر آنکه ما نمی توانیم از DSN یا اسم منبع داده ای استفاده کنیم و اگر بخواهیم از DSN استفاده کنیم باید به جای استفاده از کلاسهای SQL از کلاسهای OLE DB استفاده کنیم .
من در این سایت به دلیل استفاده از بانک SQL Server و مزایای کلاسهای مخصوص این بانک استفاده از کلاسهای خاص این بانک را به کلاسهای عمومی ترجیح دادم.
نحوه برقراری ارتباط با SQL SERVER برای انجام این کار باید از کلاسهای SqlConnection , SqlCommand , SqlDataReader استفاده کنیم .
SqlConnection وظیفه برقراری ارتباط با بانک را به عهده دارد و این کار را با استفاده از متدهای Open , Close انجام میدهد.
SqlCommand اغلب دستوراتی که کار با بانک نیاز داریم در این کلاس وجود دارد و به نوعی حامل دستورات SQL ی ما نیز میباشد .
SqlDataReader نتایج حاصل از بانک اطلاعاتی درون شیی که از این کلاس ساخته ایم ریخته میشود و از آن پس برای استفاده از داده های موجود در بانک از این شی استفاده میکنیم .
DataReader مجموعه ای سریالی است از رکورد های بانک اطلاعاتی که فقط رو به جلو حرکت میکند و در هر لحظه تنها یک رکورد را باز میگرداند .برای باز یابی اطلاعات از این شی باید از متد Read استفاده کنیم ، و برای باز خوانی تمامی رکورد ها باید از یک حلقه استفاده کنیم تا به انتها برسیم .
چگونگی برقراری ارتباط با بانک به طور مفصل در قسمت تشریح سایت آمده است .
مقید سازی Data Binding مقید سازی یا همان دیتا بایندینگ فرایندی است که طی آن ما مقداری را به کنترلی منتسب میکنیم ، به گونه ای که با تغییر مقدار مورد نظر مقداری که به کنترل داده ایم نیز تغییر میکند .
برای نمونه برای نمایش زمان در سایت خود کافی ست زمان جاری را توسط متد .
برای نمونه برای نمایش زمان در سایت خود کافی ست زمان جاری را توسط متد GetTime() گرفته و آنرا به خصوصیت text از یک کنترل مثلا label اختصاص دهیم.
و در نهایت متد DataBind را فراخوانی کنیم ، این متد میتواند روی یک کنترل خاص انجام شود و یا روی تمام صفحه ، این متد را در قسمت منطق برنامه ریزی صفحه قرار میدهیم ، برای این مثال از این دستور استفاده می کنیم Tim.DataBind(); ’ > هنگامی که بخواهیم در قسمت طراحی از منطق برنامه نویسی استفاده کنیم باید منطق خود را درون قرار دهیم و اگر این منطق درون قسمت تعریف یک کنترل باشد باید از علائم ‘ در ابتدا و انتهای آن استفاده کنیم .
اهمیت دیتا بایندینگ زمانی مشهود تر است که بخواهیم مقداری از یک بانک را به کنترلی انتساب دهیم در میان کنترل های موجود کنترلهایی وجود دارند که خصوصیتی به نام DataSource دارند این خصوصیت برای مقید سازی یک منبع داده ای به کار میرود از این قبیل کنترل ها می توان Repeater , DropDownList , RadioButtonList , ListBox را نام برد .
روش قید گذاری روی DropDownList , RadioButtonList , ListBox مشابه هم است یعنی منبع داده ای که میتواند جدولی از بانک اطلاعاتی و یا یک آرایه باشد را به خصوصیت DataSource این کنترل ها اختصاص می دهیم در این کنترل ها چون فقط یک ستون را می توانیم نمایش دهیم باید ستون مورد نظر را از طریق خصوصیت DataTextField تعیین کنیم و پس از این دو کار متد DataBind را فرا خوانی کنیم .
در این کنترل ها خصوصیتی به نام DataValueField وجود دارد که زمانی به کار میرود که بخواهیم مقداری متفاوت با آنچه در نظر گرفته شده است را به نمایش در آوریم .برای نمونه به جای نمایش نامی که در منبع داده ای وجود دارد از عدد خاصی استفاده کنیم و یا بخواهیم عکس این کار را انجام دهیم .
Repeater این کنترل بیشتر برای نمایش رکورد های بانک اطلاعاتی به کار میرود ، این کنترل به خودی خود هیچ چیز را نمایش نمیدهد بلکه قالبی خام است که باید به آن شکل و فرم دهیم میتوانیم قالب خود را توسط کنترلهای دیگر بسازیم و منبع داده ای را به هر کدام از کنترل ها نسبت دهیم .
میتوانیم قالب خود را توسط کنترلهای دیگر بسازیم و منبع داده ای را به هر کدام از کنترل ها نسبت دهیم .
روش مقید سازی این کنترل شبیه بقیه کنترل ها ست به این معنی که باید DataSource را مقدار دهی کرد و متد DataBind را فراخوانی کرد و به کار دیگری نیازی نیست چون این کنترل قادر است همه ستونها را به نمایش بگذارد .
برای فرم دهی این کنترل چهار الگو مختلف وجود دارد .
HeaderTemplate , ItemTemplate , AlternatingItemTemplate FooterTemplate , SeparatorTemplate قالب سر برگ و قالب کلی آیتم ها و قالب آیتم های جایگزین و قالب ته برگ و قالب خط جداکننده هر رکورد از رکورد بعدی که هر کدام را می توان جدای از بقیه فرمت دهی کرد.
کنترلهای DataList , DataGrid این دو کنترل نیز همانند کنترل Repeater برای نمایش داده های بانک اطلاعاتی به کار می رود.
این سه کنترل در عین شباهت هایی که با یک دیگر دارند تفاوتهایی نیز دارند که بنا بر نیاز باید از هر کدام در جای خود استفاده کرد گر چه اگر نیازی به استفاده از ویژگیهای خاص آنها نداریم می توان از هر کدام به جای یک دیگر استفاده کرد .
این کنترل ها این توانایی را نیز دارند که به صورت تو در تو از آنها استفاده