كنترل های منبع داده در ASP.NET 2.0 ( بخش اول )
يكی از مهمترين اهداف پياده سازی صفحات وب ، ارائه اطلاعات مورد نياز كاربران با توجه به اهداف عملياتی يك وب سايت ( سرويس های شخصی و يا عمومی ) است . شايد به همين دليل باشد كه يكی از چالش های مهم در خصوص طراحی صفحات ، ايجاد صفحاتی است كه حاوی جديدترين و در عين حال صحيح ترين اطلاعات باشند .
برای نمايش اطلاعات بر روی صفحات وب از چهار روش و يا منبع اساسی استفاده می گردد :
- درج محتويات ثابت به صورت دستی در بطن صفحات : در اين روش محتويات مورد نظر مستقيما" و به صورت دستی در بطن يك صفحه وب قرار داده می شود. برای تعريف يك ساختار نمايشی مناسب از تگ های Html استفاده می گردد . به منظور توليد صفحات، می توان از ابزارهای توليد مختلفی نظير FrontPage و يا حتی يك اديتور ساده متنی استفاده نمود .
- توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده : در اين روش به صورت اتوماتيك ، مجموعه ای از اسكريپت های سمت سرويس دهنده و يا سرويس گيرنده اجراء و اطلاعات مورد نياز به منظور نمايش در صفحات وب را توليد می نمايند . اطلاعات ممكن است به صورت ثابت و يا با بكارگيری مجموعه ای از توابع تعبيه شده در يك زبان برنامه نويسی و يا اشياء سمت سرويس دهنده، توليد گردند.
- پردازش بر روی داده های ورودی : در اين روش با پردازش بر روی داده ورودی ، اطلاعات مورد نياز به منظور نمايش بر روی صفحات وب توليد می گردد . در واقع ، بر روی داده های خام پردازش مورد نياز توسط اسكريپت ها انجام تا اطلاعات جديدی برای نمايش بر روی صفحات وب توليد گردد .
- بازيابی و پردازش اطلاعات از منابع داده خارجی : در اين روش اطلاعات از منابع داده خارجی استخراج ( بازيابی ) و بر روی صفحات وب نمايش داده می شود . اطلاعات شخصی ، سازمانی و ... در منابع ذخيره سازی عمومی ذخيره و پس از بازيابی و در صورت لزوم انجام پردازش های مورد نياز بر روی صفحات وب نمايش داده می شوند .
هدف اصلی صفحات ASP.NET كاهش و يا حذف فرآيند درج دستی اطلاعات درون صفحات وب است . با تركيب محتويات مورد نياز به منظور نمايش در صفحات وب با تگ های Html ، نگهداری ، پشتيبانی و بهنگام سازی صفحات وب برای پياده كنندگان مشكل می گردد . بهنگام سازی و ويرايش محتويات صفحات وب به صورت دستی ، علاوه بر اين كه توجيه زمانی ندارد ، مشكلات خاص خود را برای پياده كنندگان صفحات وب نيز به دنبال خواهد داشت .
بهترين گزينه به منظور نگهداری اطلاعات ، جداسازی آنان از صفحاتی است كه قرار است آنان را نمايش دهند . در چنين مواردی صرفا" در صفحات وب ، مكان و فرمت نمايش اطلاعات مشخص می گردد و اطلاعات در مكانی متمايز از صفحات وب نگهداری می گردند . پس از درخواست يك صفحه ، اطلاعات از منابع داده بازيابی و در محل تعيين شده برروی صفحات وب قرار خواهند گرفت . در واقع ، صفحات بطور اتوماتيك و پويا در زمان درخواست ايجاد و شامل آخرين اطلاعاتی می باشند كه بصورت بلادرنگ و Live از منابع داده خارجی استخراج شده اند .
در ادامه به بررسی چهار روش فوق خواهيم پرداخت تا از اين رهگذر جايگاه كنترل های منبع داده ارائه شده در ASP.NET 2.0 مشخص و با اين نوع كنترل ها از دو بعد مفاهيم و عمليات آشنا شويم .
روش اول : درج محتويات ثابت به صورت دستی در بطن صفحات
روش استاندارد به منظور ارائه اطلاعات درون صفحات وب ، درج مستقيم و دستی آنان درون صفحات وبی است كه فرمت و قالب نمايش آنان توسط تگ های html مشخص شده است .
مثال : در مثال زير اطلاعات به صورت دستی در يك صفحه وب درج و از تگ های Html به منظور تعريف فرمت نمايش آنان استفاده شده است .
<html>
<body>
<h3> درج محتويات ثابت به صورت دستی </h3>
<p>
برای ايجاد اين صفحه ، اطلاعات مورد نياز بطور مستقيم و به صورت دستی درون صفحه قرار داده شده اند .
برای تعريف مجموعه قوانين لازم به منظور نحوه نمايش اطلاعات از تگ های Html استفاده شده است . در زمانی كه لازم است محتويات اين صفحه تغيير يابد ، می بايست صفحه را به صورت دستی ويرايش تا متناسب با آن اطلاعات جديد نمايش داده شوند .
</p>
</body>
</html>
روش دوم : توليد محتويات با استفاده از اسكريپت های سمت سرويس گيرنده يا سرويس دهنده
در اين روش ، اطلاعاتی كه قرار است درون صفحات نمايش داده شوند ، توسط اسكريپت هائی كه قادر به توليد محتويات ثابت و يا متغير و پويا می باشند ، ايجاد می گردد. به منظور توليد و نمايش اطلاعات در زمان نمايش صفحات وب ، می توان با توجه به جايگاه روتين Page_Laod از آن استفاده و پس از توليد اطلاعات توسط اسكريپت ، آنان را با اطلاعات ثابت تركيب و در نهايت بر روی صفحات وب نمايش داد . در چنين مواردی می توان فرآيند توليد و در نهايت نمايش اطلاعات را به خواسته های كاربران وابسته نمود تا در ادامه متناسب با خواسته آنان روتين های مورد نظر فعال و از طريق اسكريپت های موجود در آنان ، اطلاعات مورد نياز توليد گردد.
مثال : در مثال زير ، اسكريپت موجود در روتين Page_Load اجراء و پس از توليد اطلاعات مورد نياز ، با استفاده از تگ های Html نحوه نمايش آنان بر روی صفحه وب مشخص می گردد . در مثال فوق از تابع Date ويژوال بيسيك و كنترل های سرويس دهنده خروجی استفاده شده است .
پس از توليد اطلاعات توسط اسكريپت ، به منظور نمايش آنان در صفحه از كنترل سرويس دهنده خروجی <asp:Label> استفاده شده است . به كنترل فوق يك مشخصه ( id ) نسبت داده شده است تا امكان دستيابی به آن از طريق اسكريپت های سمت سرويس دهنده موجود در روتين Page_Load فراهم گردد. اسكريپت فوق يك رشته از كاراكترهای متنی و Html را به خصلت Text كنترل label و با نام Paragraph نسبت می دهد. توجه داشته باشيد كه در اين مثال از هيچگونه تگ Html بطور مستقيم استفاده نشده است .
<SCRIPT Runat="Server">
Sub Page_Load
Heading.Text = "<h3>توليد خروجی با استفاده از اسكريپت</h3>"
Paragraph.Text = "<p>امروز, <span style=""color:red"">" & _
Format(DateString, "Long Date") & "</span>, " & _
"اين خروجی توسط اسكريپت توليد شده است " & _
"پس از توليد اطلاعات ، ماحصل آن در يك كنترل سرويس دهنده خروجی ، " & _
" نوشته می گردد . تاريخ نمايش داده شده ، همواره بهنگام بوده و " & _
" ضرورتی به ويرايش صفحه وجود ندارد " & _
" </p>"
End Sub
</SCRIPT>
<html>
<body>
<form Runat="Server">
<asp:Label id="Heading" Runat="Server"/>
<asp:Label id="Paragraph" Runat="Server"/>
</form>
</body>
</html>
روش سوم : پردازش بر روی داده های ورودی
در اين روش ، اطلاعات اوليه توسط كاربر ارائه و در ادامه از آنان به منظور توليد خروجی استفاده می گردد . در نهايت اطلاعات توليد شده با استفاده از كنترل ها ی سرويس دهنده خروجی بر روی صفحه وب نمايش داده می شود .
مثال : در مثال زير ، يك كنترل TextBox در اختيار كاربر قرار داده شده است تا داده مورد نظر را وارد نمايد . پس از درج داده توسط كاربر و كليك بر روی دكمه "Submit" ، روتين مربوطه فعال و پس از انجام عمليات مورد نظر ، نتايج به همراه تگ های Html در يك كنترل خروجی label نوشته می گردند .در اين مثال از سه كنترل سرويس دهنده استفاده شده است :
- يك كنترل asp:Textbox جهت درج داده توسط كاربر
- يك كنترل asp:Button جهت فراخوانی روتين مربوطه
- يك كنترل asp:label جهت تعريف يك ناحيه خروجی به منظور نمايش اطلاعات توليد شده
پس از كليك بر روی دكمه مربوطه ، داده ورودی توسط كاربر در عدد هفت ضرب و حاصل با متن ثابت و تگ های Html تركيب و در ناحيه خروجی مشخص شده توسط كنترل label نمايش داده می شود . عمليات فوق توسط روتين MultiPly_Seven انجام می شود . توجه داشته باشيد كه در اين مثال تمام خروجی توسط اسكريپت توليد شده است .
<SCRIPT Runat="Server">
Sub Multiply_Seven(Src As Object, Args As EventArgs)
If number1.Text <> "" Then
Dim M As Integer
M = number1.Text * 7
Show_Number.Text = "Your Number is <b>" & M &
End If
End Sub
</SCRIPT>
<html>
<body>
<form Runat="Server">
<h3>خروجی توليد شده توسط اسكريپت با استفاده از داده ورودی</h3>
Enter your age:
<asp:TextBox id="number1" Size="5" Runat="Server"/>
<asp:Button Text="Submit" OnClick="Multiply_Seven" Runat="Server"/>
<asp:Label id="Show_Number" Runat="Server"/>
</form>
</body>
</html>
روش چهارم : بازيابی و پردازش داده از طريق منابع داده خارجی
در اكثر وب سايت ها اطلاعات به صورت مستقيم درون صفحات وب درج نمی گردد و يا ماحصل دريافت و پردازش بر روی داده كاربر نمی باشد . در اينگونه سايت ها ، از فايل های خارجی و يا بانك های اطلاعاتی به عنوان منبع اوليه تامين داده استفاده می گردد .پس از درخواست يك صفحه وب ، اطلاعات از منابع داده خارجی استخراج و قبل از اين كه برای مرورگر ارسال گردند در مكان تعيين شده در صفحات وب قرار می گيرند. اطلاعات نمايش داده شده بر روی صفحات وب همواره بهنگام می باشد چراكه محتويات اينگونه صفحات به صورت پويا و با بهره گيری از منابع اطلاعاتی خارجی ايجاد می گردد .
مثال : در اين مثال از اطلاعات موجود در جدول Products مربوط به بانك اطلاعاتی TestDb.mdb به منظور نمايش اطلاعات بر روی صفحه وب استفاده شده است .
تمامی پردازش های سمت سرويس دهنده از طريق دو كنترل سرويس دهنده موجود بر روی صفحه انجام می شود :
- asp:GridView ، يك كنترل نمايش اطلاعات است و به يك منبع داده خارجی مرتبط می گردد . كنترل فوق در نهايت به صورت اتوماتيك اطلاعات بازيابی شده را در قالب يك جدول ( حاوی سطرها و ستون ها) ، نمايش خواهد داد .
- كنترل asp:AccessDataSource ، اطلاعات را از بانك اطلاعاتی استخراج می نمايد . ارتباط كنترل فوق با GridView از طريق خصلت DataSourceID برقرار شده است . اطلاعات بازيابی شده در فرمتی كه توسط GridView مشخص شده است ، نمايش داده خواهند شد . Style خاصی در ارتباط با جدول بكار گرفته نشده است . كنترل GridView دارای مجموعه ای كامل از گزينه های لازم به منظور تعيين لی اوت و يا style جدول نمايش اطلاعات است . كنترل های ورودی داده متفاوتی را می توان به صفحه اضافه نمود تا كاربران قادر به انتخاب اطلاعات مورد نظر خود باشند ( بازيابی و نمايش اطلاعات در كنترل های خروجی بر اساس خواسته كاربر)
<html>
<body>
<form Runat="Server">
<h3>خروجی توليد شده با استفاده از بانك اطلاعاتی</h3>
<asp:AccessDataSource id="Products" Runat="Server"
DataFile="c:\databases\TestDb.mdb"
SelectCommand="SELECT ItemNumber, ItemName, ItemPrice, ItemQuantity FROM Products"/>
<asp:GridView id="ProductsGrid" DataSourceID="Products" Runat="Server"/>
</form>
</body>
</html>
مزايای جداسازی محتويات از صفحه ای كه آنان را نمايش می دهد :
- اطلاعات همواره به روز و صحيح می باشند .
- در اكثر سايت های تجاری ، اغلب اطلاعات در يك بانك اطلاعاتی ذخيره می گردد. از بانك اطلاعاتی به عنوان مخزن تامين اطلاعات مورد نياز برای انجام عمليات و مديريت فرآيندها استفاده می گردد . در چنين مواردی ، صفحات وب بهنگام و به سرعت آخرين اطلاعات موجود را نمايش خواهند داد ( صفحات وب Live ) . استخراج داده از اينگونه منابع ذخيره سازی ، در زمان صدور درخواست انجام می شود .
- صفحات وب بندرت نيازمند تغيير بوده و كد صفحات در زمان تغيير محتويات تغيير نخواهد كرد . در اين مدل ، اطلاعات درمنابع ذخيره سازی داده تغيير داده شده و ماحصل آن بر روی صفحات وب منعكس خواهد شد . در چنين مواردی نيازی به كاركنان فنی به منظور نگهداری و بهنگام سازی اطلاعات نخواهد بود . در واقع، افرادی كه از منابع ذخيره سازی داده نگهداری می نمايند ، نگهداری اطلاعات منتشر شده بر روی وب سايت را نيز برعهده خواهند داشت .
- در صورتی كه محتويات صفحات بندرت تغيير می يابد ، می توان از روش درج مستقيم متن درون صفحات وب به صورت دستی استفاده نمود . ولی در صورتی كه محتويات يك صفحه بطور مرتب و با فركانس بالا تغيير می يابد ، بهتر است كه آنان را در يك فايل و يا منبع داده خارجی ذخيره نمود . در چنين مواردی ، امكان بهنگام سازی محتويات با سهولت بيشتری فراهم می گردد .
صرفنظر از اندازه و پيچيدگی يك وب سايت ، يكی از وظايف اوليه پياده كننده گان برنامه های وب ، مديريت داده ها با استفاده از كنترل های سرويس دهنده و اسكريپت هائی است كه با تلفيق آنان می توان اطلاعات را به صورت پويا و متاثر از آخرين داده های موجود در بانك اطلاعاتی بر روی صفحات وب نمايش داد .
در بخش دوم به بررسی امكانات ارائه شده در ASP كلاسيك ، ASP.NET 1.x و ASP.NET 2.0 به منظور دستيابی و نمايش داده خواهيم پرداخت تا مسير ما برای بررسی كنترل های منبع داده هموار گردد .