Archive

Archive for February, 2012

การใช้งาน ADO.NET กับ วิธีปฏิบัติที่เป็นเลิศ [ Best practices ]

ผมครุ่นคิดอยู่นานว่า การใช้งาน Component ต่าง ๆ ใน .NET Framework นั้น จะทำอย่างไร จึงจะสามารถใช้ได้อย่างมีประสิทธิภาพเนื่องจาก document หรือ คู่มือต่าง ๆ ที่เราพอหาได้นั้นจะเป็นคู่มือแนะนำการใช้งาน กว่าเราจะเข้าใจการทำงานอย่างถ่องแท้และสามารถเลือกการปฏิบัติในการใช้งานด้วยตัวเองได้ดี ก็ต้องลองใช้งานไปแล้วหลายโครงการ ซึ่งในที่สุดเราก็ต้องหวนกลับมาปรับปรุง code เหล่านั้นใหม่เมื่อพบว่าลักษณะการใช้งานเหล่านั้นขาดประสิทธิภาพสิ้นดี

โชคดีครับที่ พอหาเรื่องเหล่านี้ได้ใน internet มีผู้ใช้งานมากมายรวมถึงผู้ผลิตเองเขียนแนะนำการใช้งาน หรือแนวทางในการใช้งานเพื่อให้ได้ประสิทธิภาพสูงสุดหรือที่เรียกว่า Best practice ในการใช้งาน Library หรือ components นั้น ๆ ซึ่งในหัวข้อนี้ จะขอพูดถึงการใช้งาน ADO.NET

ในบทความนี้จะกล่าวถึงหลักปฏิบัติ หรือแนวทางในการปฏิบัติเพื่อใช้งาน ADO.NET ให้ได้อย่างมีประสิทธิภาพ คือ เพิ่มความเร็วและประหยัดเนื้อที่การใช้งานและลดภาระให้กับ network ซึ่งจะประกอบด้วยหัวข้อต่าง ๆ เหล่านี้

– .NET Framwork Data providers
– การใช้งาน DataReaders, DataSets, DataAdapters, and DataView
– การใช้ Commands
– การใช้ Connections
– การทำงานร่วมกับ XML

          ความเข้าใจใน ADO.NET technology อย่างถ่องแท้จะทำให้เราสามารถพัฒนาระบบได้เต็มประสิทธิภาพ และได้ศักยภาพสูงสุดของการทำงาน รวมถึง ความสามารถในการขยายระบบ และ function การทำงานที่ เป็นไปตามทิศทางของระบบที่ ควรเป็น ในบทความพูดถึงการปฏิบัติที่ดีในการใช้ objects ใน ADO.NET และ ให้คำแนะนำที่จะช่วยให้เราสามารถที่จะปรับปรุง การออกแบบ Application ที่ใช้ ADO.NET ให้ดียิ่งขึ้นและมีประสิทิภาพสูงสุด

.NET Framework Data Providers

Data provider เปรียบเสมือน สะพานเชื่อมระหว่าง application และ data source  ซึ่ง data provider ทำหน้าที่ในการส่ง ผลของ query จาก data source หลังจากที่ประมวลผล คำสั่งที่ data source แล้ว และ ส่งการเปลี่ยนแปลงใน DataSet กลับไปยัง Data source

เพื่อให้ได้ประสิทธิภาพสูงสุด ในการพัฒนา Application ควรเลือกใช้ .NET Framework data provider ให้เหมาะสมกับ Data source  data provider มีให้เลือกใช้อยู่หลายตัวครับ ตารางด้านล้างแสดงข้อมูล ของ data provider กับ data source ที่เหมาะสมกัน

Provider

Details

SQL Server .NET Data Provider Found in the System.Data.SqlClientnamespace.Recommended for middle-tier applications using Microsoft SQL Server version 7.0 or later.Recommended for single-tier applications using the Microsoft Data Engine (MSDE) or Microsoft SQL Server 7.0 or later. 
OLE DB .NET Data Provider Found in the System.Data.OleDbnamespace.Recommended for middle-tier applications using Microsoft SQL Server 6.5 or earlier, or any OLE DB provider that supports the OLE DB interfaces listed in OLE DB Interfaces Used by the OLE DB .NET Data Providerin the .NET Framework SDK. (OLE DB 2.5 interfaces are not required.)For Microsoft SQL Server 7.0 or later, the .NET Framework Data Provider for SQL Server is recommended.Recommended for single-tier applications using a Microsoft® Access database. Use of an Access database for a middle-tier application is not recommended.

Support for the OLE DB Provider for ODBC (MSDASQL) is disabled. For access to Open Database Connectivity (ODBC) data sources, an ODBC .NET Data Provider download is available and will be included in the .NET Framework SDK version 1.1.

