PDA

View Full Version : سوال: ذخیره اطلاعات پیکربندی با xml یا ostream؟



jeson_park
دوشنبه 27 دی 1389, 08:50 صبح
با سلام
برنامه ای دارم که باید بعد از اجرا شدن یک سری تنظیمات رو از روی دیسک بخونه و درون اون ذخیره کنه
حالا برای نگه داری تنظیمات از xml استفاده کنم یا از همون کلاس ostream ????
آیا xml مزیتی داره؟؟ :متفکر:

mehdi.mousavi
دوشنبه 27 دی 1389, 10:20 صبح
سلام.
البته که XML...


فایل مزبور Human Readable خواهد بود و هر کسی قادره تا با هر TextEditor ای تغییرات مورد نیاز رو در اون ایجاد کنه
Schema ی XML میتونه همراه خود فایل XML باشه، در نتیجه دیگر App ها در صورت نیاز میتونن اونو بخونن و پردازش کنن
دسترسی به Microsoft XML Parser برای خوندن / نوشتن فایلهای XML در C/C++
Extendable بودن XML Schema و در نتیجه سادگی ارتقاء اون در نسخه های بعدی App
...

موفق باشید.

jeson_park
دوشنبه 27 دی 1389, 10:33 صبح
با سلام
ممنون اقای موسوی
من می خواستم بدونم آیا از لحاظ سرعت برنامه و صرفه جویی در حافظه(با نگه داری مقدار متغییر ها در فایل به جای نگه داری مقادیر در حافظه) هم خوبه؟؟
برنامه من بر پایه لینوکس هست
فرض هم بر اینه که برنامه از هیچ ابزار جانبی(مثل همین Microsoft XML Parser ) استفاده نمی کنه

mehdi.mousavi
دوشنبه 27 دی 1389, 11:13 صبح
با سلام ممنون اقای موسوی من می خواستم بدونم آیا از لحاظ سرعت برنامه و صرفه جویی در حافظه(با نگه داری مقدار متغییر ها در فایل به جای نگه داری مقادیر در حافظه) هم خوبه؟؟ برنامه من بر پایه لینوکس هست فرض هم بر اینه که برنامه از هیچ ابزار جانبی(مثل همین Microsoft XML Parser ) استفاده نمی کنه

سلام.
ببینید. شما نمی تونید (و نباید) همواره به دنبال سرعت در برنامه باشید. طبیعتا ایجاد یک فایل Binary و ریختن مقادیر Config در اون، سریعتر از استفاده از Format هایی مثل XML، JSON و ... هستش (چه از لحاظ میزان حافظه مصرفی، چه از لحاظ پیاده سازی و ...). اما داستان به همینجا ختم نمیشه. Solution ای که شما برای حل یک مساله ارائه میدید، باید راهکاری "قابل توسعه" باشه. اگر قراره از برنامه شما یک نفر، تو نوک قله اورست، برای یکی دو ساعت استفاده کنه، نگهداری مقادیر Config بصورت یک فایل Binary کاملا منطقی هستش. اما برنامه شما قرار نیست اونجا نصب بشه که، درسته؟

وقتی یه راه حل قابل توسعه انتخاب کنید، Developer بعدی که جایگزین شما میشه و باید پاسخگوی کارش باشه میتونه بر اساس بنیانی که شما برنامه ریزی کرده اید پیش بره. اگر مجبور باشید اطلاعات Config رو فردا توسعه بدید، مجبور نیستید کل ساختار فایل Binary رو بهم بریزید یا Utility ای برای تبدیل فایل Config قبلی به نسخه بعدی ارائه کنید. اگر به هر دلیلی برنامه بخاطر پیکربندی بد، قابل راه اندازی نباشه، میتونید پای تلفن از کاربر بخواهید که فلان فایل Text رو با Text Editor محبوبش باز کنه و فلان مقدار رو در فلان خط تغییر بده و Save کنه. اما وقتی فایل شما Binary باشه، چنین اتفاقی هرگز نمیتونه رخ بده. بنابراین، گاهی اوقات، نباید به فکر از دست رفتن میزان ناچیزی از حافظه باشیم. نگرانی شما قابل تحسینه، اما این نگرانی رو در کل App خودتون توزیع کنید.

من خودم روی Linux برنامه ای ننوشتم اما خاطرم هست که XML Parser ای به اسم Xerces وجود داره که براحتی API های مورد نیاز شما برای مدیریت فایلهای XML رو در اختیارتون قرار میده. برای اطلاعات بیشتر این آدرس (http://www.yolinux.com/TUTORIALS/XML-Xerces-C.html) رو مشاهده کنید.


آیا از لحاظ سرعت برنامه و صرفه جویی در حافظه(با نگه داری مقدار متغییر ها در فایل به جای نگه داری مقادیر در حافظه) هم خوبه؟؟
منظورتون از نگهداری مقادیر در حافظه چیه؟ بالاخره این اطلاعات رو چه در فایل Binary نگهداری کنید، چه در فایل XML، یک بار هنگام Load برنامه اونها رو باید به درون حافظه بیارید و در یک Structure یا ... نگهداری کنید تا هنگام نیاز، مجبور نباشید دوباره فایل مورد نظر رو بخونید. بنابراین نگهداری مقادیر در حافظه ارتباطی به قالب نگهداری اطلاعات پیکربندی در فایل نداره... (مگر اینکه منظورتون چیز دیگه ای باشه که باید بیشتر توضیح بدید).

موفق باشید.

jeson_park
دوشنبه 27 دی 1389, 11:31 صبح
سلام
ببنید من یه برنامه دارم
این برنامه در ابتدای شروع به کارش یه سری متغییر رو مقدار دهی میکنه
می خواستم بدونم آیا فرقی داره که این مقدار دهی از روی فایلی مثل config.conf خونده بشه یا از config.xml ؟؟(منظورم فرمت و نوع ساختار فیل هست)
لطفا پیغام خصوصی رو هم بخونید!