อะไรคือวิธีที่ดีที่สุด (และตำแหน่ง) ในการจัดเก็บการตั้งค่าที่ไม่ใช่ BLOB
บน Windows ดูเหมือนว่าจะยอมรับการใช้รีจิสทรี ในความคิดของฉันรีจิสทรีเป็นระบบที่มีการวางแผนไม่ดีและควรใช้ไฟล์ข้อความธรรมดาในUsers\Username\AppData
ไดเรกทอรีแทน ง่ายต่อการสำรองข้อมูลน้อยกว่าอันตรายสำหรับผู้ใช้ในการปรับเปลี่ยนและทำความสะอาดได้ง่ายขึ้น
บน Linux และ Unixes ส่วนใหญ่ตำแหน่งที่ต้องการ/home/user/.config/appname
ใช้สำหรับการตั้งค่าเฉพาะผู้ใช้และการตั้งค่า/etc/
ทั่วโลก (ทั้งระบบ) ตำแหน่งที่ต้องการ (แต่ยอมรับได้) น้อยกว่าสำหรับการตั้งค่าของผู้ใช้คือ~/.appname
แต่โดยทั่วไปแล้วจะไม่ได้รับความนิยม ไฟล์เหล่านี้ควรสามารถแก้ไขได้โดยผู้ใช้ดังนั้นรูปแบบที่มนุษย์สามารถอ่านได้จึงเป็นที่ต้องการเสมอ
ฉันไม่เห็นด้วยกับคนส่วนใหญ่ว่า XML เป็นรูปแบบที่ยอมรับได้สำหรับการจัดเก็บข้อมูลที่ไม่ใช่หยด ในความคิดของฉันรูปแบบ overwrought และซับซ้อนมากเกินไปสำหรับสิ่งที่มักจะกลายเป็นชิ้นส่วนเล็ก ๆ ของข้อมูลที่มีโครงสร้าง ฉันต้องการดูไฟล์ใน YAML, JSON, ASN.1, name = value pairs หรือรูปแบบที่คล้ายกัน การมีไวยากรณ์มากเกินไปทำให้ผู้ใช้สับสนและปล่อยให้ไฟล์ในรูปแบบที่ไม่ถูกต้อง
เราควรทำตามค่าเริ่มต้นของแต่ละระบบหรือมีวิธีการแก้ปัญหาแบบครบวงจร?
ทั้งหมดนี้ขึ้นอยู่กับคุณ แต่โปรดระลึกไว้เสมอว่า:
- แพลตฟอร์มเช่น * ระวังมีข้อ จำกัด ที่เข้มงวดเกี่ยวกับตำแหน่งที่สามารถเขียนได้ เข้มงวดกว่า Windows ดังนั้น:
- ที่เดียวที่คุณควรเขียนถึงอะไรอยู่ในโฮมไดเร็กตอรี่ของผู้ใช้.
- เว้นแต่ว่าแอปพลิเคชันของคุณเป็นบริการระบบ
/var/
ซึ่งในกรณีที่ไฟล์ข้อมูลที่ไม่แน่นอนทุกคนควรจะเขียนใน ไฟล์ข้อมูล Nonmutable ควรจะเก็บไว้ในไดเรกทอรีแอปของคุณ/usr/share/
หรือ/usr/local/share/
หรือ/opt/
- แอปพลิเคชันไม่
/etc/
ควรเขียนไฟล์การกำหนดค่าในขณะที่ทำงานแม้ว่าไฟล์นั้นจะมีสิทธิ์เข้าถึงเพื่อเขียนก็ตาม ควรเป็นพื้นที่เก็บข้อมูลสำหรับพฤติกรรมเริ่มต้นและไม่มีอะไรอื่น/etc/
- แผนสำหรับการประยุกต์ใช้ของคุณจะถูกติดตั้งอยู่ในหนึ่งในสามของสถานที่:
/usr/local/
, หรือ/opt/appname
/home/username/appname
- ควรจัดเก็บ Blobs ไว้ข้างๆไฟล์การกำหนดค่าอื่น ๆ หากมีการเปลี่ยนแปลง มันเป็นโดยทั่วไปที่นิยมการใช้รูปแบบการใช้งานที่สามารถแก้ไขได้ดังนั้นสิ่งที่ต้องการ SQLite หรือ Berkeley DB เป็นที่ต้องการ (ตั้งแต่มีเครื่องมือบรรทัดคำสั่งสำหรับแต่ละ) แต่ไม่จำเป็นต้องใช้
- บน Windows แอปพลิเคชันของคุณควรเขียนในไดเรกทอรีผู้ใช้เท่านั้น
Users\User\AppData
สถานที่ตั้งมาตรฐานสำหรับไฟล์ข้อมูล ดูเหมือนไม่มีที่อื่นที่ยอมรับได้
- ใน Mac OS X การตั้งค่าแอปพลิเคชันของคุณควรเก็บไว้
~/Library/Preferences
พร้อมกับไฟล์ plist ของแอพพลิเคชั่นอื่นทั้งหมด plist
ดูเหมือนว่าจะเป็นรูปแบบที่ต้องการ แต่คุณจะต้องตรวจสอบอีกครั้งตามหลักเกณฑ์ของ Apple
และวิธีพกพาที่ดีที่สุดคืออะไร
ไม่มี "ดีที่สุด" ที่จะซื่อสัตย์ มีข้อ จำกัด และความคาดหวังเฉพาะแพลตฟอร์มเท่านั้น คำแนะนำของฉันคือการใช้วิธีการเฉพาะแพลตฟอร์มแม้ว่ามันจะหมายถึงการเขียนรหัสเพิ่มเติม