PDA

View Full Version : DataSet و XML



yasercomeng
شنبه 22 تیر 1387, 02:52 صبح
سلام خسته نباشيد.
يه سوال در مورد DataSet و XML داشتم و اونم اينه كه وقتي كه من اطلاعات يه DataSet رو تبديل به XML ميكنم فقط نام جداول و فيلدهاي اونها تويه اون فايل قرار داده شده.و من منظور از قرار دادن قابليت تبديل DataSet به XML رو براي DataSet نفهميدم .اگه ميشه اين مورد رو حتما توضيح بديد.قالبا گفته ميشه كه XML براي انتقال اطلاعات استفاده ميشه ولي ما در اينجا فقط يه سري نام فيلد و اسم جدول در دسترس داريم يعني اين اون اطلاعاتي است كه ازش صحبت ميشه؟
انتقال اين اطلاعات (مثلا اسم فيلد و اسم جدول) ميتونه چه سودي براي ما داشته باشه؟
و سوال آخر اينكه براي انتقال اطلاعات اصلي (اطلاعاتي كه در پايگاه داده ذخيره شده اند) توسط XML چه بايد كرد؟:متفکر:

علیرضا مداح
شنبه 22 تیر 1387, 06:01 صبح
سلام دوست عزیز ،
شما میتوانید با استفاده از دو متد WriteXml و ReadXml هم ساختار و هم داده جدول را در فایل XML ذخیره نمایید ، به این مثال از MSDN توجه کنید :


private static void DemonstrateReadWriteXMLDocumentWithStream()
{
DataTable table = CreateTestTable("XmlDemo");
PrintValues(table, "Original table");
// Write the schema and data to XML in a memory stream.
System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);
// Rewind the memory stream.
xmlStream.Position = 0;
DataTable newTable = new DataTable();
newTable.ReadXml(xmlStream);
// Print out values in the table.
PrintValues(newTable, "New table");
}
private static DataTable CreateTestTable(string tableName)
{
// Create a test DataTable with two columns and a few rows.
DataTable table = new DataTable(tableName);
DataColumn column = new DataColumn("id", typeof(System.Int32));
column.AutoIncrement = true;
table.Columns.Add(column);
column = new DataColumn("item", typeof(System.String));
table.Columns.Add(column);
// Add ten rows.
DataRow row;
for (int i = 0; i <= 9; i++)
{
row = table.NewRow();
row["item"] = "item " + i;
table.Rows.Add(row);
}
table.AcceptChanges();
return table;
}
private static void PrintValues(DataTable table, string label)
{
// Display the contents of the supplied DataTable:
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
foreach (DataColumn column in table.Columns)
{
Console.Write("\t{0}", row[column]);
}
Console.WriteLine();
}
}


به طور مثال هنگام کار با وب سرویس ها ، هنگامیکه شما در حال کار با پروتکل HTTP برای انتقال داده هستید ، نوع مورد نظر شما در دات نت حتما" باید اینترفیس ISerializable را Implement نماید و به عبارتی قابل تبدیل به فرمت XML باشد که DataTable این اینترفیس را Implement مینماید و هنگان انتقال ابتدا به فرمت XML درآمده و در اصطلاح Serialize میشود و در سوی دیگر جهت استفاده مجددا" به یک شیء DataTable تبدیل میگردد یا به عبارتی Deserialize میگردد ،

yasercomeng
شنبه 22 تیر 1387, 06:31 صبح
و اينكه اگه اطلاعات يه DataTable و DataSet تبديل به XML بشه واقعا چه فايده اي براي منه برنامه نويس داره؟
اصلا چه لزومي داره كه اين اطلاعات به صورت XML فرستاده بشن؟كجا ميتونيم از اين استفاده كنيم؟فرض كنيد كه من اينو از طريق وب براي يه فرد ديگه فرستادم اون فرد چه استفاده اي از اين فايل مي تونه ببره؟

علیرضا مداح
شنبه 22 تیر 1387, 07:10 صبح
و اينكه اگه اطلاعات يه DataTable و DataSet تبديل به XML بشه واقعا چه فايده اي براي منه برنامه نويس داره؟


