[Áöµð³ÝÄÚ¸®¾Æ]´å³Ý ±â¼úÀÌ Á¤½ÄÀ¸·Î ·±ÄªµÈÁö 5³â °¿¡ Á¢¾îµé°í ÀÖ´Ù. 5³â ¸¸¿¡ ¹öÀüÀº 1.0¿¡¼ 1.1·Î ±×¸®°í 2.0À¸·Î ¹ßÀüÇØ ¿Ô´Ù. ³»³â »ó¹Ý±â¿¡´Â Á¤¸» ¾öû³ º¯È¿Í ¾µ ¸¸ÇÑ ±â¼úÀ» °¡µæ ´ãÀº ÇÁ·¹ÀÓ¿öÅ© 3.0µµ ¹ßÇ¥ µÉ ¿¹Á¤ÀÌ´Ù. ´å³ÝÀº ÀÚ¹Ù³ª ´Ù¸¥ ¾ð¾îµé¿¡ ºñÇØ¼ »ó´ëÀûÀ¸·Î ¾î¸®´Ù. ±× Å¿¿¡ ´å³Ý ±â¼úÀ» »ç¿ëÇÏ´Â °³¹ßÀÚµéÀÇ °æ¿ì »ç¼ÒÇÑ ½Ç¼ö·Î ¼º´ÉÀûÀÎ À̽´¸¦ ¸¸µé¾î ³»´Â °æ¿ì°¡ ¸¹´Ù. 4ºÎ¿¡¼´Â ´å³Ý ÇÁ·Î±×·¡¹ÖÀÇ ¼º´ÉÀûÀÎ À̽´¸¦ ¿¹¹æÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ÆÁµéÀ» ¼Ò°³ÇÑ´Ù.
´å³Ý ±â¼úÀÌ Á¤½ÄÀ¸·Î ·±Äª µÈÁöµµ ¹ú½á 4³âÀÌ ³Ñ¾î°£´Ù. 4³â µ¿¾È ´å³Ý ±â¼úÀÌ °É¾î¿Â ±æÀ» º¸¸é Á¤¸» ¼û °¡»Ú°Ô ´Þ·Á¿Â °Í °°´Ù. ±× µ¿¾È ¹öÀüÀÌ 1.0¿¡¼ 1.1·Î ¶Ç 1.1¿¡¼ 2.0À¸·Î ¹Ù²î¾ú°í ³»³â¿¡´Â ¹öÀü 3.0ÀÌ ¹ßÇ¥µÉ ¿¹Á¤ÀÌ´Ù. ´å³ÝÀÇ °³¹ßȯ°æ ÀÚü´Â ºñÁÖ¾ó ½ºÆ©µð¿À¶ó´Â °·ÂÇÑ µµ±¸¿¡ ÀÇÇØ¼ ¸¹Àº ºÎºÐµéÀÌ Áö¿øµÈ´Ù.
±× ´ö¿¡ ´å³Ý °³¹ßÀÚµéÀº ÇÁ·ÎÁ§Æ® ÆÄÀÏÀ̳ª ¼Ö·ç¼Ç ÆÄÀÏÀÇ ±¸Á¶³ª ÀÛ¼º¹æ¹ý °°Àº ±âº»ÀûÀÎ ºÎºÐÀ» ¸ô¶óµµ °³¹ßÇϴµ¥ ÀüÇô ÁöÀåÀÌ ¾øÀ» Á¤µµ´Ù.
¶§·Î´Â Áö³ªÄ¡°Ô(?) Æí¸®ÇÑ °³¹ß ȯ°æ¿¡ ÀÇÁ¸ÇÏ´Ù º¸¸é °³¹ß »ý»ê¼ºÀº È®½ÇÈ÷ º¸Àå ¹ÞÀ» ¼ö ÀÖÀ»Áö ¸ô¶óµµ ¼º´É¿¡ °ü·ÃµÈ ºÎºÐµéÀ» ³õÄ¡±â ½±´Ù. Ç×»ó ÀÌ ¹Ù´ÚÀÇ Áö·ÐÀº °³¹ßÀÚÀÇ °í»ý°ú ¼ÒÇÁÆ®¿þ¾îÀÇ ¼º´ÉÀº ºñ·Ê °ü°è¿¡ ÀÖ´Ù´Â Á¡ÀÌ´Ù.
´å³Ý ÀÚü´Â ±â°è¾î·Î ¹Ù·Î ¹ø¿ªµÇ¾î ÀÖ´Â »óŰ¡ ¾Æ´Ï¶ó Áß°£ »óÅÂÀÎ ILÇüÅ·Π¹ø¿ªµÇ¾î ÀÖ´Ù. ½ÇÇà ½Ã¸¶´Ù ±â°è¾î·Î ¹ø¿ªµÇ¾î¼ ½ÇÇàµÇ´Â JIT(Just In Time) ÄÄÆÄÀÏ·¯ ¹æ½ÄÀ¸·Î ÃÖÀûÈ µÇ¾îÀÖ´Ù. ¾Æ¹«·¡µµ Áß°£¿¡ ÇÑ ´Ü°è¸¦ °ÅÄ¡´Â Å¿¿¡ VC++µî¿¡¼ °³¹ßÇÑ ³×ÀÌÆ¼ºê ÇÁ·Î±×·¥µé¿¡ ºñÇØ¼´Â ¼º´ÉÀÌ ¶³¾îÁö´Â °Íµµ »ç½ÇÀÌ´Ù.
ÇÏÁö¸¸ ÀϹÝÀûÀÎ ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇϴµ¥ À־ À̽´°¡ µÇÁö ¾Ê´Â´Ù. ¼º´É À̽´ÀÇ ´ëºÎºÐÀº ´å³Ý ÀÚüÀÇ ¹®Á¦¶ó±â º¸´Ù´Â ´å³ÝÀ» °³¹ßÇÏ´Â ¹æ½ÄÀÇ ¹®Á¦³ª ³×Æ®¿öÅ© ȤÀº µ¥ÀÌÅͺ£À̽ºÀÇ º´¸ñÇö»ó ¶§¹®ÀÎ °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù.
±× ´ö¿¡ ´å³Ý ÀÚü¿¡¼ ¼º´ÉÀ» À§Çؼ Æ©´×ÇØ¾ß ÇÒ ºÎºÐÀº »ç½Ç ±×¸® ¸¹Áö ¾Ê´Ù. ÀÌÁ¦ ºÎÅÍ ¸î °¡Áö ÀϹÝÀûÀÎ Æ©´× Æ÷ÀÎÆ®µé¿¡ ´ëÇØ »ìÆìº¸ÀÚ.
 | StringBuilderÀÇ »ç¿ë |  |
¸¹Àº »ç¶÷µéÀÌ ¾Ë°í ÀÖ´Â °Íó·³ string ŸÀÔÀÇ ¿¬»ê¿¡´Â ¸¹Àº ¿À¹öÇìµå°¡ ¹ß»ýÇÑ´Ù. string ŸÀÔÀÇ ¿¬»êÀ» ÇÏ¸é ±âÁ¸ÀÇ °ªÀÌ ¹Ù²î´Â °ÍÀÌ ¾Æ´Ï¶ó º°µµÀÇ ¸Þ¸ð¸®¸¦ »õ·Î ÇÒ´çÇÏ°í »õ·Î ÇÒ´çÇÑ ¸Þ¸ð¸®¿¡ ¿¬»êÀÇ °á°ú¸¦ ³Ö´Â´Ù.
string ŸÀÔÀÇ ¿¬»êÀ» ¹Ýº¹Çؼ »ç¿ëÇÒ °æ¿ì¿¡´Â °è¼Ó ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í º¹»çÇÏ´Â µ¿ÀÛÀ» ¹Ýº¹ÇÏ¸é¼ ¾µµ¥¾ø´Â ºÎÇϸ¦ ÀÏÀ¸Å²´Ù. ±×·¡¼ ´ëºÎºÐÀÇ °æ¿ì string ŸÀÔÀÇ ¿¬»êÀÌ ÀæÀº °÷¿¡´Â stringÀ» »ç¿ëÇÏÁö ¸»°í StringBuilder¸¦ »ç¿ëÇ϶ó´Â ±ÇÀåÀ» ¾îµð¼³ª ½±°Ô µéÀ» ¼ö ÀÖ´Â °ÍÀÌ´Ù.
StringBuilder´Â ±âº»ÀûÀ¸·Î ÃæºÐÇÑ ¹öÆÛ¸¦ È®º¸ÇÏ°í °è¼Ó ¹®ÀÚ¿À» Ãß°¡(Append)ÇÏ´Â ¹æ½ÄÀ̱⠶§¹®¿¡ ±âº»ÀûÀ¸·Î ¹®Àڿó·³ °è¼ÓÇØ¼ ¸Þ¸ð¸®¸¦ ÇÒ´ç¹ÞÁö ¾Ê¾Æµµ µÈ´Ù. ¶§¹®¿¡ º¸Åë ±ä¹®ÀÚ¿À̳ª SQL Äõ¸®¸¦ Á¶ÇÕÇÏ´Â µîÀÇ ¿ëµµ·Î ³Î¸® »ç¿ëÇϰíÀÖ´Â ¹æ½ÄÀÌ´Ù.
 |
