بررسی استراتژی دستيابی به داده ها در صفحات ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 پنجشنبه  3  فروردين  1396  2017  Mar.  23   Thursday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 استراتژی دستيابی به داده ها در وب

 مديريت وب

8180

6

3.8

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

 

استراتژِي  دستيابي به داده ها در وب

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

? DataSet or Direct Access and Data Reader. يکی از اولين موارديکه می بايست به آن پاسخ داد اين مطلب است که : " آيا می خواهيم رکوردها را بکمک يک Dataset استفاده نمود و يا قصد دستيابی به بانک اطلاعاتی را مستقيما" داشته و بکمک يک Data Reader از رکوردها استفاده نمائيم؟" برای انجام برخی عمليات نظير ايجاد و ويرايش ساختار بانک اطلاعاتی نمی توان از يک Dataset استفاده نمود. مثلا" اگر بخواهيم ، ايجاد يک جدول جديد را از طريق برنامه انجام دهيم ،نمی توان از Dataset استفاده نمود. در حالت کلی برای دستيابی به داده ها می بايست بين استفاده از يک Dataset و يا کار مستقيم با بانک اطلاعاتی از طريق بخدمت گرفتن دستورات مربوطه يکی و يا هر دو را با توجه به شرايط حاکم بر يک برنامه انتخاب نمود. هر يک از رويکردهای فوق، دارای مزايا و معايبی می باشند. مثلا" Dataset جهت کار با جداول رابطه ای و کار با داده های مستقر شده در چندين جدول مناسبت تر بنظر می آيند. در مقابل استفاده از يک Data Reader دارای کارائی بيشتر مخصوصا" ازبعد استفاده از حافظه بوده که باعث حذف مراحل اضافی برای تکميل و استقرار داده ها در يک DataSet خواهد شد. در اين حالت امکان اعمال کنترل بيشتری بر روی داده ها از طريق عبارات و يا Stored Procedures ها نيز وجود خواهد داشت .
DataSet and Data commands in web form pages . زمانيکه با صفحات فرم های وب کار می شود ، فاکتورهای ديگری نيز جهت انتخاب DataSet و يا Data Reader وجود خواهد داشت . يکی از اين فاکتورها " چرخه حيات يک صفحه وب " است . صفحات فرم های وب ، مقداردهی اوليه ، پردازش و در نهايت حذف خواهند شد( به ازای هر رفت و آمد بين سرويس دهنده و سرويس گيرنده ) . در صورتيکه بخواهيم داده ها را بسادگی بر روی صفحه نمايش دهيم ، می توان يک Dataset را ايجاد و آن را از داده های مورد نظر تکميل و در نهايت آن را به يک کنترل Bind نمود. عمليات فوق مستلزم overhead غير ضروری است ، چون بلافاصله Dataset از بين خواهد رفت .در برخی موارد مناسبت تر است که از Data Reader بمنظور بازيابی داده ها استفاده و با Bind نمودن کنترل به آن در زمان اجراء، زمينه استفاده از داده ها را فراهم نمود. در حالت کلی می توان از دستورات مربوط جهت اجرای عبارات SQL و يا Stored Procedurdes استفاده کرد. مثلا" جهت نمايش داده ها در يک دستور DataList می توان يک عبارت SQL را اجراء و در ادامه کنترل مربوطه را به يک Data reader نسبت داد. در اين زمينه برخی حالات خاص نيز وجود دارد که به آنها اشاره می گردد:
کار با جداول رابطه ای . Dataset امکان پشتيبانی چندين جدول رابطه ای و حمايت از ارتباطات مربوطه را فراهم می نمايد.کار با رکوردهای رابطه ای در يک Dataset بمراتب راحت تر از خواندن رکوردها بصورت مستقل و بکمک اجرای دستوراتی در رابطه با يک بانک اطلاعاتی است.
مبادله داده بين ساير پردازش ها . در صورتيکه صفحات فرم های وب داده های خود را از ساير عناصر اخذ نمايند ،( نظير سرويس های وب Xml) می بايست از يک Dataset جهت نگهداری يک نسخه از داده ها استفاده نمود.Dataset بصورت خودکار Xml های استفاده شده بين عناصر متفاوت در دات نت را خوانده و يا در آنها اطلاعاتی را خواهد نوشت.
کار با يک مجموعه  ثابت از رکوردها . در صورتيکه به مجموعه ای از رکوردها مکررا" نياز باشد ،( مثلا" عمليات paging در يک grid) شايسته است که رکوردهای مورد نظر را در يک Dataset قرار داد.
يکی از مزايای عمده Dataset ، برنامه نويسی ساده تر آن نسبت به استفاده مستقيم از دستورات است .
? Save Dataset or Recreate each time . در صورت استفاده از يک DataSet ، تصميم بعدی در رابطه با اين موضوع خواهد بود که " آيا پس از هر رفت و آمد بين سرويس دهنده و سرويس گيرنده ، می بايست مجددا" Dataset را ايجاد نمود؟ در رابطه با مسئله فوق دو رويکرد وجود دارد :
هر زمان که صفحه پردازش می گردد ،يک نمونه از Dataset ايجاد و مقدار دهی شود، .پس از اتمام پردازش صفحه و ارسال آن برای مرورگر ،Dataset حذف خواهد شد.
ايجاد و تکميل Dataset يک بار انجام شده ( اولين باری که صفحه اجراء می گردد) و درادامه Dataset را با يک روش ذخيره و در نهايت امکان بازيابی و استفاده از رکوردهای موجود در آن فراهم خواهد شد.
ايجاد Dataset در هر مرتبه ، بدين معنی است که هر زمان کاربری بر روی يک Button کليک می نمايد ،يک Query و يا Stored Procedure اجراء خواهد شد. مثلا" می توان يک فرم صفحه وب را داشت که کاربر اطلاعات را  صفحه به صفحه  مشاهده نمايد. در صورتيکه هر بار Dataset ايجاد گردد ،فرم های وب يک query را در از منابع داده ئی جهت دستيابی و اخذ رکوردهای بعدی جهت نمايش ، انجام خواهند داد.
در صورتيکه Dataset را ذخيره و مجددا" بازيابی نمائيم ،نياز به مراجعه مجدد به منبع داده ئی برای اخذ رکوردهای جديد نخواهد بود. ذخيره نمودن يک Dataset دارای چالش های جدی است. يکی از مهمترين چالش ها ،اشغال بخشی از حافظه توسط Dataset خواهد بود( در زمان رفت و آمد صفحه بين سرويس گيرنده و سرويس دهنده ) در صورتيکه Dataset دارای حجم بالائی باشد ،قطعا" حجم بالاتری از حافظه اشغال شده و اگر در چنين وضعيتی چندين کاربر ديگر نيز Dataset هائی را ايجاد کرده باشند ،ميزان استفاده از حافظه بمراتب بيشتر از وضعيت قبلی خواهد بود.( يکی از راهکارهای موجود ذخيره داده در صفحه است ). يکی ديگر از چالش های موجود در اين زمينه ،  مسئله يکسان سازی ( نمودن ) داده های موجود در Dataset با منبع داده ئی است . با توجه به اينکه Dataset تکميل و حاوی داده های درخواستی بوده و در زمان درخواست کاربر برای داده ها ،Dataset مجددا" Refresh نمی گردد ،اين احتمال وجود خواهد داشت که داده های موجود در Dataset يک تصوير زنده از داده های موجود در منابع داده ئی را نشان ندهند .شايد بهتر باشد که برای هر رفت و آمد ،مجددا" Dataset را ايجاد نمود.
? Cache on Server or on the Client . در صورتيکه تصميم به ذخيره سازی يک Dataset را داشته باشيم ( در زمان رفت و آمد صفحات بين سرويس دهنده و سرويس گيرنده ) می بايست در رابطه با محل ذخيره سازی آن تصميم مناسب را اتخاذ نمود. مورد فوق به استانداردها و روش های گفته شده در بحث State management برخواهد گشت . در رابطه با ذخيره سازی Dataset دو رويکرد عمده وجود دارد :
بر روی سرويس دهنده ،Dataset را در يک Session State , Application State و يا Cache ذخيره نمود.
بر روی سرويس گيرنده ،Dataset را با استفاد ه از View State و يا فيلد های مخفی ذخيره نمود.
ذخيره نمودن Dataset بر روی سرويس دهنده باعث افزايش استفاده از منابع سرويس دهنده خواهد شد.در چنين حالتی درصورتيکه حجم Dataset بالا بوده و يا کاربران زيادی با Dataset ها ی با حجم کم وجود داشته باشد ، بر کارائی سرويس دهنده اثرات منفی را خواهد گذاشت . استفاده از cache هم مسائل مربوط به خود را دارد چون در صورتيکه سرويس دهنده نيازمند حافظه بيشتری بوده و يا تاريخ اعتبار Cache به پايان رسيده باشد ،مديريت Cache فضای اشغال شده را آزاد خواهد کرد. بهرحال در چنين مواردی هيچگونه تضمينی وجود نخواهد داشت که Dataset در Cache موجود باشد و می بايست با افزودن منطق مربوطه در صفحات ،در ابتدا بررسی گردد که آيا Dataset در Cache موجود هست يا خير؟ در صورتيکه Dataset در Cache موجود نباشد ،مجددا" آن را ايجاد و يک نسخه از آن را هم در Cache ذخيره نمود.
ذخيره سازی داده ها در صفحات ، بدين معنی است که ازمنابع موجود بر روی سرويس دهنده برای ذخيره سازی داد ه ها استفاده نشده است . در اين روش ، داده ها بعنوان بخشی از Html Stream در صفحات وب قرار خواهند گرفت و اگر Dataset حجيم باشد در زمان لود صفحه در مرورگر و يا ارسال برای سرويس دهنده ، مدت زمان زيادی صرف خواهدشد. در اين راستا می بايست اين سياست: "همواره سعی گردد که حجم Dataset به حداقل مقدار خود رسيده و صرفا" رکوردهای مورد نظر را ذخيره کرد " ، مورد توجه جدی قرار گيرد. در موارديکه می خواهيم يک Dataset را ذخيره نمائيم ،می بايست با افزودن کدهای مربوطه در صفحه ، امکان ذخيره و بازيابی آن را در زمان معقول تحقق بخشيد.
در برنامه زير برای ذخيره و بازيابی يک Dataset از يک Session state استفاده شده است . Dataset با نام dsCoustomer1 بوده که از يک نمونه کلاس dscoustomer dataset استفاده شده است . توجه داشته باشيد که Dataset بعنوان يک شی ذخيره شده است و در زمان بازيابی Dataset می بايست آن را مجددا" به کلاس Dataset تبديل نمود.

 ذخيره و بازيابی يک Dataset بکمک يک Session state

Private Sub Page_Load (ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles MyBase.Load
If  Page.IsPostBack Then
  dsCustomers1 = CType(Session("myDsCustomers"), dsCustomers)
Else
    If  Session("myDsCustomers") Is Nothing Then
        OleDbDataAdapter1.Fill(dsCustomers1)
        Session("myDsCustomers") = dsCustomers1
  End If
End If
End Sub



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382