2010-06-10 3 views
3

오픈 소스 응용 프로그램 (here)임베드 리소스는 읽기 전용 XML 데이터베이스에 적합한 방법입니까?

이 응용 프로그램은 문자 또는 문장을 받아 유니 코드 정보를 제공합니다. 어떤 것이 좋은 방법입니다 또는 Unicode.org에서 제공

IUSE 유니 코드 문자 데이터베이스이 내 DLL이 XML을 포함 XML 문서 (1백30메가바이트) 처음에는

하지만 난 모르겠어요. DLL 크기가이 XML 문서 때문에 증가하기 때문입니다. 다른 리소스와 마찬가지로 사용할 수 있지만 사용자가 볼 수 있습니다.

어떻게해야합니까? 이것에 가장 적합한 패턴은 무엇입니까? 그리고 왜 ?

TIA

답변

1

만약 임베디드 리소스가이라면 변경 사항이있을 때마다 다시 컴파일하고 다시 배포하십시오. 또한 이것을하기가 행복하기 만하면 모든 사람이된다는 의미는 아닙니다.

매우 일반적인 접근 방식은 인터페이스 뒤에서 모든 종류의 데이터 액세스를 추상화하는 것입니다. 이렇게하면 사용자가 원하는 구현을 선택할 수있게되고 (커플을 제공한다고 가정 할 때) 자신이 직접 작성할 수있게됩니다. 패턴 측면에서 이것은 Dependancy Inversion (제어 반전이라고도 함)입니다.

config를 통해 공급자를 유도하면 (예 : Factory 사용) 앱의 주요 부분 (데이터를 사용하는 부분)을 다시 배포하지 않고도 공급자를 전환 할 수 있습니다. 따라서 XML 공급자로부터받은 XML 읽기 공급자, SqlLite 데이터 공급자, 웹 서비스/클라우드 기반 공급자 등 다양한 공급자를 가질 수 있습니다.

저는 Rolands 방식을 좋아합니다. 공급자의 구현으로도 (메모리로 파일 읽기, 메모리에서의 쿼리에 빠르게 응답).

Using Resources in Visual Studio .NET

0

파일을 압축하면 어떤 크기가됩니까? 절약이 중요한 경우 압축 된 리소스를 사용하고 리소스를 메모리 스트림으로 압축 한 다음 XML 문서에 스트림을로드하십시오.

+0

mydll은 약 13MB입니다. 빠르고 정확한 피드백을 제공하는 것이 필요하다는 점에 유의하십시오. XML은 크고 현재 최종 요소 중 일부는 문자에 대한 응답을 표시하는 데 약 10-20 초가 걸리므로 압축하는 것이 좋은 생각이 아니기 때문에 문장에 더 많은 내용이 포함됩니다. –

1

XML이 여기에있는 방법이 아니라고 생각합니다. 특히 성능이 중요한 경우. 크기가 큰 경우 포함 된 DB로 전환하는 것을 고려해보세요 (예 : SQLite 또는 기타).

SQLite는 체크 대이 질문에 XML에 대한 자세한 내용을 읽으려면 : Xml or Sqlite, When to drop Xml for a Database?

+0

+1은 Sqlite에 대해 빠릅니다.이 경우 – daniels

1

XML은 데이터 교환 형식입니다. 이미 XML 파일을 DLL에 임베드하는 것으로 간주했기 때문에 아무도 실제로 XML 형식이 필요하지 않을 것입니다. XML 파일에서 관련 데이터를 추출하여이를 DLL에 리소스로 저장하는 방법은 무엇입니까? 첫째, 공간을 절약 할 수 있으며 둘째, 나중에 필요할 때와 같이 이미 데이터를 구성 할 수 있습니다.

+0

+1 - 원본 소스가 변경 될 때마다 신속하게 처리 할 수 ​​있도록 해당 프로세스를 자동화하는 것이 좋습니다 (관련 데이터 추출). –