Windows 서비스를 처음 사용합니다. VS2010에서 Windows 서비스 를 만드는 법을 배웠지 만 Windows 서비스를 사용할 수있는 실용적인 방법을 알고 싶습니다.
Windows 컨텍스트를 만드는 방법에 대한 추가 자습서를 찾기 위해 현재 컨텍스트를 염두에두고 인터넷 검색을 시도했습니다.
바운티 상품 편집 :
모든 답변은 훌륭하지만 Windows 서비스 및 그 의미에 대한 더 실용적인 예 를 찾고 있었습니까? 이를 통해 개발자는 사례 연구에 적합한시기를 알 수 있습니다.
답변
컴퓨터에 아무도 로그온하지 않아도 서비스는 백그라운드에서 실행됩니다. 앱을 시작하고 버튼을 클릭하기 위해 사람에게 의존하지 않고 원하는 것을 상상할 수있는 것은 서비스의 좋은 후보입니다. 예를 들어, 폴더를 모니터링하고 파일을 쓸 때마다 어떤 방식 으로든 처리하십시오. 웹 서버, ftp 서버, 메일 서버 등 생각할 수있는 모든 “서버”는 서비스이므로 자주 생각하지 않을 수있는 많은 백그라운드 프로세스가 있습니다.
한 번 서비스로 작성된 파일 (오전 2시에 백업 파일, 오전 3시에 알림 이메일 보내기 등)은 아마도 예약 된 작업으로 더 잘 수행 될 수 있습니다.이 작업은 Windows 7 이상에서 큰 유연성을 제공하지만 개발자가이를 배우지 못한 경우에는 시스템은 XP를 지원해야하며 이러한 종류의 작업을 수행하는 서비스도 찾을 수 있습니다.
답변
Windows의 서비스는 기본적으로 GUI없이 실행되는 프로그램입니다. 웹 서버 (예 : 아파치), 데이터베이스 서버 (예 : mysql & sql 서버), 안티 바이러스 엔진 및 응용 프로그램 / 미들웨어 서버는 모두 종종 서비스로 실행되는 응용 프로그램의 실제 예입니다. 서비스와 상호 작용할 수있는 GUI 클라이언트가있을 수 있지만 서비스 자체에는 서비스가 없습니다. 그것은 단지 ‘배경에서’실행하고 있습니다. 또한 서비스는 할당 된 사용자 권한으로 실행 되므로 할당 된 사용자로 실행할 수 있습니다.사용자가 실제로 컴퓨터에 로그인했는지 여부 따라서 데이터베이스 서버는 당시 머신에 로그인 한 사람이있는 경우에 상관없이 동일한 액세스 권한을 갖습니다. 따라서 왜 중요한지 알 수 있습니다. 예를 들어 웹 서버를 계속 실행하기 위해 사용자를 계속 로그인하지 않아도됩니다.
그것들은 * nix의 데몬과 Windows에 해당합니다 (가장 실용적인 방법으로).
답변
서비스
특히 하드웨어 수준이 낮은 수준에서 다른 프로그램을 지원하기 위해 특정 시스템 기능을 수행하는 프로그램, 루틴 또는 프로세스. 서비스가 네트워크를 통해 제공되면 서비스 중심 관리 및 사용을 용이하게하는 Active Directory에 서비스를 게시 할 수 있습니다.
Windows 서비스를 사용할 수있는 실용적인 방법을 알고 싶습니다.
서비스 정의에 따라 Window Service 및 기타 유형의 서비스는 많은 기능을 수행합니다. 이러한 맥락에서 검색 엔진은 당신의 친구 입니다.
Windows 서비스는 일반적으로 응용 프로그램을 지속적으로 실행해야 할 때 사용됩니다. 사용자 상호 작용없이 백그라운드에서 코드를 실행하려면 Windows 서비스를 만들어야합니다 .
아무도 로그온하지 않아도 Windows 서비스가 실행됩니다. 컴퓨터의 전원이 켜지 자마자 Windows 서비스가 실행되기 시작할 수 있습니다 . 예를 들어 서버 (http 서버)로 실행하기에 이상적입니다. 아무도 로그인 할 필요가 없습니다.
예를 들어 필요한 경우 :
- 들어오는 요청을 기다립니다. (원격 또는 wcf를 통해)
- 대기열, 파일 시스템 등을 모니터링합니다. 프로그램을 하루에 한 번 정기적으로 실행해야하는 경우. 일반적으로 예약 된 작업을 만드는 것이 더 쉽습니다.
- 메일, 웹 또는 FTP 서버와 같은 연결을 수락하는 모든 서버는 일반적으로 Windows 서비스 여야합니다.
다음과 같은 이유로 서비스를 사용합니다.
- 세션을 실행할 필요가 없습니다. 이것은 보안에 좋고 서버의 오버 헤드를 줄입니다.
-
일부 관리 명령이 무료로 제공됩니다.
o 시작
o 중지
o 일시 중지
o 계속 -
시스템 종료와 같은 서버 이벤트를 처리 할 수 있습니다.
이 서비스에 대한 추가 정보가있는 링크 :
Asp.net에서- // TODONT : 예약 된 프로세스를 실행하기
위해 Windows 서비스 사용 WIndows 서비스 사용
답변
winform 또는 WPF와 같은 대화식 프로그램은 사용자가 열고 상호 작용하고 닫으려고하는 것입니다. 예약 된 작업은 특정 시간에 백그라운드에서 실행하려는 작업입니다. 시작, 작업 및 중지 일 수 있습니다. Windows 서비스는 당신이 백그라운드에서 모든 시간을 실행하려면 무언가이다.
Windows 서비스의 일부 장점은 로그인 한 사용자 또는 로그인 한 사용자가 없어도 실행되며 컴퓨터를 부팅하자마자 실행되도록 설정할 수 있다는 것입니다. 시스템이 재부팅됩니다.
폴더 나 이메일받은 편지함과 같은 것을 모니터링해야 할 때 일반적으로 서비스를 사용했습니다.
답변
귀하의 질문에 실용적인 예제에 대한 메모를 추가 했으므로 엔터프라이즈 응용 프로그램 용으로 작성한 서비스의 예를 제공합니다 (엔터프라이즈 응용 프로그램 프로그래머인지는 말하지 않지만 대부분의 C # VS2010 프로그래머는 내 추측입니다) . Microsoft에서 작동하지 않는 개발자가 작성할 수있는 아이디어를 찾고 있다고 생각합니다.
다른 프로그램이 여전히 실행 중인지 확인한 하트 비트 모니터 서비스입니다 (예약 된 작업으로 작동했지만 서비스로 구현 된 경우).
보고서 요청 대기열을 통해 작동하고 보고서를 실행하여 사용중인 프린터에 따라 다른 프린터로 전송하는 보고서 작성 서비스입니다. 이는 레거시 애플리케이션에서 상당한 양의 작업을 오프로드하는 데 도움이되었으며 서비스를 실행하는 여러 개의 저렴한 박스에서 보고서 실행을 공유 할 수있었습니다.
이 서비스는 지속적으로 실행되고 재부팅시 자동으로 시작되며 표준 Windows 서비스 인터페이스를 사용하여 시작, 중지, 일시 중지 등을 수행 할 수 있도록 서비스로 구현되었습니다. 또한 예약 된 작업 인 경우에는 다른 프로그램이 호출 할 수있는 것 (소켓, 파이프)이 아닌 다른 프로그램 또는 영구 소스 (큐, 파일, 데이터베이스)에서 데이터를 가져 오기 시작합니다.
해당 클라이언트 / 서버 응용 프로그램의 서버 부분도 재부팅으로 다시 시작되도록 서비스로 구현되었습니다. .exe를 사용 하여 서비스가 아닌 동일한 프로그램을 실행 한 다른 프로젝트가 더 쉬워졌습니다. 개발 머신에서 디버그합니다.
도움이 되길 바랍니다. 다른 답변은 더 나은 일반적인 답변, 특히 예약 된 작업이 현재 대부분의 목적을 위해 작성하고 관리하기 쉽다는 생각입니다.
답변
서비스에는 실질적으로 많은 용도가 있습니다. 실용적으로 사용되는 한 가지 방법은 UI와 서비스 (또는 UNIX의 데몬) 프로그램 간의 상호 작용이며,이 경우 클라이언트와 서버의 차이점입니다. 서버는 요청을 수신하고 요청을 처리하며 대개 회신을 보냅니다. 즉, 요청을 제공합니다. SQLSERVER, IIS 또는 텔넷에 대해 생각해보십시오. 클라이언트는 일반적으로 서버에 요청을 보낸 후 응답을 표시하거나 처리하여 서버를 사용합니다. 즉, 데이터 입력 응용 프로그램, 웹 응용 프로그램 … 서버는 거의 항상 Windows (또는 Unix의 데몬)의 서비스로 설치되며 클라이언트는 일반적으로 GUI가있는 일반 응용 프로그램입니다. 더 복잡한 서비스 사용 방법이 있지만 가장 많이 사용하는 방법입니다.
예를 들어 : 현재 SIP / H323 비디오 서버에서 작업하고 있습니다. 내가 작성한 SDK를 사용하여 응용 프로그램에서 요청을 받고 처리 한 후 회신합니다. 비디오 서버 응용 프로그램은 포함 된 Linux 시스템에 데몬으로 설치되며 (임베디드 Windows 시스템에서는 서비스이지만 임베드에 Windows를 사용하는 사람) SDK를 사용하는 모든 응용 프로그램은 클라이언트로 간주됩니다.
물론 이러한 응용 프로그램을 작성하여 서비스로 만들 수는 없습니다. 여전히 Windows를 시작할 때 시작하고 백그라운드에서 실행되도록 할 수 있습니다. 그러나 몇 가지 레지스트리 항목과 코드에서 약간의 오류가 발생하므로 .NET과 같은 것보다 c api를 사용하는 것이 훨씬 쉽습니다. 반면에 Microsoft는 서비스를 생성하고 OS에 서비스를 등록하여 훨씬 쉽게 만들었습니다. 수동으로 수행하는 것보다 훨씬 간단하고 구현하기 쉽습니다.
답변
후보 프로그램의 예 :
-
리소스 / 기타 응용 프로그램을 모니터링하고 보고서 (사용자 활동, 특정 종류의 파일 트래픽, 응용 프로그램 오류 알림)를 보내야하는 시스템
-
다른 로컬 응용 프로그램에 서비스를 제공하는 시스템 (번역, 파일 변환, 시스템 간 메시징)
-
바이러스 백신 소프트웨어.
예약 된 작업으로는 쉽게 수행 할 수없는 큰 예라고 생각합니다.