شاید تا به حال بارها با این مسئله که در برنامه تحت وب نوشته شده خود با ASP.NET برای دستیابی به اطلاعات یک Database از DataSet استفاده کنید یا DataReader مواجه شده باشید. ولی براستی کدام انتخاب بهتر است؟
شاید تا به حال بارها با این مسئله که در برنامه تحت وب نوشته شده خود با ASP.NET برای دستیابی به اطلاعات یک Database از DataSet استفاده کنید یا DataReader مواجه شده باشید. گاها" در بعضی از مقالات مشاهده می شود که به تعریف و تمجید از DataReader در مقابل DataSet پرداخته شده است و در بعضی مقالات نیز استفاده از DataSet توصیه شده است.
اما واقعیت اینست که مایکروسافت این دو کلاس دستیابی داده را بوجود آورده چرا که به هر دوی آنها نیاز بوده است. هر کدام از این دو کلاس دارای نقاط ضعف و قوتی می باشند که با توجه به حالتی که در برنامه با آن مواجه هستیم، باید هر یک از این دو کلاس را در جایی مناسب مورد استفاده قرار دهیم.
در این مقاله سعی بر آن است تا با در نظر گرفتن حالتهای مختلف استفاده از داده های یک Database، راهکاری مناسب برای استفاده از DataSet یا DataReader معرفی شود. نکته حائز اهمیت در این مقاله اینست که بحث بر روی استفاده از DataSet یا DataReader در بازهء برنامه های تحت وب صورت می گیرد و فرض بر این است که خوانندگان گرامی دارای آشنایی اولیه با این دو کلاس باشند.
در چه مواقعی باید از کلاس DataReader استفاده کرد؟
موارد زیر بیان کننده حالاتی است که استفاده از DataReader در مقابل DataSet ترجیح داده میشود.
هنگامی که داده مورد استفاده می بایست همیشه جدید باشد. پس بنابراین در هر زمان که به داده مورد نظر نیاز باشد باید مستقیما" از Database فراخوانی شود.
هنگامی که به هر ردیف از داده ها بطور معمول و سادهای نیاز باشد. مانند پر کردن یک وب کنترل مثل DataGrid یا DropDownList.
هنگام دستیابی یکطرفه و فقط خواندنی به دادههای از نوع XML. در این حالت میتوان از متد ExecuteXmlReader برای بدست آوردن کلاس XmlReader که همانند DataReader عمل میکند، استفاده کرد.
هنگامی که قصد دارید چندین درخواست تکراری برای دریافت قسمت کوچکی از اطلاعات Database داشته باشید.
در چه مواقعی از کلاس DataSet باید استفاده کرد؟
موارد زیر حالاتی را نشان می دهد که استفاده از DataSet در مقابل DataReader توصیه میشود.
هنگامی که سرویس وبی ساختهاید که مقدار برگشتی آن دادههای برگرفته شده از Database میباشد. همانطور که میدانید اطلاعات بین وب سرویس و برنامهای که از وب سرویس استفاده میکند بصورت دادههای XML انتقال مییابد. از این رو با توجه به اینکه DataReader ارتباط با Database را در خود حفظ میکند، لذا نمیتواند بصورت دادههای Serialize ،XML شود.
هنگامی که نیاز به فیلتر کردن و یا مرتبسازی دادهها باشد.
هنگامی که نیاز به ایجاد حلقه تکرار در دادهها باشد. مثلا" هنگامی که میخواهید از یکسری دادهء مشابه در بیش از یک سرور کنترل استفاده کنید. DataReader تنها برای استفاده در یک سرور کنترل بکار میرود در حالی که DataSet اینگونه نیست.
هنگامی که نیاز به ذخیره اطلاعاتی باشد که بعدا" مورد استفاده مجدد قرار خواهد گرفت. میتوان یک DataSet را براحتی در یک Session یا Application ذخیره کرد.
هنگام ارتباط دو طرفه با دادههای XML. با استفاده از DataSet براحتی میتوان دادههای یک فایل XML را خوانده و دوباره آنها را در قالب دادههای XML در یک فایل ذخیره کرد.