به شما پیشنهاد میکنم مطالعه ای در زمینه مفهوم Serialization در دات نت داشته باشید ، اما به طور خللاصه :
بانک های اطلاعاتی که در بسیاری از نرم افزارهای تحت ویندوز/وب مورد استفاده قرار میگیرند ، مبتنی بر XML هستند ، یعنی با این قابلیت شما میتوانید یک نرم افزار بانک اطلاعاتی تهیه نمایید که مبتنی بر XML بوده و نیاری به بانک های اطلاعاتی دیگر منجمله SQL Server در ساختار و پیاده سازی آن نباشد ، فایده ی ذیگر آن که در ادامه توضیح میدهم ارسال اطلاعات از طریق پروتکل Http بر روی اینترنت میباشد ،



اصلا چه لزومي داره كه اين اطلاعات به صورت XML فرستاده بشن؟كجا ميتونيم از اين استفاده كنيم؟فرض كنيد كه من اينو از طريق وب براي يه فرد ديگه فرستادم اون فرد چه استفاده اي از اين فايل مي تونه ببره؟

دوست عزیز ، به شما پیشنهاد میکنم در مورد وب سرویس ها و پروتکل Http و چگونگی ارسال داده از طریق این پروتکل مطالعه ای داشته باشید تا کمی موضوع برایتان روشن تر شود ، یه طور مثال اگر با معماری برنامه نویسی چند لایه آشنایی داشته باشید میدانید که ارتباط میان Client و Server عموما" توسط یک وب سرویس صورت میپذیرد ، در وب سرویس نیز شما از پروتکل Http برای انتقال دیتا استفاده میکنید و در نتیجه فرمت XML مورد نیاز میباشد ، به عبارتی این فرمت به شما اجازه میدهد تا مستقل از نوع پلتفرم و زبان با داده ها کار کنید ، کافیست که در سمت کلاینت یک Parser برای خواندن فایل XML مورد نظر وجود داشته باشد که در دات نت اینکار از طریق اعمال Deseialization صورت میپذیرد ،
در حقیقت هنگامیکه شما داده مورد نظر خود را به فرمت غنی XML تبدیل میکنید ، هر نرم افزار/زبان/پلفتفرمی که قابلیت کار با فایل های XM و Parse کردن آنها را داشته باشد میتواند با فایل XML شما کار کند و همانطور که گفتم فایلهای XML مستقل از زبان و پلفترم هستند ، برای مطالعه بیشتر در مورد فواید XML میتوانید به لینک زیر مراجعه نمایید :
http://www.exforsys.com/tutorials/xml/xml-advantages.html

yasercomeng
چهارشنبه 26 تیر 1387, 01:59 صبح
خوب با تشكر از آقاي مداح بابت راهنمايي خيلي خوبشون من تويه چند تا منبع گشتم و يه سري مقاله رو ترجمه كردم و يه كد هم نوشتم كه چكيده اين مقالات مي باشد اميدوارم استفاده كنيد:

yasercomeng
پنج شنبه 27 تیر 1387, 01:59 صبح
سلام دوباره يه سوال درباره ي XML:
من وقتي كه يك برنامه ويندوزي نوشتم چه طور مي تونم اطلاعات رو از طريق اينترنت بفرستم.من اطلاعات رو به صورت فايل XML در آورده مثلا فرض كنيد اسم فايلم (Sample.xml) باشه.حالا مي خوام برنامه به اينترنت وصل شده و اطلاعات از طريق اينترنت به يه جاي ديگه انتقال پيدا كنه.اين كار چه طور ممكنه؟
تويه يكي از مقالات اينترنتي گفته شده كه :
SOAP اطلاعات مورد نياز خود را از طريق پروتكل HTTP مي فرستد كه آنرا نسبت به بقيه قابل استفاده تر مي سازد.
اين SOAP چه طور اين كارو انجام ميده؟
بازم فكر كنم تو مفاهيم مشكل داشته باشم اگه اين مطلب رو يه كم برام واضحتر كنيد ممنون ميشم.
من Serialization رو تقريبا فهميدم و مي دونم كه چه كاري براي ما انجام ميده اما بعدش چي؟

molana alavi
جمعه 28 تیر 1387, 00:44 صبح
اگه اون جایه دیگه که گفتین برنامه ای هستش که شما نوشتید و می خواید از طریق اینترنت برنامه کامپیوتر شما و کامپیوتر دیگه باهم ارتباط داشته باشند باید از Socket Programing استفاده کنید