ODBC .NET Data Provider The ODBC .NET Data Provider for is available for download.Found in the Microsoft.Data.Odbcnamespace.Provides access to data sources that are connected to using an ODBC driver.Note   The ODBC .NET Data Provider will be included in upcoming versions of the .NET Framework starting with version 1.1. The namespace for the included ODBC .NET Data Provider is System.Data.Odbc.
.NET Data Provider for Oracle The Microsoft .NET Data Provider for Oracle is available for download.Found in the System.Data.OracleClientnamespace.Provides access to Oracle data sources (version 8.1.7 and later).Note   The .NET Data Provider for Oracle will be included in upcoming versions of the .NET Framework starting with version 1.1.
Custom .NET Data Provider ADO.NET provides a minimal set of interfaces to enable you to implement your own .NET Framework data provider. For more information about creating a custom data provider, see Implementing a .NET Data Provider in the .NET Framework SDK.
SQLXML Managed Classes The release of XML for Microsoft SQL Server 2000 (SQLXML 3.0) contains SQLXML Managed Classes that enable you to access the XML functionality of Microsoft SQL Server 2000 and later, from the .NET Framework. For example, these classes enable you to execute XML templates, perform XML Path Language (XPath) queries over data at the server, or perform updates to data using Updategrams or Diffgrams.Building on the functionality from SQLXML 1.0 and 2.0, SQLXML 3.0 introduces Web Services to SQL Server 2000. With SQLXML 3.0, Stored Procedures and XML Templates can be exposed as a Web Service through SOAP.SQLXML 3.0 is available for download

อ้างอิงจาก http://msdn.microsoft.com/en-us/library/ms971481.aspx

การเชื่อมต่อกับ SQL Server ตั้งแต่ Version 7.0 ขึ้นไป

เพื่อให้ได้ประสิทธิภาพสูงสุด เมื่อต้องการเชื่อมต่อกับฐานข้อมูล Microsoft SQL server ควรเลือกใช้ SQL Server .NET Data provider.  SQL Server .NET Data provider นั้นออกแบบให้ เข้าถึง SQL Server โดยตรง โดยที่ไม่ต้องเกี่ยวข้องกับ technology อื่น ๆ  จากภาพด้าน แสดง  techonolgy ต่าง ๆ ที่ช่วยให้ เข้าถึง SQL Server

Figure 1. Connectivity methods for accessing SQL Server 7.0 or later

อ้างอิงจาก http://msdn.microsoft.com/en-us/library/ms971481.aspx

การเชื่อมต่อ ODBC Data Sources

ODBC .NET Data provider อยู่ใน namespace ที่ชื่อว่า Microsoft.Data.Odbc มีสถาปัตยกรรม แบบเดียวกับ  SQL Server .NET และ OLE DB Data provider. และใช้ connection strings มาตรฐานของ ODBC.

–>  ODBC.NET Data provider จะถูกรวมไว้ใน .NET Framework ตั้งแต่ version 1.1 เป็นต้นไป ซึ่งจะอยู่ใน namespace ชื่อ System.Data.Odbc

การใช้งาน DataReaders  DataSets DataAdapters และ DataViews

ADO.NET มี Object ที่ใช้ในการเข้าถึงข้อมูล และเก็บไว้ใน Memory คือ DataSet และ DataReader

–      DataSet เก็บข้อมูลในรูปแบบ relational ไว้ใน หน่วยความจำ  ประกอบด้วย ตาราง ข้อมูล ลำดับ และ ความสัมพันธ์ระหว่างตาราง

–      Data reader ให้ Streamของข้อมูล ในลักษณะไปข้างหน้าอย่างเดียว และอ่านได้อย่างเดียว

การ ใช้ DataSet มักใช้ควบคู่กับ DataAdapter เพื่อเชื่อมต่อไปยัง data source และมักต้องใช้ DataView เพื่อใช้ในการ sorting และ filtering ข้อมูลใน DataSet นอกจากนี้ DataSet ยังสามารถที่จะสร้าง strongly typed เพื่อให้สามารถเข้าถึงข้อมูลในตารางในลักษณะ property ของ object.

ในหัวข้อถัดไปจะกล่าวถึงการใช้งาน DataSet และ DataReader ทั้งเรื่องการใช้งานการ optimize การเข้าถึงข้อมูล รวมถึงเคร็ดลับการ optimize การใช้งาน DataAdapter และ DataView

คงต้องไว้คราวหน้าแล้วหล่ะครับ คราบขอไว้แค่นี้นะครับ ขอให้สนุกกับการเขียนโปรแกรม

s_teerapong2000@yahoo.com

Teerapong sontayaman

Categories: ADO.NET, DOT NET Tags: