2011-07-04 6 views
3

웹 서비스를 구축 중이며 반환되는 데이터가 많을 것으로 예상합니다.큰 결과를 가진 웹 서비스

ASP.Net 및 IIS 6은 어떻게 처리합니까? 리소스를 덜 사용하도록하기 위해 우리는 어떤 일을 할 수 있습니까?

예를 들어 현재 직렬화 가능 클래스가 있으며이 클래스는 다른 직렬화 가능 클래스 유형의 배열 인 속성을가집니다. 웹 서비스가 호출되면 데이터베이스에서 대량의 레코드를 쿼리하고 클래스를 인스턴스화 한 다음 배열 속성을 채운 다음 직렬화 된 클래스를 반환합니다.

어떻게 처리 할 수 ​​있습니까? 전체 DataSet 객체가 메모리에 저장되고 전체 직렬화 가능 객체가 멤버에 저장되고 직렬화되며 전체 XML이 메모리에 저장되고 마지막으로 호출자에게 스트리밍되는 것으로 상상합니다.

데이터베이스에서 읽는 동안 결과가 스트리밍되는 것과 같은 메모리 소비를 줄이기 위해 할 수있는 일이 있습니까? 이것이 가능한가?

+0

IIS에서 호스팅되는 구식 웹 서비스 또는 WCF 서비스? –

+0

구식 웹 서비스. – Jeremy

+0

@ 제레미 : 대답은 "새로운 개발을 위해 구식 웹 서비스를 사용하지 마십시오"입니다. –

답변

1

단순히 WCF를 사용하여 스와핑하는 것이 확실한 이유는 질문을 실제로 데이터를 요청할 때의 부하에 대한 대답으로 대답하는 것입니다.

당신이 데이터를 캐시 할 수 있습니다 :

는 선호하는 서비스 방법을 선택하기 전에도 고려해야 할 몇 가지 사항이있다? 메모리에 데이터를 저장하는 것이 가능하면 데이터를 요청할 때마다 그리기를 방지 할 수 있습니다. 그러나 데이터의 크기가 너무 큰 경우 db에서 파일로 데이터를 쓰고 거기에서 제공하는 것이 좋습니다.

VM 모드로 Redis와 같은 것을 고려해 볼 수 있습니다. 이렇게하면 데이터를 캐시 할 수 있지만 자주 액세스하지 않는 경우 메모리에 과도한 사용을 방지하기 위해 데이터를 파일에 쓸 수 있습니다.

데이터베이스에 대한 호출이 여러 가지 효율적인 호출로 분리 될 수있는 방법이 있습니까?

통화를 실행하는 데 걸리는 시간이 길면 비동기 적으로 데이터를 호출하는 것이 좋습니다.

마지막으로 데이터가 웹 서비스로 제공되는 것이 필수적입니까? 데이터를 XML 문서로 제공 할 수 있습니까?

+0

WCF는 먼저 한 번에 4 개의 메시지 복사본을 메모리에 만들지 않아서이 문제를 해결합니다. 둘째, 실제로 WCF 서비스는 HTTP 및 SOAP 대신 TCP/IP 및 바이너리를 사용할 수 있습니다. 셋째, 필요한 경우 WCF는 진정한 스트리밍을 할 수 있습니다. –

+0

@ 존 - 호출 앱이 tranditional 웹 서비스 모델 만 지원하는 경우 WCF가 진정한 스트리밍을 할 수 있습니까? – Jeremy

+0

@ 존 : 나는 WCF가 우수하고 적절한 서비스일지도 모른다는 것에 동의하지만, 나는 서비스를 선택하기 전에 다른 것들을 고려해야한다고 주장한다. – Digbyswift

관련 문제