2009-11-05 2 views
1

시작하기 직전에 내가 성취하고자하는 것을 간략하게 요약 한 다음, 자세한 내용을 살펴 보겠습니다. 현재 사용자 기본 설정과 관련된 특정 키의 변경 사항에 대해 사용자 레지스트리를 모니터링하는 응용 프로그램을 개발 중입니다. 현재 필수 프로필 (내 선택 사항 아님)을 사용하고 있었는데, 어쨌든 전체 아이디어는 다음에 로그온 할 때 사용자 레지스트리에 다시 기록 할 수있는 위치에 변경 사항을 기록하는 것입니다.XML to LINQ Question/s

현재 레지스트리 변경 사항을 모니터링하고 변경된 키, 값 이름 및 값을 반환하는 이벤트가 발생합니다. 필자는 이들을 목록에 입력하여 모든 데이터를 포함하는 단일 문자열을 작성한 다음 해당 목록을 텍스트 파일에 자주 작성했습니다. 이제는이 모든 것이 잘되었지만 문자열을 키, 값 이름 및 값으로 다시 분할하는 방식으로 데이터를 보관하는 방식을 레지스트리에 다시 쓰기 위해 변경해야합니다. 너무 많은 오버 헤드가 필요하고 문자열을 고유하게 식별 할 수없는 문제가 있습니다. 유행.

이전에 사용 해본 적이없는 XML을 살펴 보았습니다. 조사를 시작했으며 모두 간단 해 보였습니다. 이전에 LINQ를 사용하여 내장 된 데이터베이스에 연결했습니다. 현재 머리말을 붙이기 위해 고심하고있는 것은 LINQ가 응용 프로그램을 빠르게 유지해야하기 때문에 XML 파일에 지속적으로 액세스하고 싶지 않기 때문에 XML에서 메모리의 데이터를 검색하고 조작 할 수있는 방법입니다 가능한 한. 현재 레지스트리의 모든 변경 사항은 List (String)에 캐시 된 다음 매분마다 텍스트 파일에 기록됩니다.

현재 내가 가지고있는 시스템은 키, 값 이름 및 값을 다른 문자열로 반환하고,이를 단일 List (String) 값으로 수렴합니다. 여기서 필요한 것은 테이블 또는 동등한 표현입니다. 단일 값을 포함하는 각 값 이름과 마지막으로 유형을 포함하는 다중 값 이름을 포함하는 키입니다 (이 값은 REG SZ, REG BINARY 등 어떤 레지스트리 값을 나타내는 숫자입니다). XML 파일과 프로그램 자체에서 모두.

또한 데이터베이스와 달리 테이블과 스키마는 프로그램이 처음 실행될 때까지 존재하지 않을 것입니다. 프로그램이 처음 실행될 때까지 이미 존재하는 것이 아닌 새로운 XML 파일을 생성하기 때문입니다. 이것은 정보가 사용자 개인 드라이브에 다시 기록되기 때문에 사용자 시스템에서 처음 실행될 때 생성되어야합니다.

몇 가지 링크 및 자습서 등을 시도했지만 아무 것도 클릭하지 않았으므로 예제가 있거나 조금 더 잘 설명해 주시면 감사하겠습니다.

내가 추가하고 싶은 마지막 비트는 프로그램에 데이터를 저장하는 현재 아이디어는 값 목록과 키 목록에 포함 된 값 이름 목록에 포함 된 값 목록을 만드는 것입니다. . 괜찮은가요?

이제는 길고 친절한 곳인지 알 수 있습니다. 누군가 도움을 주시면 감사하겠습니다. 추가 정보가 필요하면 알려 주시면 최대한 노력하겠습니다.

감사합니다.

답변

1

내가 아는 바로는 잘못된 방향으로 생각하는 것입니다. 응용 프로그램은 메모리에서 XML을 조작하고 싶지 않습니다. 메모리의 일부 데이터 구조로 작업하기를 원하며 디스크에 저장하고 다시 읽을 수있는 쉬운 방법을 원하십니까? 내가 권리를 이해한다면 :

XML 용 LINQ에 신경 쓰지 마라. XML 직렬화 인프라에서 빌드를 살펴보십시오. 그런 다음 응용 프로그램의 필요에 맞는 내부 데이터 구조를 작성하고 XmlSerializer를 사용하여 디스크에 기록한 다음 다시 읽습니다. XML을 손으로 만질 필요가 없습니다!

+0

기본적으로 그렇습니다. 맞습니다. 메모리에있는 데이터를 조작하고 쓰고 읽을 저장소가 있어야합니다. 저는 기존 데이터 저장소가 있고 데이터 집합 등을 사용하는 SQL에서 LINQ를 사용합니다. – manemawanna

+0

메모리에서 XML을 사용하는 것을 잊어 버려야합니다. XML 직렬화가 작동하는 방식에 대한 예제를 보려면 http://www.switchontheec.com/tutorials/csharp-tutorial-xml-serialization을 참조하십시오. – Achim

1

여기에서 XML을 사용하는 것이 좋습니다.

메모리에 XML의 DTA 접근에 관해서는, 나는 꽤 도움이 MSDN 문서를 발견 개체와 협력,
http://msdn.microsoft.com/en-us/library/bb387098.aspx

기본적인 아이디어는 XML이 LINQ - 투 - 단지 LINQ - 투 - 객체입니다입니다 그 XML 요소를 나타냅니다.

두 번째 질문에 답할 수 없습니다.

+0

내가 알기를 원하는 모든 것이 XML에 관한 것이므로 이미 대부분의 문서를 읽었지만 이번에는 내 머리를 더 잘 살릴 수 있는지 또 한번 살펴 보도록하겠습니다. 잠이났다. – manemawanna