| <±×¸² 1> »ðÀÔ string°ú StringBuilderÀÇ ¸Þ¸ð¸® ÇÒ´ç |
StringBuilder¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾ÆÁÖ ½±´Ù. ¸ÕÀú ±âÁ¸ÀÇ stringÀ¸·Î ±¸¼ºµÈ <¸®½ºÆ® 1> ¿¹Á¦¸¦ »ìÆìº¸ÀÚ.
| <¸®½ºÆ® 1> ÀϹÝÀûÀÎ string ¿¬»êÀÇ ¿¹ | | | |
string a="aaa";
string b="bbb";
Console.WriteLine(a +b);
| |
 |
<¸®½ºÆ® 1>À» StringBuilder¸¦ »ç¿ëÇÏ´Â ¿¹Á¦·Î ¹Ù²Ù¾î º¸¸é <¸®½ºÆ® 2>ó·³ µÈ´Ù.
| <¸®½ºÆ® 2> StringBuilder¸¦ ÀÌ¿ëÇÑ ¹®ÀÚ¿ ¿¬»êÀÇ ¿¹ | | | |
System.Text.StringBuilder sb = new
System.Text.StringBuilder();
sb.Append("aaa");
sb.Append("bbb");
Console.WriteLine(sb.ToString());
| |
 |
StringBuilder¸¦ »ç¿ëÇÑ´Ù°í ÇØ¼ ¹«Á¶°Ç ¼º´É¿¡ µµ¿òÀÌ µÇ´Â °ÍÀº ¾Æ´Ï´Ù. StringBuilderÀÇ °æ¿ì ±âº» ¹öÆÛ »çÀÌÁî°¡ 16¹ÙÀÌÆ® ¹Û¿¡ µÇÁö ¾Ê´Â Å¿ÀÌ´Ù.
¸¸¾à 16¹ÙÀÌÆ®°¡ ³Ñ°Ô µÇ¸é String Builder°¡ ¾Ë¾Æ¼ 32¹ÙÀÌÆ®·Î ´Ù½Ã ¹öÆÛ¸¦ È®ÀåÇÑ´Ù. ¸¸¾à 32¹ÙÀÌÆ®¸¶Àúµµ ³Ñ°Ô µÇ¸é ´Ù½Ã 64¹ÙÀÌÆ®¸¦ È®º¸ÇÑ´Ù. String Builder´Â Ãʱ⿡ ÇÒ´çµÈ »çÀÌÁ ³Ñ¾î¼°Ô µÇ¸é °è¼ÓÇØ¼ ÇöÀç ¸Þ¸ð¸®ÀÇ µÎ ¹è¿¡ ÇØ´çÇÏ´Â ¸Þ¸ð¸®¸¦ È®º¸ÇÏ°Ô µÈ´Ù.
À̶§ ±âÁ¸¿¡ ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®¸¦ µÎ ¹è·Î ´Ã¸®´Â °ÍÀÌ ¾Æ´Ï¶ó µÎ ¹èÀÇ ¸Þ¸ð¸®¸¦ »õ·Î È®º¸Çؼ »õ·Î È®º¸ÇÑ ¸Þ¸ð¸®·Î stringÀ» ¿Å±â´Â ¹æ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù.
Áï ÇÒ´ç¹ÞÀº ¸Þ¸ð¸®°¡ ³ÑÄ¡°Ô µÇ¸é stringÀ» »ç¿ëÇÏ´Â °ÍÀ̳ª ´Ù¸§¾ø´Â ¼ÀÀÌ´Ù.À̸¦ ÇÇÇÏ·Á¸é System.Text.StringBuilder sb = System.Text.StringBuilder(100); ó·³ óÀ½¿¡ StringBuilder¸¦ »ý¼ºÇÒ ¶§ »ý¼ºÀÚ¿¡ ÃæºÐÇÑ ¹öÆÛ »çÀÌÁ ÁöÁ¤ÇÏ¸é µÈ´Ù.
 | DataReaderÀÇ È°¿ë |  |
