문제

C# Windows 서비스가 자동으로 최신 버전을 확인하고 자체적으로 업그레이드할 수 있도록 하는 데 사용할 수 있는 프레임워크가 있습니까?이를 달성하기 위해 코드를 작성할 수는 있지만 이미 구현되고 (가장 중요하게) 테스트된 프레임워크를 찾고 있습니다.

편집] 여기에이를 달성하는 데 도움이되는 현대 프로젝트에 대한 링크가있는 유사한 질문에 대한 링크가 있습니다. .NET용 자동 업데이트 라이브러리?

도움이 되었습니까?

해결책

유형을 언로드하는 유일한 방법은 appdomain을 삭제하는 것입니다.이렇게 하려면 실행 중인 서비스 코드에서 호스팅 계층을 분리해야 합니다. 이는 매우 복잡합니다.(열쇠구멍 수술을 하는 것과 같습니다)

a) 일괄 작업을 실행하거나 b) 서비스 내에서 업데이트를 감지한 다음 서비스를 중지하고 어셈블리를 업데이트하는 등의 별도 프로세스를 시작하는 것이 더 쉬울 수 있습니다.그런 다음 다시 시작합니다.

전자에 관심이 있다면 MSDN 패턴 및 사례 담당자가 서비스에 맞게 조정하는 앱 업데이트 블록을 작성했습니다.

https://web.archive.org/web/20080506103749/http://msdn.microsoft.com/en-us/library/ms978574.aspx

다른 팁

나는 이 특정 문제에 대한 솔루션을 용이하게 하는 프레임워크를 알지 못합니다.

시도해볼 수 있는 것은 서비스의 비즈니스 로직을 실제 서비스 코드에서 다른 어셈블리로 분리하는 것입니다.서비스 어셈블리가 정기적으로 비즈니스 논리 어셈블리에 대한 업데이트를 확인하도록 하고, 필요한 경우 원격 소스에서 이를 복사하고, 이전 BL 어셈블리를 언로드(및 삭제)한 다음 새 버전을 동적으로 로드합니다(이전 어셈블리 언로드는 그렇지 않음). 사소한 작업).

또 다른 가능한 해결책은 실행되고 업데이트가 있는 경우 다른 서비스를 중지한 다음 서비스를 업데이트하는 별도의 서비스를 갖는 것입니다.실행 중인 .dll이 중지되지 않으므로 서비스 업데이트 자체를 가질 수 없습니다.

비즈니스 로직 레이어를 분리하는 것이 좋은 선택이 될 것입니다.마스터 또는 제어 서비스의 반영 하에 실행되도록 기본 서비스를 다시 작성할 수도 있습니다.이는 비즈니스 로직을 분리하는 것과 유사하며 스레드를 중지하고 다시 시작하기만 하면 됩니다.

나는 이것을 수행하는 알려진 프레임워크가 없다는 것을 알고 있습니다.제가 직접 이 작업을 수행했지만 이는 공개 프레임워크가 아닙니다.

저는 WyBuild를 사용하여 응용 프로그램(Windows 서비스 포함)을 업데이트해 왔는데 정말 훌륭합니다.사용하기가 정말 쉽고 기존 애플리케이션과 통합하기도 쉽습니다.꽤 훌륭한 자동 업데이트 프레임워크입니다...

http://wyday.com/wybuild/help/automatic-updates/windows-services-console-apps.php http://wyday.com/wybuild/help/silent-update-windows-service.php

유료 프레임워크입니다(라이선스는 개발자별로 제공되며 무료 평가판이 포함되어 있습니다).

다른 사람이 이것을 검색하는 경우;이 링크가 흥미로웠어요.이 솔루션을 구현하지는 않았지만 나에게 도움이 될 것 같습니다.

http://www.eggheadcafe.com/articles/20041204.asp

질문을 좀 더 명확하게 설명해 주시겠습니까?내가 아는 한, 당신은 항상 서비스가 사용하는 DLL을 덮어 쓸 수 있기 때문에 약간 혼란 스럽습니다.서비스 복사 및 다시 시작은 빌드 프로세스의 일부로 쉽게 이루어질 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top