하나의 XML 파일이 더 쉽습니다.
파일은 다음과 같이 하심 :
<ReportCardData>
<Students>
<Student>...data for student A ...</Student>
...
</Students>
<Teachers>
<Teacher> ...
...
</Teachers>
<Courses>
<Course> ...
...
</Courses>
</ReportCardData>
C#의 코드는 다음과 같을 것이다 :
public class ReportCardData
{
public List<Student> Students;
public List<Teacher> Teachers;
public List<Course> Courses;
}
및 역 직렬화하기 (읽기를) 데이터를 다음과 같습니다 코드 :
ReportCardData rcd = null;
var s= new System.Xml.Serialization.XmlSerializer(typeof(ReportCardData>));
using(System.IO.StreamReader reader= System.IO.File.OpenText(filepath))
{
rcd= (ReportCardData) s.Deserialize(reader);
}
... 등,
적절한 예외 처리에 추가해야합니다
XML 직렬화를 사용하면 수십 메가 바이트의 대용량 데이터 세트의 경우에도 이와 같이 작동합니다. (100 메가 바이트의 데이터를 말하는 경우 SQL Express와 같은 실제 데이터베이스를 고려해보십시오.
읽기 및 쓰기 성능이 좋을 것입니다. XML 파일에서 데이터를 비 직렬화하면 전체 데이터 세트가 앱의 메모리에 보관됩니다. 따라서 15MB의 학년 데이터라면 한 번에 모두 메모리에 저장됩니다.
"데이터 결합 관점"에 대해서도 물어 보았습니다. 그 의미는 모르지만 Linq를 XML로 사용하면 해당 데이터에서 쿼리를 수행 할 수 있습니다. 메모리 내 쿼리의 성능도 좋습니다.
웹 앱이 아닌 데스크탑이라고 가정합니다. – LarsH
예, 그렇습니다. 지금은 오프라인 독립 실행 형입니다. 진화 할지도 모릅니다. 시간이 말해 줄 것입니다. 그래서 나는 결정했다. 가능한 한 간단해야한다. 심지어 임베디드 DB도 사용하지 않습니다. 파일을 생성해야합니다. XML은 사람이 기계로 읽을 수 있고 쓸 수 있습니다. 그래서 그것은 분명한 선택입니다. 파일은 그다지 크지 않아야합니다. 한 선생님은 100 명의 학생 탑을가집니다. 한 교사는 약 3에서 6 과목을 가르칩니다. 나는 심지어 모바일에 그것을 구축하는 것을 생각하고있다.Linq이 내 인생을 더 쉽게 만들어주기 때문에 C#을 고수하고 싶습니다. 나는 단지 하나의 x 다중 파일 딜레마에 대해 궁금해하고있다. 무엇을 고려해야합니까? 나는 무엇을 고려하고 있지 않습니까? –
고통을 고집하는 경우 다른 옵션은 "이전"DataTable/DataSet을 사용하여 자동으로 일련 화되도록하는 것입니다. (나는 SQLite 또는 관계 성/DQL이 좋습니다!) XML은 손으로 편집해야하거나 교환 형식 (예 : 다른 곳에서 사용됨)으로 사용되지 않는 한 많이 "구매"하지 않습니다. 사실 XPath로 형식화되지 않은 데이터 객체 인 XML을 사용하는 것이 XML의 또 다른 좋은 점입니다. 그러나 누군가 나를 위해 그것을 찔러 넣을 것이라고 생각합니다. –