´ëºÎºÐÀÇ ÇÁ·ÎÁ§Æ®¿¡¼ DataReader´Â ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¸é Àß »ç¿ëµÇÁö ¾Ê´Â °´Ã¼´Ù. ´ëºÎºÐÀÇ µ¥ÀÌÅͺ£À̽º ÀÛ¾÷ÀºDataAdapter¸¦ ÀÌ¿ëÇØ¼ DataSet¿¡ °á°ú¸¦ ´ã´Â ¹æ½ÄÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ´Ù¾çÇÑ ±â´ÉÀÇ È°¿ëÀ» À§Çؼ´Â DataSetÀ» ÀÌ¿ëÇÏ´Â °Ô Á¤´äÀ̰ÚÁö¸¸ ¼º´ÉÀ̶ó´Â ¹®Á¦¸¸ ³õ°í º¸¾ÒÀ» ¶§´Â DataReader¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ¿Ã¹Ù¸¥ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù.
| <¸®½ºÆ® 3> DataReaderÀÇ »ç¿ë ¿¹ | | | |
SqlCommand cmd = new SqlCommand("select * from
categories", conn);
SqlDataReader dr = cmd.ExecuteReader();
| |
 |
DataReader´Â DataSet¿¡ ºñÇØ¼´Â ±â´ÉÀÌ ¸¹ÀÌ ¶³¾îÁöÁö¸¸ ±× ´ë½Å ±¸Á¶°¡ °£´ÜÇØ¼ °£´ÜÇÑ ½ºÅ°¸¶Á¤º¸¿Í ¼ø¼ö µ¥ÀÌÅ͸¸ Á¸ÀçÇÑ´Ù. ¹Ý¸é¿¡ DataSetÀº ¸ðµç µ¥ÀÌÅÍÀÇ »óÅÂÁ¤º¸±îÁö ¸ðµÎ À¯ÁöÇØ¾ß Çϱ⠶§¹®¿¡ »ó´ëÀûÀ¸·Î ¸Þ¸ð¸®µµ ÈξÀ ´õ ¸¹ÀÌ Â÷ÁöÇÏ°í »ý°¢º¸´Ù »ó´çÈ÷ ¹«°Å¿î °´Ã¼ÀÌ´Ù.
µû¶ó¼ Á¶È¸ À§ÁÖÀÇ ´ë·® µ¥ÀÌÅÍÀÎ °æ¿ì DataReader·Î Äڵ带 ¼öÁ¤ÇÏ¸é »ó´çÇÑ ¼º´É»óÀÇ ÀÌÁ¡À» ¾òÀ» ¼ö ÀÖ´Ù.
ÇÏÁö¸¸ DataReader·Î ¼º´É»óÀÇ ÀÌÁ¡À» ¾òÀ¸·Á¸é ¸î °¡Áö ÁÖÀÇÇÒ Á¡ÀÌ ÀÖ´Ù. DataReader´Â ¿·ÁÀÖ´Â µ¿¾È °è¼ÓÇØ¼ Connection°´Ã¼¸¦ µ¶Á¡ÇØ ¹ö¸®´Â ¹®Á¦°¡ ÀÖÀ¸´Ï, »ç¿ëÇÒ ¶§¸¸ ¿¾ú´Ù°¡ »ç¿ëÀÌ ³¡³ª¸é Àì½Î°Ô DataReader.Close()¸¦ È£ÃâÇØ ÁÖ´Â ¼¾½º°¡ ÇÊ¿äÇÏ´Ù. ¶Ç ÇϳªÀÇ ¹®Á¦´Â DataReader°¡ À¥ ¼ºñ½º¸¦ ÅëÇØ¼ Àü´ÞµÇÁö ¾Ê´Â´Ù.
Á» ´õ Á¤È®ÇÏ°Ô ¾ê±â ÇÏÀÚ¸é DataReader´Â Á÷·ÄÈ(Serialize)°¡ µÇÁö ¾Ê´Â´Ù. ¶§¹®¿¡ À¥ ¼ºñ½º¸¦ »ç¿ëÇÏ´Â °÷¿¡¼´Â ±âº»ÀûÀ¸·Î DataSetÀ̳ª ArrayÀ» ÀÌ¿ëÇØ¼ µ¥ÀÌÅ͸¦ Àü´ÞÇÏ´Â ¹æ½ÄÀ» ¿øÄ¢À¸·Î Çϰí ÀÖ´Ù.
DataReader¸¦ Á÷Á¢ À¥¼ºñ½º·Î ³Ñ±â´Â °ÍÀº ºÒ°¡´É ÇÏÁö¸¸ DataReader¸¦ DataSetÀ¸·Î º¯È¯Çؼ ³Ñ±â´Â °ÍÀº °¡´ÉÇÏ´Ù.
| <¸®½ºÆ® 4> DataReader¸¦ DataSetÀ¸·Î º¯È¯ÇÏ´Â ÇÔ¼ö | | | |
/// <summary>
/// DataReader ¸¦ DataSet À¸·Î º¯È¯ÇÕ´Ï´Ù.
/// </summary>
/// <param name='reader'>º¯È¯ÇÒ DataReader</param>
/// <returns>Reader ÀÇ ³»¿ëÀ¸·Î ä¿öÁø DataSet.</returns>
public static DataSet
ConvertDataReaderToDataSet(IDataReader reader)
{
DataSet dataSet = new DataSet();
try
{
do
{
// »õ DataTable °´Ã¼ »ý¼º
DataTable schemaTable = reader.GetSchemaTable();
DataTable dataTable = new DataTable();
if ( schemaTable != null )
{
// ·¹Äڵ尡 Á¶È¸°¡ µÇ¾úÀ» °æ¿ì
for ( int i = 0; i < schemaTable.Rows.Count; i++ )
{
DataRow dataRow = schemaTable.Rows[ i ];
// DataTable ¿¡ ³ÖÀ» °íÀ¯ Ä÷³¸íÀ» »ý¼ºÇÑ´Ù.
string columnName = ( string )dataRow[ "ColumnName"
]; // DataTable ¿¡ Ä÷³À» Ãß°¡
DataColumn column = new DataColumn( columnName, (
Type )dataRow[ "DataType" ] );
dataTable.Columns.Add( column );
}
dataSet.Tables.Add( dataTable );
// ¹æ±Ý Á¤ÀÇÇÑ DataTable ¿¡ µ¥ÀÌÅ͸¦ ä¿ó´Ï´Ù.
while ( reader.Read() )
{
DataRow dataRow = dataTable.NewRow();
for ( int i = 0; i < reader.FieldCount; i++ )
{
dataRow[ i ] = reader.GetValue( i );
}
dataTable.Rows.Add( dataRow );
}
}
else
{
// ·¹Äڵ尡 ¹ÝȯµÇÁö ¾Ê¾ÒÀ» °æ¿ì
DataColumn column = new DataColumn("RowsAffected");
dataTable.Columns.Add(column);
dataSet.Tables.Add( dataTable );
DataRow dataRow = dataTable.NewRow();
dataRow[0] = reader.RecordsAffected;
dataTable.Rows.Add( dataRow );
}
}
while ( reader.NextResult() );
}
finally
{
reader.Close();
}
return dataSet;
}
| |
 |
<¸®½ºÆ® 4>¿¡¼ ¼Ò°³Çϰí ÀÖ´Â ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé DataReader¸¦ DataSetÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ÀÏÀÏÀÌ ·çÇÁ¸¦ µ¹¸é¼ ¹Ýº¹ÇÏ´Â ±î´ß¿¡ º°µµÀÇ ¿À¹öÇìµå´Â ¹ß»ýÇÑ´Ù. <¸®½ºÆ® 4>¿¡¼ »ç¿ëÇÏ´Â ¹æ¹ýÀº COM+ ȤÀº ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ǿ¡¼´Â ¼º´É»óÀÇ ¿©À¯°¡ ÃæºÐÇѵ¥ µ¥ÀÌÅͺ£À̽ºÀÇ º´¸ñÇö»óÀÌ ¹ß»ýÇÒ ¶§ »ç¿ëÇϸé ÁÁÀº ¹æ¹ýÀÌ´Ù.
¸¸¾à ´å³Ý ÇÁ·¹ÀÓ¿öÅ© 2.0À» »ç¿ëÇÑ´Ù°í ÇÏ¸é ´õ ÁÁÀº ¹æ¹ýÀÌ ÀÖ´Ù. DataTable.Load() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. »ç¿ëÇÏ´Â ¹æ¹ýÀº DataTable.Load(DataReader dr)¿Í °°ÀÌ Data TableÀ» ¸ÕÀú »ý¼ºÇؼ ¿©±â¿¡ Load()¿¡ DataReader °´Ã¼¸¦³Ñ°ÜÁֱ⸸ ÇÏ¸é µÈ´Ù.
Á¤¸» À̰ɷΠ¸ðµç °ÍÀÌ ´Ù µÈ´Ù. ÀÌ·¸°Ô¸¸ Çϸé DataTableÀÌ ¾Ë¾Æ¼ ½ºÅ°¸¶¸¦ ÆÄ¾ÇÇØ¼ DataTableÀÇ Ä÷³ ½ºÅ°¸¶¸¦ »ý¼ºÇϰí DataReaderÀÇ µ¥ÀÌÅÍ·Î DataTableÀ» ä¿î´Ù.
¹°·Ð ¼º´É»óÀÇ ÀÌÁ¡µµ ºÐ¸íÇѵ¥ ¹Ýº¹¹®À» ¿½ÉÈ÷ µµ´Â °Í¿¡ ºñÇØ¼ ¾öû³ ¼Óµµ Çâ»óÀÌ ÀÖ´Ù. ¶Ç ´Ù¸£°Ô º¸¸é DataAdapter¸¦»ç¿ëÇÏÁö ¾Ê¾Æµµ µÈ´Ù´Â ÀåÁ¡µµ ÀÖ´Ù.
»ç½Ç µûÁö°í º¸¸é ADO.NET 1.x¿¡¼ ADO.NET 2.0À¸·Î º¯°æÇϱ⸸ ÇØµµ ´ë·®ÀÇ µ¥ÀÌÅ͸¦ ´Ù·ç´Âµ¥ ÀÖ¾î¼ »ó´çÇÑ ¼º´É»óÀÇ ÀÌÁ¡À» °¡Áú ¼ö ÀÖ´Ù. ADO.NET 2.0¿¡¼´Â ³»ºÎÀûÀ¸·Î À妽º ¿£ÁøÀ» °ÅÀÇ ´Ù½Ã ÀÛ¼ºÇÏ´Â ´ë°ø»ç¸¦ Çß´Ù°í ÇÑ´Ù.
<Ç¥ 1>À» º¸¸é µ¥ÀÌÅÍ °Ç¼ö°¡ ¸¹¾ÆÁú¼ö·Ï ADO.NET 2.0ÀÇ È¿À²¼ºÀÌ ´õ Àß º¸À̰í Àִµ¥ 1¸¸ °Ç Á¤µµÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¶§´Â Å« Â÷À̰¡ ¾ø´Ù°¡ 10¸¸ °Ç ºÎÅÍ´Â °ÅÀÇ µÎ ¹è Â÷À̰¡ ³ª´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ¶Ç 100¸¸ °ÇÀ» ó¸®ÇÒ ¶§´Â »ç½Ç ºñ±³°¡ ¾È µÉ Á¤µµ·Î ¾öû³ Â÷À̸¦ º¸À̰í ÀÖ´Ù.
 | DataTableReader |  |
¾Õ¼ ¾Ë¾Æº» DataReader´Â DataSet¿¡ ºñÇØ¼ ±× ±¸Á¶°¡ ±ØÈ÷ °¡º±°í È¿À²ÀûÀ̱ä ÇÏÁö¸¸ »ç¿ë»óÀÇ Á¦¾à°ú ºÒÆíÇÔÀ¸·Î ÀÎÇØ¸¹ÀÌ »ç¿ëµÇÁö ¾Ê°í ÀÖ´Ù.
¡®DataReaderó·³ °¡º¿ì¸é¼µµ DataTable¸¸ÅÀ̳ª Æí¸®ÇÑ °´Ã¼´Â ¾øÀ»±î?¡¯¶ó´Â °í¹Î ÇØº» µ¶ÀÚµéÀÌ ÀÖ´Ù¸é ±× ÇØ´äÀ¸·ÎDataTableReader¸¦ ÃßõÇÑ´Ù. ADO.NET 2.0ºÎÅÍ´Â DataTableReader °´Ã¼°¡ Ãß°¡µÇ¾î °¡º¿î µ¥ÀÌÅÍ °´Ã¼·Î Ȱ¿ëÇÒ ¼öÀÖ´Â ¹æ¹ýÀ» Á¦°øÇØ ÁÖ°í ÀÖ´Ù.
DataTableReader´Â DataTableReader dtr = DataTable.CreateDataReader();¿Í °°ÀÌ »ý¼ºÇؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. DataTableReader´Â DataReader¿Í ´Þ¸® Connection °´Ã¼¸¦ µ¶Á¡ÇÏÁö ¾Ê´Â ´ö¿¡ »ç¿ëÀÌ Æí¸®ÇÏ°í ¶Ç DataBindingÀÌ °¡´ÉÇÏ´Ù.
DataTableReader´Â Á¶È¸¼º µ¥ÀÌÅ͸¦ ÀúÀåÇØ µÎ°Å³ª À¯ÁöÇÒ Çʿ䰡 ÀÖÀ» ¶§ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
| <¸®½ºÆ® 5> DataTableReaderÀÇ »ç¿ë¿¹ | | | |
using (SqlConnection cn = new SqlConnection(cnStr))
{
SqlCommand cmd = new SqlCommand(sqlAllCustomers, cn);
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
DataTable dtCustomers = new DataTable("Customers");
adpt.Fill(dtCustomers); DataTableReader dtRdr =
ds.CreateDataReader();
dgvCustomers.DataSource = dtRdr;
}
| |
 |
 | SqlBulkCopyÀÇ È°¿ë |  |
¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ÇѲ¨¹ø¿¡ INSERT³ª UPDATE¸¦ ÇØ¾ß ÇÒ °æ¿ì µ¥ÀÌÅͺ£À̽º¿¡´Â ²Ï ±ä ½Ã°£ÀÇ Æ®·£Àè¼ÇÀÌ ¹ß»ýÇÑ´Ù.Æ®·£Àè¼ÇÀÇ Æ¯Â¡»ó ±æ¾îÁö¸é Áú¼ö·Ï ´õ ¸¹Àº ½Ã°£ÀÌ °É¸®±â ¶§¹®¿¡ Æ®·£Àè¼ÇÀÌ »ç¿ëµÇ´Â ÀÛ¾÷Àº ÃÖ¼ÒÇÑÀ¸·Î À¯ÁöÇØ¾ß¸¸ ÇÑ´Ù.
Æ®·£Àè¼ÇÀ» ÃÖ¼ÒÇÑÀ¸·Î À¯ÁöÇÏ´Â ¹æ¹ýÀº ù °, DELETE Äõ¸®¸¦ ¸ÕÀú »ç¿ëÇØ¼ ¸ÕÀú »èÁ¦¸¦ Çϰí ÀϰýÀûÀ¸·Î INSERT ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº UPDATE ÀÛ¾÷À» ÇÒ¶§ UPDATE ÇÒ ´ë»óÀÌ ¸¹À» °æ¿ì UPDATE Äõ¸®¸¦ ÀÏÀÏÀÌ »ç¿ëÇÏ´Â °Í º¸´Ù È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
µÑ°, UPDATE ±¸¹®¿¡¼ JOIN¹®À» Àß È°¿ëÇÏ¸é °ü·Ã ÀÖ´Â µ¥ÀÌÅ͸¦ ÇÑ ¹ø¿¡ Àϰý ¾÷µ¥ÀÌÆ® ÇÒ ¼ö ÀÖ´Ù.
| <¸®½ºÆ® 6> JOIN¹®À» Ȱ¿ëÇÑ Àϰý UPDATE | | | |
UPDATE Table1
SET Column1 = Table2.Column1
FROM Table1 JOIN Table2 ON Table1.code = Table2.code
WHERE Á¶°Ç
| |
 |
<¸®½ºÆ® 6>Àº Table1ÀÇ Column1À» Table2ÀÇ Column1ÀÇ °ªÀ¸·Î ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â ±¸¹®ÀÌ´Ù. Table1°ú Table2¸¦ code¶ó´Â À̸§ÀÇ Ä÷³ °ªÀ¸·Î joinÇØ¼ Àϰý ¾÷µ¥ÀÌÆ® ÇÑ´Ù. ÀÌ¿Í °°ÀÌ ÇÏ°Ô µÇ¸é ·çÇÁ¸¦ µ¹¸é¼ ÇÑ ·¹Äڵ徿 ¾÷µ¥ÀÌÆ®¸¦ ÇÏ´Â °æ¿ìº¸´Ù ºñ¾àÀûÀÎ ¼º´É Çâ»óÀ» º¼ ¼ö Àִµ¥ ÇÊÀÚÀÇ °æ¿ìµµ 9ºÐÀÌ ³Ñ°Ô °É¸®´ø ¾÷µ¥ÀÌÆ® ÀÛ¾÷ÀÌ 4ÃÊ·Î ÁÙ¾îµç °æ¿ì¸¦ °Þ¾ú´Ù.
¾Æ¹«Æ° À§¿¡¼ ¼³¸íÇÑ µÎ °¡Áö ¹æ¹ýÀº Äõ¸®¿¡¼ ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ°í ¿©·¯ºÐµéÀÌ ÀÛ¾÷Çϰí Àִ ȯ°æÀÌ ADO.NET 2.0À» »ç¿ëÇϰí SQL Server 2005¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é ¶Ç ´Ù¸¥ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¼Â°, SqlBulkCopyÀÇ ÀÌ¿ë
ÈçÈ÷ ¿ë»ê¿¡¼ °ø½Ãµð¸¦ »ì ¶§ º¸¸é ¹úÅ©½Ãµð¶ó°í °ÅÀÇ Çæ°ª¿¡ ³ª¿À´Â ÀçǰµéÀÌ ÀÖ´Ù. ¹úÅ©¶õ ´ë·®À¸·Î »ý»êÇØ¼ ´Ü°¡¸¦ ³·Ãá Á¦Ç°µéÀÌ´Ù.
SqlBulkCopyµµ ´ë·®À¸·Î µ¥ÀÌÅ͸¦ ó¸®Çؼ ó¸® ½Ã°£À» ȹ±âÀûÀ¸·Î ³·Ãâ ¼ö Àִµ¥ ¼¼ °³ÀÇ Ä÷³ÀÌ ÀÖ´Â °£´ÜÇÑ Å×À̺íÀ» »ùÇ÷Π100¸¸°ÇÀ» ÀÔ·ÂÇÏ´Â Å×½ºÆ®¸¦ Çß¾ú´Âµ¥ ÇÊÀÚÀÇ ³ëÆ®ºÏ(CPU: 1.3G ¸Þ¸ð¸®:1G)¿¡¼ µü 5ÃÊ °É¸®´Â ±â¿°À» ÅäÇØ³Â´Ù. ¾öû³ ¼º´É¿¡ ºñÇØ¼ »ç¿ëÇÏ´Â ¹æ¹ýµµ ³Ê¹« °£´ÜÇÏ´Ù.
| <¸®½ºÆ® 7> SqlBulkCopyÀÇ È°¿ë | | | |
SqlBulkCopy bcp = new SqlBulkCopy(ConnectionString);
bcp.DestinationTableName = "DumpTable"
bcp.WriteToServer(ds);
| |
 |
SqlBulkCopy¸¦ »ç¿ëÇÏ·Á¸é SqlBulkCopyÀÇ »ý¼ºÀÚ¿¡ µ¥ÀÌÅͺ£À̽º ¿¬°á¹®ÀÚ¿À» ³Ñ°ÜÁÖ°í DestinationTableName¿¡ ´ë»ó Å×À̺íÀÇ À̸§À» ¼³Á¤ÇØÁØ´Ù. ±× µÚ¿¡ µ¥ÀÌÅͰ¡ µé¾î ÀÖ´Â DataSetÀ» WriteToServer¿¡ ³Ñ°ÜÁÖ¸é ¹Ù·Î ÀÛ¾÷Àº ³¡³´Ù. À̶§ DataSet¿¡ ÀÖ´Â DataTableÀÇ Ä÷³¸í°ú ½ÇÁ¦ ¹°¸®ÀûÀÎ TableÀÇ Ä÷³¸íÀÌ ÀÏÄ¡ÇØ¾ß ÇÑ´Ù.
DataTable binary serialization option
DataTableÀÌ ´å³Ý ÇÁ·¹ÀÓ¿öÅ© 1.1±îÁö´Â À¥ ¼ºñ½º·Î Àü´ÞµÇÁö ¸øÇß´ø °ÍÀÌ ´å³Ý ÇÁ·¹ÀÓ¿öÅ©°¡ 2.0À¸·Î ¹öÀü¾÷µÇ¸é¼ À¥ ¼ºñ½º·Î Àü´Þ µÉ ¼ö ÀÖµµ·Ï ¹Ù²î¾ú´Ù. ¶Ç ´Ù¸¥ º¯È°¡ À¥ ¼ºñ½º·Î Àü´ÞµÉ ¶§ Á÷·ÄÈ(Serialize) °úÁ¤À» °ÅÄ¡°Ô µÇ´Â °ÍÀε¥ ±âº» °ªÀ¸·Î Á÷·Äȸ¦ °ÅÄ¡¸é¼ XML·Î º¯È¯µÇ¾î Àü´ÞµÈ´Ù.
À¥ ¼ºñ½ºÀÇ ¹®Á¦Á¡ Áß¿¡ Çϳª°¡ Á÷·ÄÈ °úÁ¤¿¡¼ µ¥ÀÌÅÍ Å©±â°¡ »ó´ç ºÎºÐ Áõ°¡µÇ¾î¼ Àü´Þ¿¡ ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ´Ù´Â °ÍÀÌ´Ù.
µû¶ó¼ XML´ë½Å °´Ã¼¸¦ ¹Ù·Î binaryÇüÅ¿¡ Á¦ÀÏ °¡±õ°Ô ³Ñ±æ ¼ö ÀÖÀ¸¸é Á÷·ÄÈ °úÁ¤¿¡¼ ¹ß»ýÇÏ´Â ¿À¹öÇìµå¿Í µ¥ÀÌÅÍ Å©±â¸¦ ÁÙÀÏ ¼ö ÀÖ´Ù. ¶Ç, ADO.NET 2.0ºÎÅÍ´Â DataSet°´Ã¼¿¡ RemotingFormatÀ̶ó´Â ¼Ó¼ºÀÌ »õ·Î Ãß°¡µÇ¾ú´Ù.
DataSet.RemortingFormatÀº ¿°ÅÇüÀ¸·Î Á¦°øµÇ´Â Serialization Format.XML³ª SerializationFormat.Binary Áß Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌÁß¿¡¼ ±âº» °ªÀº SerialzationFormat.XMLÀÌ´Ù.
 |
| <ȸé 1> XML ŸÀÔÀ¸·Î Á÷·ÄÈµÈ °á°ú |
<ȸé 1>¿¡¼ ±âº» °ªÀÎ XML ŸÀÔÀ¸·Î Á÷·ÄÈ µÇ¾úÀ» °æ¿ì ¸ðµç µ¥ÀÌÅͰ¡ ÅØ½ºÆ® ¹æ½ÄÀ¸·Î º¯È¯µÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù. À̰ÉBinary ŸÀÔÀ¸·Î Á÷·ÄÈ ÇÏ°Ô µÇ¸é <ȸé 2>¿Í °°Àº °á°ú¸¦ º¼ ¼ö ÀÖ´Ù.
 |
| <ȸé 2> Binary ŸÀÔÀ¸·Î Á÷·ÄÈµÈ °á°ú |
Binary ŸÀÔÀ¸·Î Á÷·ÄÈ µÇ¾úÀ» °æ¿ì¿¡ µ¥ÀÌÅ͸¦ ´«À¸·Î È®ÀÎÇϱâ´Â ¾î·ÆÁö¸¸ ¼º´É Çâ»ó¿¡´Â µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ ¹æ½ÄÀÇ °æ¿ì ´å³Ý ±â¹Ý³¢¸®ÀÇ Åë½Å¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â ÇѰ谡 ÀÖ´Ù.
ÀÌ ¿Ü¿¡µµ ADO.NETÀÌ 2.0À¸·Î ¹öÀü¾÷µÇ¸é¼ ¸¹Àº ±â´ÉµéÀÌ Ãß°¡ µÇ¾ú´Âµ¥ ºñµ¿±â Äõ¸® ÀÛ¾÷À̳ª SqlNotification°ú °°Àº ±â´ÉµéÀ» ÀûÀýÈ÷ Àß È°¿ëÇÑ´Ù¸é ÀÀ´ä½Ã°£ÀÇ °³¼±¿¡ »ó´çÇÑ µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
 | À¥ ¼ºñ½ºÀÇ µ¥ÀÌÅÍ ¾ÐÃà |  |
Binary ŸÀÔÀ¸·Î Á÷·ÄÈ ½ÃÄѼ ¼º´ÉÀ» °³¼±ÇÒ ¼ö ÀÖ´Ù°í ÇßÁö¸¸ Á¤¸» Å« µ¥ÀÌÅÍÀÇ °æ¿ì´Â ÀÌ ¿ª½Ã ¾î·Æ´Ù. ¼¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¼º´ÉÀº ºñ¾àÀûÀ¸·Î Çâ»óµÈ °Í¿¡ ºñÇØ¼ ³×Æ®¿öÅ© ¼Óµµ´Â ¾ÆÁ÷ Å« Çâ»óÀÌ ¾ø´Â Å¿¿¡ °ÅÀÇ ´ëºÎºÐÀÇ ³×Æ®¿öÅ©¿¡¼ º´¸ñÇö»óÀÌ ¹ß»ýµÈ´Ù.
ÀÌ º´¸ñÇö»óÀ» Á¦°ÅÇϱâ À§Çؼ´Â À¥ ¼ºñ½º¿¡¼ µ¥ÀÌÅ͸¦ ¾ÐÃàÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. Áï µ¥ÀÌÅ͸¦ º¸³»´Â Ãø¿¡¼ ¾ÐÃàÇØ¼ º¸³»°í ¹Þ´Â Ãø¿¡¼ ÀÌ µ¥ÀÌÅ͸¦ Ç®¾î¼ ÇØ¼®ÇÏ¸é µÇ´Â °ÍÀÌ´Ù.
µ¥ÀÌÅ͸¦ ¾ÐÃàÇÏÁö¸¸ ±âº»ÀûÀÎ À¥ ¼ºñ½ºÀÇ Æ÷¸ËÀº ÅØ½ºÆ® ¹æ½ÄÀÇ XML·Î µ¥ÀÌÅ͸¦ ³Ñ°Ü¾ß ÇÑ´Ù. ¶§¹®¿¡ µ¥ÀÌÅÍ´Â ¾ÐÃàÇØ¼ base64 ¹æ½ÄÀÇ ¹®ÀÚ¿·Î ¸®ÅÏ Çϵµ·Ï µÇ¾îÀÖ´Ù.
µ¥ÀÌÅ͸¦ ¾ÐÃàÇϱâ À§Çؼ ÈçÈ÷ »ç¿ëµÇ´Â ¹æ½ÄÀº System.IO.MemoryStream°ú System.IO.Compression.DeflateStreamÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ¸ÕÀú µ¥ÀÌÅͰ¡ µé¾î ÀÖ´Â DataSetÀÌ ds À̸§À¸·Î ³Ñ¾î ¿Ô´Ù°í °¡Á¤ÇÒ °æ¿ì ¸ÕÀú ³Ñ¾î ¿Â DataSetÀ» ¹ÙÀ̳ʸ® Æ÷¸ËÀ¸·Î º¯È¯Çؼ ¸Þ¸ð¸® ½ºÆ®¸²À¸·Î Àüȯ ¾ÐÃà ÇÒ ¼ö ÀÖ´Â Áغñ¸¦ ÇØ¾ß ÇÑ´Ù.
| <¸®½ºÆ® 8> DataSetÀ» ¹ÙÀ̳ʸ® Æ÷¸äÀ¸·Î ÀüȯÇÑ µÚ ¹è¿·Î Àüȯ | | | |
ds.RemotingFormat = SerializationFormat.Binary;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, ds)
byte[] data1 = ms.ToArray();
| |
 |
