2010-07-05 2 views
1

.NET Framework를 사용하여 매우 오랫동안 실행되는 응용 프로그램 (C# 또는 VB.NET)을 디자인하겠습니다. 매년 또는 그 이상으로 다시 시작될 수 있습니다 ...장시간 실행되는 응용 프로그램

"오랫동안 .NET에서 실행중인 응용 프로그램"을 디자인 할 때주의해야 할 사항이 있습니까?

.NET은 이러한 종류의 응용 프로그램에 적합한 플랫폼입니까, 아니면 J2SE와 같은 다른 플랫폼을 사용해야합니까?

(그것은 웹 응용 프로그램이 아닙니다.)

+1

서버를 계속 실행하는 데 초점을 맞 춥니 다. – Marko

+1

J2ME로 볼 수있는 모바일 응용 프로그램입니까? 당신이 섞인 것 같아요. 또한 Windows를 사용하는 경우 서버를 다시 시작하지 않고도 계속 서버를 실행할 수 있는지 확인할 것을 제안합니다. 업데이트 및 핫픽스를 설치 한 후 다시 시작해야 할 수 있습니다. – Incognito

+0

감사! 네, J2SE를 의미합니다 !!! – Jalal

답변

6

실제로 .NET을 사용하여 장기 실행 애플리케이션에 매우 적합라고 말할 것입니다. 압축 GC는 시간이 지남에 따라 메모리 조각화로 인해 발생할 수있는 문제를 방지하는 데 도움이되므로 일반적으로 관리 코드는 이러한 유형의 시나리오에서 비교적 잘 수행되는 경향이 있습니다.

질문 자체에는 정보가 거의 없기 때문에 많은 안내를하기가 어렵습니다. "매년 또는 그 이상"의 실행 시간은 특정 프레임 워크 또는 언어 선택이 유익 할 것이라고 말하는 충분한 정보가 아닙니다. 장기 실행 응용 프로그램에서 발생하는 문제는 설계 문제가 많고 프레임 워크/언어/도구 모음/etc.

필자는 서비스로 실행되며 오랜 기간 동안 지속적으로 실행되는 일부 .NET 기반 응용 프로그램을 작성했으며 응용 프로그램과 관련하여 전혀 문제가 없었습니다 (적어도 기술 자체에는 관련이 없음).

3

.NET의 가비지 컬렉터는 매우 좋으므로 비 명백한 메모리 누수가없는 한 확인해야합니다. "명백하지 않은 것"은 이벤트 처리기를 실제로 끝낼 때 이벤트 핸들러를 공개하지 않고 다른 클래스의 이벤트 핸들러에 람다 식을 사용하는 것과 그런 종류의 것을 포함합니다.

처리되지 않은 모든 예외를 포착하고 로깅하는지 확인하십시오. 그것이 죽으면, 당신은 이유를 알고 싶을 것이다.

또한 Windows 7에서 응용 프로그램 다시 시작 지원을 살펴보십시오. 실패 할 경우 응용 프로그램을 다시 시작할 수 있습니다. 관리되지 않는 코드로 작성되었지만 Windows 7 API code pack의 .net에서 액세스 할 수 있습니다.

5

필자는 앱을 계속 실행하는 것과 필연적으로 멈출 때 일어나는 일에 대해 걱정할 필요가 없습니다. 실수하지 않아도됩니다.

잘못 될 수있는 요소가 많이 있습니다. 크래시, 서버 오류, 네트워크 오류 또는 누군가 단순히 앱을 중지하는 것입니다. 실제 작업은 응용 프로그램이 다시 시작된 후 응용 프로그램의 작업을 다시 시작합니다.

+1

좋은 지적. 고 가용성이 문제가되는 경우 중요 리소스를 복제하는 것이 좋습니다 (이 애플리케이션/서비스 = –

관련 문제