2011-05-05 2 views
0

많은 데이터가 포함 된 기존의 큰 응용 프로그램이 있습니다. 우리는이를 다양한 내부적으로 작성된 C# 웹 응용 프로그램의 데이터 소스로 사용하므로 더 많은 중복 데이터가 없습니다.때로는 사용할 수없는 Oracle 데이터베이스 소스에 대한 C# 웹 서비스

우리가보고있는 데이터는 너무 많이 변경되지 않으므로 캐싱은 대부분 잘 작동합니다. 따라서 우리는 다양한 내부적으로 작성된 응용 프로그램에서 다시 사용할 수있는 데이터에 대해 C# 웹 서비스를 작성하고 있습니다.

그러나 대략 한 달에 한 번씩 Oracle 데이터베이스 원본을 사용할 수 없습니다.

웹 서비스에서이를 처리하여 해당 데이터를 사용하는 다른 응용 프로그램도 손상되지 않도록하는 가장 좋은 방법은 무엇입니까?

+0

어떤 종류의 웹 서비스입니까? ASMX? –

+0

@ John Saunders 더 좋고/쉬운 방법이 없다면 지금은 그렇습니다. 대신 WCF를 사용해야합니까? –

+1

예, 모든 새로운 개발에 WCF를 사용하십시오. [Microsoft는 ASMX 웹 서비스는 "레거시 기술"이라고 설명합니다.] (http://johnwsaunders3.wordpress.com/2009/07/03/microsoft-says-asmx-web-services-are-a-%E2%80 % 9 명성 기술 % E2 % 80 % 9D /) –

답변

1

해결 방법은 만료되지 않는 보조 캐시를 사용하는 것이 었습니다.
첫 번째 (더 짧은) 캐시가 데이터베이스에서 성공적으로 업데이트되면 보조 캐시가 최신 값으로 업데이트됩니다. 데이터베이스 쿼리가 실패하고 첫 번째 캐시가 만료 된 경우 첫 번째 캐시는 두 번째 캐시에 의해 업데이트됩니다. 따라서 항상 2 차 캐시가 있습니다.

1

복제 또는 장애 조치 파트너를 설정 하시겠습니까? 솔직히 말해서, 이것은 더 많은 코드를위한 일처럼 보이지 않습니다. 그것은 더 많은 인프라에 대한 직업처럼 들립니다. 오라클 라이센스는 비싸지 만, 개발자들에게 비가 용성 문제를 해결하는 데는 비용이 많이 듭니다.

단순히 코드로 해결해야한다면 정기적으로 예정된 DB 쿼리가 시간 초과 또는 연결 실패 유형 메시지와 함께 실패하는 경우 웹 서비스가 캐시 된 데이터를 보유하고 반환해야합니다. 캐시 된 데이터는이 상황에서 데이터를 새로 고치는 호출이 성공할 때까지 필요한만큼 오래 보관되어야합니다. 캐시 된 데이터가 없으면 오류를 삼켜 아무것도 반환하지 않거나 두 위치에서 데이터를 사용할 수 없다는 오류를 반환 할 수 있습니다.

관련 문제