ÀÏ´Ü ¿©±â ±îÁö Áغñ µÇ¾ú´Ù¸é ½ÇÁ¦·Î ±× µÚÀÇ ³»¿ëÀº ¾ÆÁÖ °£´ÜÇÏ´Ù.
| <¸®½ºÆ® 9> ¸Þ¸ð¸® ½ºÆ®¸²À» ¾ÐÃàÇÏ°í ¹è¿·Î ¸®ÅÏ | | | |
//µ¥ÀÌÅÍ ¾ÐÃà
System.IO.MemoryStream objStream = new MemoryStream();
System.IO.Compression.DeflateStream objZip =
new System.IO.Compression.DeflateStream(objStream,
System.IO.Compression.CompressionMode.Compress)
objZip.Write(data1,0,data1.Length);
objZip.Flush();
objZip.Close()
return objStream.ToArray();
| |
 |
System.IO.Compression.DefateStreamÀÇ °æ¿ì µ¥ÀÌÅ͸¦ ¾ÐÃàÇϰųª ȤÀº ±× ¹Ý´ë·Î ¾ÐÃàÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ Àִµ¥ ±âº»ÀûÀ¸·Î CompressionMode¿¡ ÀÇÇØ¼ ±â´ÉÀÌ °áÁ¤µÈ´Ù.
- CompressionMode.Compress µ¥ÀÌÅ͸¦ ¾ÐÃàÇϴµ¥ »ç¿ëµÇ´Â ¸ðµåÀÌ´Ù.
- CompressionMode.Decompress µ¥ÀÌÅÍ ¾ÐÃàÀ» ÇØÁ¦Çϴµ¥ »ç¿ëµÇ´Â ¸ðµåÀÌ´Ù.
| <¸®½ºÆ® 10> À¥ ¼ºñ½º¿¡¼ µ¥ÀÌÅÍ ¾ÐÃàÀÇ È°¿ë ¿¹ | | | |
[WebMethod]
public string GetService()
{
//µ¥ÀÌÅÍ ¾ÐÃà
byte[] data = CompressDataSet(ds);
//Base64·Î Çüº¯È¯
return Convert.ToBase64String(data, 0, data.Length);
}
public byte[] CompressDataSet(DataSet ds)
{
//1. µ¥ÀÌÅͼ Serialize
ds.RemotingFormat = SerializationFormat.Binary;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, ds);
byte[] inbyt = ms.ToArray();
//2. µ¥ÀÌÅÍ ¾ÐÃà
System.IO.MemoryStream objStream = new MemoryStream();
System.IO.Compression.DeflateStream objZS =
new
System.IO.Compression.DeflateStream(objStream,
ystem.IO.Compression.CompressionMode.Compress);
objZS.Write(inbyt, 0, inbyt.Length);
objZS.Flush();
objZS.Close();
//3. µ¥ÀÌÅÍ ¸®ÅÏ
return objStream.ToArray();
}
| |
 |
