혼란은 작업 실행과 WCF 끝점이 같은 것으로 가정하는 것입니다. 이 세 가지 주요 항목으로 나눕니다 :
- 클라이언트 작업 관리를위한 UI 요소가있는 클라이언트 응용 프로그램.
- 작업 정보를 검색하고 작업 요청 만들기/삭제를 보내는 WCF 서비스 끝점입니다.
- 작업을 실행하는 응용 프로그램입니다.
클라이언트 응용 프로그램
클라이언트 응용 프로그램은 WCF 서비스를 통해 작업 데이터를 검색합니다.당신은 클라이언트 응용 프로그램에 필요한 엔드 포인트를 노출 할 작업/등
WCF 서비스
WCF 서비스/삭제 작업을 만들어 실행 작업 /를보기 위해 화면을 제공 할 것입니다. 여기에는 CreateJob, ViewJobs, DeleteJob 등의 항목이 포함될 수 있습니다. 서비스는 데이터베이스 백엔드에 대한 읽기/쓰기 작업을 수행해야합니다.
작업 응용 프로그램
작업 응용 프로그램은 새로운/삭제 작업에 대한 폴링하고 작업을 완료하는 데 필요한 무엇이든 수행 할 것입니다. WCF 서비스가 읽는 데이터베이스 백엔드에서 작업 상태를 업데이트합니다. SQL 작업, Windows 서비스, 콘솔 응용 프로그램 등이 될 수 있습니다 (아마도 Windows 서비스를 만들려고합니다. 아마도 작업을 처리하기 위해 항상 실행중인 무언가를 원할 것이기 때문입니다).
질문이 부정되는 작업을 실행하는 응용 프로그램에서 WCF 서비스를 분리하여
How can a server console application expose ASMX or WCF web services(so that WPF clients get the status of the jobs) WHILE CONTINUING TO RUN THE JOBS?
. 참고 : WCF 및 작업 실행자를 호스팅하는 콘솔 응용 프로그램을 가질 수 있지만 개념적으로는 별도의 것으로 생각합니다 (동일한 콘솔 응용 프로그램에서의 호스팅은 구현 세부 사항입니다).
How to push progress updates from server to the WPF clients when there is a change?
나는이 작업을 수행하지 않을 것입니다. UI를 수시로 폴링하거나 WCF 끝점을 통해 상태를 검색하는 새로 고침 단추를 제공합니다.
절대적으로이 작업을 수행해야하는 경우 작업을 실행하면서 메시지를 게시하기 위해 Job Executer가 필요하며 클라이언트 응용 프로그램은 이러한 메시지 (MSMQ, 서비스 버스 구현, BizTalk 등)를 수신해야합니다. 내가 할 이유
내가 그것에 대해 내가 밀어 스타일을 할 것입니다 경우, 일부 어디 설문 조사 아마 있다고 생각 이제 서버 푸시
에 폴링을 선호합니다.
오프 사이트에있는 클라이언트가 많은 경우 (VPN 또는 일반 인터넷을 통해 연결하는 경우) 대역폭과 네트워크 대기 시간이 매우 길기 때문에 클라이언트를 폴링해야합니다. 클라이언트 수가 많으면 모든 구독 메시지마다 모든 업데이트 메시지를 보내야합니다. 이 경우 나는 모델에 말하지 말라는 질문에 간다.
고객이 집에 있고 실시간 정보를 스트리밍해야하는 경우 푸시 모델이 더 적합합니다. 이 경우 클라이언트는 서버 응용 프로그램에 연결할 수 있으며 연결을 통해 메시지를 앞뒤로 보낼 수 있습니다 (개인적으로이 작업을 수행하지 않았으므로 소켓을 설정하는 방법에 대한 권장 사항이 없으므로 소켓보다 더 높은 수준이 될 수 있습니다).
메시지가 업데이트가 발생하지만 클라이언트가 여러 위치에 있으면 상황이 좋을 경우 게시/하위 모델이 가장 적합 할 수 있습니다. pub/sub에서 애플리케이션은 업데이트 메시지가 발생할 때이를 푸시합니다. 메시징 시스템은 메시지를 구독하는 클라이언트가 있는지 확인하고 메시징 시스템을 구독하는 모든 클라이언트에 대해 메시지 사본을 전달합니다. 예에서 클라이언트는 작업 메시지에 subscribe
을 보내고 메시징 시스템은 클라이언트가 지정한 위치로 업데이트를 보냅니다 (클라이언트는 메시지를 수락 할 방법이 필요함).NServiceBus, BizTalk는 이러한 유형의 통신의 예입니다.
가능한 복제본 : http://stackoverflow.com/questions/11170457/discussion-client-server-application-architecture –
@MikeMcCaughan 당신이 언급 한 링크는 유사하지만 내 경우에는 그렇지 않습니다. 클라이언트에게 서비스를 제공하는 것 외에도 장기간 실행해야 할 작업이 있습니다. – Aron
시험해보십시오. http://dasunhegoda.com/architecture-products/1180/ – Techie