프로젝트 구성을 저장하고 싶습니다.
- 화면 크기
- 화면 위치
- 폴더 경로
- 사용자 설정 등.
이를 저장할 수있는 표준 위치는 구성 값입니다.
- 기재
- INI 파일
- 개인 파일 (예 : * .cfg)
이 장소들 중에서 어떻게 선택합니까? 또한, 그것들을 사용하는 것에 대한 장단점 이 있습니까?
프로젝트 구성을 저장하고 싶습니다.
이를 저장할 수있는 표준 위치는 구성 값입니다.
이 장소들 중에서 어떻게 선택합니까? 또한, 그것들을 사용하는 것에 대한 장단점 이 있습니까?
답변:
또한 그중 하나를 사용하는 장단점이 있습니까?
기재:
+
Windows 환경에서는 비교적 표준입니다.+
설치자 등의 일반적으로 좋은 지원-
응용 프로그램을 이식하려는 경우 플랫폼 별 API-
특히 사람이 읽을 수있는 것은 아닙니다.INI 파일 :
+
간단한 형식.+
가지고 다닐 수 있는.+
인간이 읽을 수 있습니다.-
더 복잡한 정보를 저장하기 어려울 수 있습니다 (예 : 2 개 이상의 깊이로 중첩 된 것).?
어렵지 않지만 자신의 파서를 작성하거나 SimpleIni 와 같은 외부 라이브러리를 사용해야 할 수도 있습니다 (주석에 대한 Jonathan Merlet에게 감사드립니다).XML 파일 (이것은 .cfg 옵션이라고 생각합니다) :
+
표준 형식입니다.+
가지고 다닐 수 있는.+
깊이 중첩 된 구조를 지원합니다.-
특히 사람이 읽을 수있는 것은 아닙니다.개인적으로 Windows 응용 프로그램의 경우 C #을 사용하고 XML로 저장된 사용자의 개인 파일을 사용하는 경향이 있습니다. 필자는 일반적으로 필자가 작성하는 응용 프로그램 유형 (및 응용 프로그램에 구성 편집기가 있어야 함)에서 인간의 가독성을 우선시하지 않으며 .NET 환경에서는 XML을 사용하는 것이 매우 쉽습니다. 나는 종종 구성 파일과 직렬화되는 UserConfiguration 객체로 끝나는 경우가 많으며 개발 (파싱, 캐스팅)과 거의 관련이 없으며 강력한 유형의 환경에서 구성을 사용할 준비가되었습니다.
INI 파일을 사용하면 더 인간 친화적 인 옵션입니다.
[window]
width = 600
height = 350
position.x = 400
position.y = 200
[paths]
path1 = "/some/random/path/"
path2 = "/some/other/random/path/"
[user]
name = "Yannis"
preference = "INI"
XML은 좋은 선택이지만 INI의 단순성과 우아함을 능가 할 수는 없습니다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<window>
<width>600</width>
<height>350</height>
<position>
<x>400</x>
<y>200</y>
</position>
</window>
<paths>
<path1>/some/random/path/</path1>
<path2>/some/other/random/path/</path1>
</paths>
<user>
<name>Robert</name>
<preference>XML</preference>
</user>
</configuration>
INI는 플랫폼에 대해 잘 이해하고 있습니다. INI 파일을 읽고 편집하는 데 전문화 된 도구가 필요한 사람은 누구입니까?
<window width="600" height="350" />
선호하는 것은 XML 파일입니다. 그것들은 계층 적이며, 상상할 수있는 거의 모든 방식으로 당신의 의지에 구부릴 수 있으며, 플랫폼에 독립적으로 이해되며, 읽고 쓸 수있는 다양한 소프트웨어가 있습니다.
Jeff D의 YAML 제안을 확장하기 위한 간단한 소개입니다.
YAML은 JSON과 유사합니다 (실제로 JSON은 YAML 표준 버전 1.2 이후 YAML의 하위 집합이므로 YAML 파서가 유효한 JSON을 구문 분석 할 수 있음). 언뜻보기에 주요 차이점은 YAML (기본적으로)은 계층 구조를 표시하기 위해 대괄호 대신 들여 쓰기를 사용한다는 것입니다. 문자열에 대한 따옴표가 눈에 띄게 부족합니다. 위의 간단한 예 :
configuration:
window:
width: 600
height: 350
position:
x: 400
y: 200
paths:
path1: some/random/path
path2: some/other/random/path
user:
name: Joe Soap
preference: YAML
더 좋은 예는 Wikipedia의 YAML 페이지 를 참조하십시오 . YAML에 대한 지원은 대부분의 주요 언어에 존재합니다 (자세한 내용은 yaml.org 참조).
옵션 인 데이터베이스를 잊었습니다. 이것은 주로 응용 프로그램이 로그인 한 Windows 사용자에게 의존 할 수 없을 때 사용자가 응용 프로그램에 로그인하는 시나리오에서 사용됩니다. 예를 들어 앱이 키오스크 모드 창에서 실행되는 경우입니다.
개인적으로 선호하는 것은 XML 파일입니다.
대부분의 경우 사용자가 구성 설정을 편집 할 필요가 없으므로 사람의 가독성 문제가이 경우에 대한 논쟁이 아닙니다.
편집해야 할 경우 편집 도구를 제공 할 수 있습니다. 이렇게하면 사용자가 데이터를 다루는 것을 방지 할 수 있습니다. 기본 설정을 복원하려면 대부분의 사용자가 편한 x 파일을 삭제하도록 지시하면됩니다.
Windows 7 등의 일부 위치에는 기본적으로 쓰기 권한이 없으므로 파일을 저장할 권한이 있으므로주의해야합니다.
INI 파일은 구성을 저장하는 좋은 표준 방법이며 시험 및 테스트를 거치지 만 조금 'Windows 3.1'인 것 같습니다!
사용자가 자신의 데이터를 땜질 할 수있게하려면 가장 좋은 옵션 일 것입니다
나는 개인적으로 레지스트리에서 멀어지게했다. 한 가지 이유는 사용자가 데이터를 저장하려는 위치에 대한 읽기 / 쓰기에 필요한 권한이 있음을 보장 할 수 없습니다.
레지스트리 가상화가 작동하는 최신 OS에서는 가상화 된 설정을 '볼'수 없기 때문에 심각한 혼란을 야기 할 수 있습니다. 이로 인해 문제가 발생한 이유를 파악하기 위해 몇 시간을 소비 한 적이 있습니다.