ÀÌ·¸°Ô µ¥ÀÌÅ͸¦ ¾ÐÃàÇÏ°í ³ª¸é ±× °á°ú´Â base64·Î ¾ÐÃàµÇ¾î¼ Àü¼ÛµÇ´Âµ¥ ÀÌ·² °æ¿ì ¾ÐÃà·üÀº »ý°¢ ÀÌ»óÀ¸·Î ³ô´Ù. °ÅÀÇ ´ëºÎºÐÀÇ °æ¿ì 90% ÀÌ»óÀÇ ¾ÐÃà·üÀ» º¸¿©ÁÖ°í ÀÖÀ¸¸ç º¸Åë 97%±îÁöµµ ¾ÐÃàµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. 100MBÀÇ µ¥ÀÌÅ͸¦ ³×Æ®¿öÅ©·Î ³Ñ°Ü¾ß ÇÒ °ÍÀ» 3MB·Î ÁÙÀÏ ¼ö ÀÖ´Â ¾öû³ ¼º´É Çâ»óÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù.
 |
| <ȸé 3> ¾ÐÃàµÈ °á°ú |
 | ASP.NETÀÇ ¼º´É °³¼± |  |
À¥ °³¹ß¿¡ ÀÖ¾î¼ °¡Àå ¸ÕÀú °í·ÁÇØ¾ß ÇÒ ºÎºÐÀÌ ¹Ù·Î °´Ã¼ÀÇ ¶óÀÌÇÁ »çÀÌŬÀÌ´Ù. À¥À̶õ ȯ°æ ÀÚü°¡ ¸ðµç »óŸ¦ À¯ÁöÇÏ±â ¾î·Æ±â ¶§¹®¿¡ »óÅÂ¿Í °´Ã¼¸¦ À¯ÁöÇÏ´Â ÀÏÀÌ´Ù. ASP.NET¿¡¼ ij½Ã¸¦ Àß È°¿ëÇÑ´Ù¸é ÀÌ·± ¹®Á¦¸¦ »ó´çºÎºÐ ÇØ°áÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ µÈ´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ ij½Ã
ASP.NETÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ ij½Ã´Â Ű¿Í °ªÀ» ÀÌ¿ëÇØ¼ ¿øÇÏ´Â µ¥ÀÌÅ͸¦ ¸ÞÀÎ ¸Þ¸ð¸®¿¡ ij½Ã ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇØ ÁØ´Ù. ASP.NETÀÇ Ä³½Ì ¾Ë°í¸®ÁòÀº »ó´çÈ÷ °·ÂÇѵ¥ ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ ºÎÁ·ÇØÁö¸é ASP.NET¿¡¼ ¾Ë¾Æ¼ °ÅÀÇ »ç¿ëµÇÁö ¾Ê°Å³ª ºÒÇÊ¿äÇÑ Ç׸ñÀ» Á¦°ÅÇÑ´Ù.
ÀÌ·± ±â¼úÀ» MS¿¡¼´Â ¡®Ã»¼Ò¡¯±â¹ýÀ̶ó°í Çϴµ¥ Çʿ信 µû¶ó¼ û¼ÒÀÇ ¿ì¼±¼øÀ§¸¦ °³¹ßÀÚ°¡ Á÷Á¢ ÁöÁ¤ÇÒ ¼ö ÀÖ°Ô ÇØ¼ Áß¿äÇÑ Ç׸ñÀÇ °æ¿ì ¿ì¼±ÀûÀ¸·Î º¸È£ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇØ ÁØ´Ù.
Cache[¡°CacheItem1¡±] = ¡°Cached Item 1¡±; ȤÀº Cache.Insert (¡°¡°CacheItem2¡±,¡° Cached Item 2¡±);
ij½Ã´Â ¸Þ¸ð¸® »ó¿¡ ±× °ªÀÌ À¯ÁöµÇ±â ¶§¹®¿¡ ¸¸·á ½Ã°£À» ÁöÁ¤Çؼ ÀÏÁ¤ ½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î Á¦°ÅÇÒ ¼ö ÀÖ´Â ¹æ¹ýµµ °æ¿ì¿¡ µû¶ó¼ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. Cache.Insert()¿¡¼ TimeSpanÀ» ÀÌ¿ëÇØ¼ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù.
Cache.Insert¡°( CacheItem7¡±,¡° Cached Item 7¡±, null, System.Web. Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));
ij½Ã´Â û¼Ò ±â¹ý¿¡ ÀÇÇØ¼¡®¾Ë¾Æ¼¡¯Á¦°Å µÉ ¼öµµ Àֱ⠶§¹®¿¡ Áß¿äÇÑ µ¥ÀÌÅÍÀÎ °æ¿ì¿¡´Â ¹Ýµå½Ã ³ôÀº ¿ì¼±¼øÀ§¸¦ ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
Cache.Insert(¡°¡°CacheItem8¡±,¡° Cached Item 8¡±,
null, System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.High, null);
¿©±â¼ ´«¿©°Ü º¼ ºÎºÐÀÌ System.Web.Caching.CacheItem Priority.HighÀÌ´Ù. ¿ì¼±¼øÀ§¸¦ °áÁ¤ÇÏ´Â ºÎºÐÀ¸·Î½á CacheItemPriority´Â ¿°ÅÇüÀ¸·Î Á¦°øµÈ´Ù. CacheItemPriority´Â <Ç¥2>¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.
ij½Ã ´ë½Å Application, Session, State¸¦ ÀÌ¿ëÇØµµ µÈ´Ù°í ¸»ÇÏ´Â µ¶ÀÚ°¡ ÀÖÀ»Áöµµ ¸ð¸£Áö¸¸ ¿ª½Ã °¡Àå °¡º±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ij½Ã´Ù. ÀüüÀûÀ¸·Î °É¸®´Â ºÎÇϸ¦ º¸¸é Application >Session > Cache ¼ø¼·Î ºÎÇϸ¦ ÀÏÀ¸Å²´Ù.
State´Â À¥ Æ®·¡ÇÈÀ» Áõ°¡½Ã۱⠶§¹®¿¡ ¸Þ¸ð¸®¿¡ ºÎÇϸ¦ ÀÏÀ¸Å°Áö´Â ¾ÊÁö¸¸ ¼º´ÉÀ̶ó´Â °üÁ¡¿¡¼ º¸¸é ¶È°°ÀÌ ÀÚÁ¦ÇØ¾ß ÇÒ ´ë»óÀÌ´Ù.
ÆäÀÌÁö Ãâ·Â ij½Ã
ASP ½ÃÀý¿¡´Â ¸ðµç ÆäÀÌÁö°¡ ÀÎÅÍÇÁ¸®ÅÍ ¹æ½ÄÀ¸·Î ¸Å¹ø ¶óÀÎ ´ÜÀ§·Î ºÐ¼®µÇ°í ÇØ¼®µÇ¾î¼ ½ÇÇàµÇ¾ú´Ù. ÀÌ ¹æ½ÄÀº Áö±Ýµµ ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Â PHP¿¡¼ »ç¿ëµÇ´Â ¹æ½ÄÀÌ´Ù. ASP.NETÀº ASP¿Í´Â ´Þ¸® óÀ½ºÎÅÍ ÄÄÆÄÀÏ µÇ¾î ÀÖ´Â ´ö¿¡ »ó´çÈ÷ ºü¸¥ ÀÀ´ä¼Óµµ¸¦ º¸¿©ÁØ´Ù.
´Ü ù ¹øÂ° È£Ãâ¿¡ ´ëÇØ¼´Â ÀνºÅϽº¸¦ ¹ß»ý½Ã۱â À§Çؼ ¾î¿ ¼ö ¾ø´Â Áö¿¬½Ã°£ÀÌ ¹ß»ýµÇ±ä ÇÏÁö¸¸ ±×·¡µµ ÀüüÀûÀÎ ¼º´É Çâ»ó¿¡ ºñÇØ¼´Â ¾ÆÁÖ ¹Ì¹ÌÇÑ ¼öÁØÀÌ´Ù.
ÀνºÅϽº°¡ ¹ß»ýµÇ¾î ÀÖ´Â »óÅ¿¡¼ ASP.NET ÆäÀÌÁö ¿äûÀÌ µé¾î¿À¸é ÆäÀÌÁö¸¦ Ãâ·ÂÇϱâ À§Çؼ ÇØ´ç ÆäÀÌÁö¸¦ HTML·Î º¯È¯ÇÏ´Â ÀÛ¾÷À» ÇÏ°Ô µÇ´Âµ¥ ÀÌ·± ÀÛ¾÷À» ·»´õ¸µÀ̶ó°í ÇÑ´Ù.
ÆäÀÌÁö Ãâ·Â°Ô½Ã´Â ó¸®µÈ ASP.NET ÆäÀÌÁöÀÇ ÄÜÅÙÃ÷¸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇØ¼ ÀÚÁÖ È£ÃâµÇ´Â ÆäÀÌÁöÀÇ ·»´õ¸µ ÀÛ¾÷À» ÃÖ¼ÒÈ ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. ÀÌ·¸°Ô ÇÏ¸é ÆäÀÌÁö ó¸® Áֱ⸦ ´Ù½Ã ½ÇÇàÇÏÁö ¾Ê°íµµ ASP.NET¿¡¼ ÆäÀÌÁö ÀÀ´äÀ» Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³¾ ¼ö ÀÖ°Ô ÇÑ´Ù.
ÆäÀÌÁö Ãâ·Â ij½Ã´Â ÀÚÁÖ º¯°æµÇÁö ¾ÊÁö¸¸ ¸¸µå´Â µ¥ ó¸® ½Ã°£ÀÌ ¸¹ÀÌ ¼Ò¿äµÇ´Â ÆäÀÌÁö¿¡ ¾ÆÁÖ È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ƯÈ÷ ½ÇÀûÀ̳ª ÀÚÁ¦ ¸ñ·Ï°ú °°ÀÌ ÀÚÁÖ º¯°æµÇÁö ¾ÊÀ¸¸é¼ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â ÆäÀÌÁöÀÎ °æ¿ì¿¡´Â ±× È¿°ú¸¦ È®¿¬È÷ ´À³¥¼ö ÀÖ´Ù.
ÆäÀÌÁö Ãâ·Â ij½Ã¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀº °¢ ÆäÀÌÁö¿¡ ´ëÇØ ÆäÀÌÁö ij½ÌÀ» °³º°ÀûÀ¸·Î ±¸¼ºÇÏ´Â °ÍÀÌ´Ù. ¶Ç, ij½Ì ¼³Á¤À» ÇÑ ¹ø Á¤ÀÇÇÑ ´ÙÀ½ ¿©·¯ ÆäÀÌÁö¿¡¼ ÀÌ·¯ÇÑ ¼³Á¤À» »ç¿ëÇÒ ¼ö Àִ ij½Ã ÇÁ·ÎÇÊÀ» Web.config ÆÄÀÏ¿¡ ¸¸µé ¼ö ÀÖ´Ù. ÆäÀÌÁö Ãâ·Â ij½Ã´Â µÎ°¡Áö ¹æ½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¡Ü Àüü ÆäÀÌÁö ij½Ã: ÆäÀÌÁö Àüü¸¦ ¸Þ¸ð¸®¿¡ ÀúÀåÇØ¼ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ »ç¿ëÇÑ´Ù.
¡Ü ºÎºÐ ÆäÀÌÁö ij½Ã: ÆäÀÌÁö¿¡¼ ÁöÁ¤µÈ ÀϺθ¦ ij½ÃÇϰí ÀÚÁÖ º¯°æµÇ´Â ºÎºÐÀº µ¿ÀûÀÎ »óÅ·ΠÀ¯ÁöÇÑ´Ù.
ÆäÀÌÁöÀÇ Ãâ·Â ij½Ã¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀº µÎ ÆäÀÌÁö Áö½ÃÀÚ¿¡¼ ¼³Á¤ÇÏ´Â ¹æ½Ä°ú Äڵ忡¼ Á÷Á¢ ¼³Á¤ÇÏ´Â ¹æ¹ý µÎ °¡Áö´Ù. ÀÌ·¸°Ô ÆäÀÌÁö Ãâ·Â ij½Ã¸¦ ÁöÁ¤ÇÒ ¶§ È¿°úÀûÀ¸·Î ij½Ã¸¦ À¯ÁöÇϱâ À§Çؼ »ç¿ëµÇ´Â ºÎºÐÀÌ ¹Ù·Î Duration ¼Ó¼ºÀÌ´Ù. DurationÀº ij½ÃÀÇ À¯Áö½Ã°£À» ÁöÁ¤ÇØ ÁØ´Ù.
¡Ü ÆäÀÌÁö Áö½ÃÀÚ¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý:
<%@ OutputCache Duration=¡±60¡±VaryByParam=¡±None¡±%>
¡Ü Äڵ忡¼ Á÷Á¢ ÁöÁ¤ÇÏ´Â ¹æ¹ý: Response.Cache.SetExpires (DateTime.Now.AddSeconds(60));
ºÎºÐ ÆäÀÌÁö ij½Ãµµ ¿ª½Ã ÆäÀÌÁö Áö½ÃÀÚ¿Í Äڵ忡¼ Á÷Á¢ ÁöÁ¤ÇÏ´Â ¹æ¹ý Áß ¼±ÅÃÇØ¼ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¡Ü ÆäÀÌÁö Áö½ÃÀÚ¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý:
<%@ OutputCache Duration=¡±120¡±VaryByParam=¡±None¡±%>
¡Ü Äڵ忡¼ Á÷Á¢ ÁöÁ¤ÇÏ´Â ¹æ¹ý: ij½ÃÇÏ·Á°í Çϴ Ŭ·¡½ºÀÇ ¸ÞŸµ¥ÀÌÅÍ¿¡ <PartialCaching(120)>¸¦ ÁöÁ¤ÇÑ´Ù.
ij½Ã ±â¹ýÀ» ÀûÀýÈ÷ Àß È°¿ëÇϸé ÀûÀº ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇØ¼ »ó´çÇÑ È¿°ú¸¦ º¼ ¼ö Àֱ⠶§¹®¿¡ ÀûÀýÈ÷ Àß ÀÌ¿ëÇØÁÖ´Â °¡À̵å¶óÀÎÀ» ÇÁ·ÎÁ§Æ® ±âȹ´Ü°è¿¡¼ ºÎÅÍ Àß Á¦¾ÈÇØ¾ß ÇÑ´Ù.
¼¼¼ÇÀÇ È¿À²ÀûÀÎ »ç¿ë
¼¼¼ÇÀº »ý°¢ º¸´Ù ¹«Ã´ ½ÅÁßÇÏ°Ô »ç¿ëµÇ¾î¾ß ÇÏ´Â ¸Þ¸ð¸® ÀÚ¿øÀÌ´Ù. ¼¼¼ÇÀº °³º°ÀûÀÎ À¯Àúµé¿¡°Ô ¸ðµÎ ÇÒ´çµÇ¾î¾ß ÇÑ´Ù. ¶§¹®¿¡ À¯ÁöµÇ¾î¾ß ÇÒ Á¤º¸´Â ÃÖ¼ÒÇÑÀ¸·Î À¯ÁöµÇ¾î¾ß ÇÏ¸ç °´Ã¼³ª ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ ¿Ã¸®´Â °ÍÀº ¹Ýµå½Ã ÇÇÇØ¾ß ÇÒ ±Ý±â »çÇ× Áß¿¡ ÇϳªÀÌ´Ù.
ƯÈ÷ ÁÁÁö ¾ÊÀº ¹æ¹ý Áß¿¡ ADO.NETÀÇ Connection°´Ã¼¸¦ ¼¼¼Ç¿¡ ³Ö¾îµÎ°í ÇÊ¿äÇÒ ¶§ ¸¶´Ù È£ÃâÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.
¾îÂ÷ÇÇ µ¥ÀÌÅͺ£À̽º ¿¬°áÀº ADO.NET¿¡¼ Ç®¸µ(Pooling)µÇ°í Àֱ⠶§¹®¿¡ º°µµ·Î À¯ÁöÇÒ Çʿ䰡 ¾ø´Ù. ±¦È÷ ¼¼¼ÇÀÇ »çÀÌÁ Ű¿ì´Â °á°ú¸¸ °¡Á®¿Â´Ù.
ASP.NETÀ¸·Î ÀÛ¾÷ÇÏ´Ù º¸¸é ¸ðµç ÆäÀÌÁö¿¡¼ ¼¼¼Ç¿¡ Á¢±ÙÇÒ Çʿ䰡 ¾ø´Ù´Â »ç½ÇÀ» ¾Ë ¼ö ÀÖ´Ù. À¥ »çÀÌÆ®¿¡¼ °£´ÜÇÑ ¾à°üÀ» º¸¿©Áشٰųª ȸ»ç¼Ò°³ ȤÀº ¾àµµ °°Àº °ÍÀ» º¸¿©ÁÖ´Â ÆäÀÌÁö´Â ¼¼¼Ç°ú´Â ÀüÇô ¹«°üÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Â ÆäÀÌÁö ÀÌ´Ù. ÀÌ·± °æ¿ì ÇØ´ç ÆäÀÌÁö¿¡¼´Â ¼¼¼ÇÀ» ºñȰ¼ºÈ ÇØµÎ¸é ¼º´É¿¡ µµ¿òÀÌ µÈ´Ù.
ÀÌ·± °æ¿ì ÆäÀÌÁö Áö½ÃÀÚ¿¡¼ <%@ Page EnableSession State=¡±false¡±%>¿Í °°ÀÌ ¼¼¼ÇÀ» ºñȰ¼ºÈ ½ÃŰ¸é µÈ´Ù. ¼¼¼Ç¿¡¼ ¶Ç ´Ù¸¥ À̽´°¡ µÉ ¼ö ÀÖ´Â ºÎºÐÀº ¼¼¼ÇÀ» inprocess·Î »ç¿ëÇÒ °ÍÀΰ¡ ȤÀº out-of-process·Î »ç¿ëÇÒ °ÍÀΰ¡ÇÏ´Â ¹®Á¦ÀÌ´Ù. out-of-process´Â SQL Server¸¦ ÅëÇØ¼ ¿©·¯ ´ëÀÇ À¥¼¹öÀÇ ¼¼¼ÇÀ» °øÀ¯ÇÏ°Ô ÇØÁÖ´Â ¹æ¹ýÀÌ´Ù.
¾Æ¹«·¡µµ inprocess¹æ½Ä¿¡ ºñÇØ¼´Â ¼º´ÉÀÌ ¶³¾îÁö´Â Å¿¿¡ ´Ù¼öÀÇ À¥¼¹ö¸¦ ÀÌ¿ëÇÒ °æ¿ì¿¡¸¸ ÇÑÁ¤ÀûÀ¸·Î »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÚ¼¼ÇÑ ¼³Á¤¹æ¹ýÀº http://msdn.microsoft.com/library/kor/default.asp?url=/lib rary/KOR/cpguide/html/cpconaspstatemanagement.asp¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù.
PostBack »ç¿ëÀÇ ÃÖ¼ÒÈ
ASP.NET¿¡¼´Â »óŸ¦ À¯ÁöÇϱâ À§Çؼ state¸¦ »ç¿ëÇÑ´Ù. state´Â hiddenµÈ µ¥ÀÌÅÍ Çʵ带 ÀÌ¿ëÇØ¼ ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°¡ Áö¼ÓÀûÀ¸·Î Åë½ÅÀ» ÇÏ¸é¼ »óŸ¦ À¯ÁöÇÑ´Ù. µû¶ó¼ PostBackÀÌ ¸¹ÀÌ ¹ß»ýµÇ¸é ±×¸¸Å ³×Æ®¿öÅ© Æ®·¡ÇÈÀÌ ¹ß»ýµÇ±â ¶§¹®¿¡ ÃÖ¼ÒÇÑÀ¸·Î »ç¿ëÇ϶ó°í ÇÑ´Ù.
±»ÀÌ ±â´ÉÀÌ ÇÊ¿ä ¾ø´Â ÆäÀÌÁö´Â aspx´ë½Å ±×³É htmlÀ» »ç¿ëÇÏ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÌ´Ù. ¶Ç ¼¹ö ÄÁÆ®·ÑÀ» »ç¿ë ÇÒ ¶§¿¡µµ ÀÏ¹Ý html ÄÁÆ®·Ñ·Î ÃæºÐÈ÷ °¡´ÉÇÏ´Ù¸é html°ú ÀÚ¹Ù ½ºÅ©¸³Æ®·Î ó¸®ÇÏ´Â ÆíÀÌ ÁÁ´Ù(¹°·Ð °³¹ßÀÚµéÀº ¼¹ö ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â ÆíÀÌ °³¹ß »ý»ó¼ºÀÌ ³ô´Ù°í ¹Ý¹®ÇÒÁöµµ ¸ð¸£Áö¸¸ ´Ü¼øÈ÷ ¼º´ÉÀ̶ó´Â ¹®Á¦¸¸ ³õ°í º»´Ù¸é ¼¹ö ÄÁÆ®·ÑÀº ºÒÇÊ¿äÇÏ°Ô PostBackÀ» ¹ß»ý½ÃŲ´Ù).
¸¸¾à ¼¹ö ÄÁÆ®·ÑÀ» »ç¿ëÇÏ°Ô µÈ´Ù¸é ºÒÇÊ¿äÇÑ °æ¿ì¿¡´Â ºä »óŸ¦ ÇÊ¿äÇÒ ¶§¸¸ Ȱ¼ºÈ ½ÃŰ°í »ç¿ëÇÑ´Ù. ºä »óŸ¦ ÁöÁ¤Çϴµ¥ ÀÖ¾î¼
¿Í °°ÀÌ Á÷Á¢ ÁöÁ¤ÇÒ ¼öµµ ÀÖ°íȤÀº <%@ Page EnableViewState=¡±false¡±%>¿Í °°ÀÌ ÁöÁ¤Çؼ ÀüüÀÇ ºä¸¦ ºñȰ¼ºÈ ½ÃŰ´Â ¹æ¹ýµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
MSÀÇ Á¤Ã¥ÀÎÁö´Â ¸ð¸£°ÚÁö¸¸ Àý´ë ±×µéÀÇ ¸»Ã³·³ MSÀÇ ±â¼úÀº °áÄÚ ½Ã´ë¸¦ ¾ÕÁú·¯ ³ª°¡Áö´Â ¾Ê´Â °Í °°´Ù. ¿ÀÈ÷·Á Çö½ÇÀÇ ¿ä±¸¿¡ ÃæºÐÈ÷ ¸¸Á·½Ã۴µ¥ ±× ¸ñÇ¥°¡ ÀÖ´Â °Íó·³ º¸ÀδÙ. Çö½ÇÀûÀÎ ¿ä±¸»çÇ×ÀÌ ÃæºÐÇÒ ¶§ Á¦Ç°À» ³»³õ´Â´Ù. ¶§¹®¿¡ ¸ÕÀú ½ÃÀÛÇÑ ¾÷üµéÀº ¿½ÉÈ÷ ½ÃÀ常 ¸¸µé¾î ³õ°í MS¿¡ ¹Ð¸®´Â °æ¿ì°¡ Á¾Á¾ ÀÖ´Â °Í °°±âµµ ÇÏ´Ù.
±× ´ö¿¡ MS¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â °³¹ßÀÚµéÀº ¾ÆÁÖ ÆíÇÏ°í ³ôÀº »ý»ê¼ºÀ» °®´Â ȯ°æÀ» Á¦°ø¹Þ°í ÀÖ´Ù. ±×·¡¼ÀÎÁö ¿ÀÈ÷·Á °³¹ßÀÚµéÀº ¼º´ÉÀ» ÀúÇϽÃŰ´Â ¸· ÄÚµù ȤÀº ³¯ ÄÚµù(?)°ú °°Àº ½ÅÁ¶¾îµéÀ» ¸¸µé¾î ³»°¡¸é¼ ºñÈ¿À²ÀûÀÎ Äڵ带 »ý»êÇϱ⵵ ÇÑ´Ù.
ÁÁÀº »ý»ê¼ºÀ» º¸Àå ¹Þ´Â Ãູ¹ÞÀº ȯ°æ¿¡¼ ÃæºÐÇÑ ÀÏÁ¤±îÁö º¸Àå ¹ÞÀ¸¸é ´õ¾øÀÌ ÇູÇÑ °³¹ßÀÚµéÀ̰ÚÁö¸¸ ²À ±×·¸Áö ¾Ê´õ¶óµµ ÀϹÝÀûÀÎ ¼º´É À̽´µéÀÌ¶óµµ Àß ¼÷ÁöÇÑ´Ù¸é ´õ ÁÁÀº °á°ú¹°À» ¾ò¾î ³¾ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÃÖ±Ù MS¿¡¼ Á÷Á¢ °³¼³ÇÑ MyMSDN(http://www.microsoft.com/korea/msdn/ mymsdn)°ú °°Àº °÷¿¡¼ Áú¹®À» ÇØº¸´Â °Íµµ ÁÁÀº ¹æ¹ýÀ» ãÀ» ¼ö ÀÖ´Â ÇÑ ¹æ¹ýÀÌ µÉ °ÍÀÌ´Ù. @
Âü°íÀÚ·á
1. http://www.gosu.net Á¦2ȸ ¼¼¹Ì³ª Power°³¹ßÀÚ¸¦ À§ÇÑ ADO.NET ÀÚ·á
2. MyMSDN
3. Inside C# 2 -Á¤º¸¹®È»ç
4. MSDN web page
5. http://msdn.microsoft.com/library/KOR/cpguide/html/cpconaspoptimization.asp
6. http://msdn2.microsoft.com/ko-kr/library/44e5wy6k(VS.80).aspx
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.