DB에 에서 데이타를 가져온다면... DataSet이나 DataReader를 사용해 봤을 것이다.(DataTable은 DataSet과 동일하다.)
이때... 기본적으로 DataReader가 DataSet보단 성능상 잇점이 많다고 한다. 하지만 개발을 하다 보면.. DataSet이나 DataTable이 필요할 때가 있다. 그리고 사용하기도 편하다.
아무튼.. 이런 경우 어느때 이 둘을 나눠서 사용 해야 할지 고민해 볼 필요가 있다.
그래서.. 이런 글을 준비했다.^^;
아래 내용은 인터넷 어디선가... 퍼온 글이다... 출처를 모르겠다.
Use DataReader objects instead of DataSet when ever you need to display data. DataReader is the most efficient means of data retrieval!! as they are read and forward only. DataSet are disconnected and in-memory therefore uses valuable server resources. Only use them when you need the same data more then once or want to do some processing on the data.
Last but certainly not the least follow the best coding, design and deployment patterns and practices. Here are few more usefull links that can be very helpful in performance optimization of you ASP.NET application
http://msdn.microsoft.com/en-us/library/ms973838.aspx
http://msdn.microsoft.com/en-us/library/ms998569.aspx
http://msdn.microsoft.com/en-us/magazine/cc500561.aspx
http://msdn.microsoft.com/en-us/library/ms998549.aspx
http://msdn.microsoft.com/en-us/library/ms973839.aspx
번역을 위해 준비한 글이 아니기 때문에 간략이 직역을 해보자면
데이타를 화면에 출력할 필요가 있을 경우 DataSet대신 DataReader객체를 사용하란다. DataReader가 데이타를 읽고 수신하는데 훨씬 효과적이란다. DataSet은 비연결 방식으로 데이타를 서버 메모리에 저장하기 때문에 서버 자원을 사용하기 때문에 안좋단다. 아무튼 이런 이유로 DataSet은 같은 데이타를 한번 이상 사용하거나 데이타 가공이 필요한 경우에 사용하란다.
물론 가장 확실한 방법은 코딩과, 설계, 패턴 등에 따르라고 하는데... (ㅡ.ㅡ; 왠지 낚인기분인데...) 아무튼 링크된 곳을 참고하기 바란다.
'.NET'에 해당되는 글 3건
- 2010/03/30 DataSet 대신 DataReader를 사용하라....
- 2009/06/09 VB.NET, C#소스 소스변환
- 2009/03/19 확장 메서드(Extension Method)
태생적으로 VB.NET과 C#은 같은 구조를 가지고 있습니다.
차이가 있다면 syntax차이가 있죠.
아래 사이트는 VB.NET, C#소스간의 syntax를 서로 변환 해주는 사이트 입니다.
오픈소스 프로젝트인 #develop editor(Visual Studio를 대체할 수 있는 IDE)의 소스 코드를 기반으로 만들었답니다.
C# 3.0이 제공하는 새로운 기술이 참 많은데 그 중 가장 많이 거론 되는 내용이 LINQ기술일 것이다. 하지만 LINQ보다 도 코딩 시 더 유용한 기술이 있어 소개해보려 합니다.
Extension Method
구글에서 “Extension Method” 이라고 검색해보면 꽤나 많은 글들이 올라오고 사용방법에 대해서 자세히 설명하고 있으니 관련 글을 찾아봐도 되겠지만 간략히 이해 하고 싶은 분들은 아래 글을 참고해주세요. 제가 쓰는 글보다는 구글에 올라온 글이 백번 낫겠지만^^;
Extension Method는 말 그대로 메서드를 확장해서 사용하는 기술입니다. 예제를 보면서 설명 하도록 하겠습니다.
public static class EMClass
{
public static int ToInt32Ext(this string s)
{
return Int32.Parse(s);
}
public static int ToInt32Static(string s)
{
return Int32.Parse(s);
}
}
class Program
{
static void Main(string[] args)
{
string s = "9";
int i = s.ToInt32Ext(); // 확장 메서드
int j = EMClass.ToInt32Static(s); // 일반 적으로 사용하는 방법
}
}
소개하려는 메서드는 문자를 숫자로 바꿔주는 소스입니다. 함수를 바로 사용하기 위해서 static을 많이 사용합니다. 그리고 위의 소스처럼 함수 인자에 뭔가를 넣겠죠.
int j = EMClass.ToInt32Static(s); // 일반 적으로 사용하는 방법
이렇게 말입니다.
일단 static을 사용했으니 인스턴스 객체를 만들지 않고 바로 메서드를 사용할 수 있으니 간단하죠. 그런데 그 아래 확장 메서드라는 라인을 보면 string 클래스에 ToInt32Ext()메서드가 있는것처럼 바로 접근해서 사용하는 것을 볼 수 있습니다. 최소한 가독성이나 사용 면에서는 확장 메서드가 사용상 용이해 보입니다.
딱히 필요성을 모르겠다는 분들을 위해 다른 소스를 예제로 보여드리겠습니다.
우선 오늘 날짜에서 특정 일을 빼주는 함수를 만든다고 가정 하겠습니다.
그럼 보통 이런 함수를 구상 하시리라 예상됩니다.
public static DateTime MinusDay(DateTime dt, int days)
{
DateTime d = dt.AddDays(-days);
return d;
}
날짜 파라메터, 지정 날짜 파라메터 그리고 아래 처럼 사용할 것입니다.
DateTime current = DateTime.Now;
DateTime dt1 = DateTimerHelper.MinusDay(current, 3);
하지만 확장 메서드를 사용하면 마치 DateTime 에 MinusDay라는 메서드가 있는 것 처럼 사용할 수 있습니다.
public static DateTime EX_MinusDay(this DateTime dt, int days)
{
DateTime d = dt.AddDays(-days);
return d;
}
DateTime dt2 = current.EX_MinusDay(3);
소스입니다.
public static class DateTimerHelper
{
public static DateTime MinusDay(DateTime dt, int days)
{
DateTime d = dt.AddDays(-days);
return d;
}
public static DateTime EX_MinusDay(this DateTime dt, int days)
{
DateTime d = dt.AddDays(-days);
return d;
}
}
class Program
{
static void Main(string[] args)
{
DateTime current = DateTime.Now;
DateTime dt1 = DateTimerHelper.MinusDay(current, 3); //일반적으로 사용하는 방법
DateTime dt2 = current.EX_MinusDay(3); //확장 메서드를 사용하는 방법
}
}
확장 메서드(Extension Method)를 사용하기 위해서는 몇가지 조건이 필요합니다. 확장 메서드는 static class에 static method로 선언 하여, instance메소드를 호출 하듯이 사용하면 됩니다.
http://www.taeyo.net/Columns/View.aspx?SEQ=312&PSEQ=11