2013-10-04 3 views
1

약 40 개의 값이있는 XML 구성 파일과 함께 Asp.Net MVC 웹 응용 프로그램이 있습니다.xml 파일을 한 번 읽고 값을 전달하거나 필요한 경우 xml을 여러 번 읽는 것이 더 좋습니까?

내 웹 응용 프로그램은 단지 한 페이지지만 여러 개의 부분보기 (각각 모델과 컨트롤러가있는)로 나뉩니다. 각 섹션은 설정 파일의 값 중 일부만 사용해야하지만 중복되는 부분이 있습니다. 예 : ViewA는 valueX이고, ViewB는 valueXvalueY이 필요합니다.

내 질문은 - 기본 HomeController에서 .xml 파일을 한 번 읽고 값을 다른 모든보기/컨트롤러에 전달하는 것이 더 나은가요? 어떻게해야할지 모르겠다. 각 섹션에는 자체 모델이 있기 때문에이 값을 모델에 넣을 수는 없으며 40 개의 값을 저장하기 위해 ViewBag를 사용하고 싶지 않습니다.

또는 각 컨트롤러가 xml 파일을 독자적으로 읽고 더 필요한 데이터 만 가져 오는 것이 더 낫습니까? 이렇게하면 하나의 화면을로드하기 위해 동일한 xml 파일을 최대 5 번 읽은 다음 부분보기가 업데이트 될 때마다 읽습니다.

성능 옵션이나 메모리에 영향을주는 옵션이 있습니까?

답변

3

성능 옵션이나 메모리에 영향을주는 옵션이 있습니까?

예. 파일을 여러 번 읽는 것은 한 번 읽는 것보다 훨씬 느립니다. 그리고 그 값을 붙잡는 것은 그것들을 그 위에 올려 놓지 않는 것보다 더 많은 메모리를 소비 할 것입니다.

그러나 우리는 많은 시간이나 많은 기억에 대해 말하는 것이 아니라 40 가지의 가치에 대해서 말하고 있습니다. 그 값이 각각 메가 바이트가 아닌 한.

XML 데이터를로드하고 캐시하는 데는 여러 가지 방법이 있습니다. 처음으로 응용 프로그램에 액세스 할 때 한 번로드 할 수 있습니다. 또는 요청할 때마다로드 할 수 있습니다. 내 응용 프로그램에서는 처음 응용 프로그램에 액세스 할 때 데이터를 한 번로드합니다. 기본적으로 이름/값 컬렉션 인 객체에로드됩니다. 나는 그것을 필요로하는 모든 컨트롤러에 인터페이스 레퍼런스를 전달한다. 그런 다음 StructureMap을 사용합니다.이 구조는 이런 일을 매우 쉽게 만듭니다.

응용 프로그램의 구조에 대해 더 많이 알지 못하면 어느 것이 더 적합할지 말하기 어렵습니다. 모델을 호출하여 데이터를 가져 오는 게으른 로딩 된 싱글 톤 객체를 가질 수 있습니다. 싱글 톤 객체 자체는 처음 사용할 때 데이터를로드합니다. Jon Skeet의 Implementing the Singleton Pattern in C#을 확인하십시오.

불필요하게 걱정할 지 모르지만. 파일이 작 으면 첫 번째 읽기가 디스크에서 캐시로 데이터를 가져오고 그 다음에 파일을 읽는 호출이 캐시에서 충족 될 가능성이 높습니다. 각 호출마다 여전히 XML을 파싱하는 데 비용이 들지만 파일을 읽는 것은 이미 메모리에 있기 때문에 값이 싸다. 현재 충분히 빠르게 작동하고 있으며 요청 수가 크게 달라질 것으로 예상하지 않으면 다른 작업을 최적화하는 데 더 많은 노력을 기울일 것입니다.

2

현재 솔루션은 xml 파일 대신 전역 리소스 파일 (.resx)을 사용하여 어디서나 값에 직접 액세스 할 수 있습니다. 그러나 xml을 사용하여이를 수행 할 수있는 좋은 방법이 있다면, 나는 여전히 그것을 듣고 싶어합니다.