2009-02-06 5 views
3

웹 응용 프로그램에서 콘솔 응용 프로그램으로 데이터를 제출해야합니다. 현재 계획은 웹 응용 프로그램이 데이터를 데이터베이스 및 콘솔 응용 프로그램에 제출하여 데이터베이스를 폴링 한 다음 삽입 될 때 데이터에 대해 조치를 취하도록 요구합니다. 웹 애플리케이션이 데이터를 제출할 수있는 http 핸들러를 포함하도록 콘솔 앱을 변경해야 데이터베이스를 폴링 할 필요가 없습니까? 이 두 응용 프로그램간에 데이터를 교환하는 더 좋은 방법이 있습니까? 콘솔 앱은 웹 앱에 데이터를 보낼 필요가 없습니다.웹 응용 프로그램에서 C# 콘솔 응용 프로그램으로 데이터 제출

업데이트

WCF는 실행 가능한 옵션이 아닌 것 같아, 그래서 이것은 .NET 2.0 콘솔 응용 프로그램입니다. 데이터 페이로드는 매우 작습니다 (총 9 바이트 ID 필드, 총 150 바이트 미만). 분당 약 10의 속도로 전송됩니다. 이 두 응용 프로그램 간에는 방화벽이 없습니다.

+0

이 원격 처리 중이거나 msmq가 질문에서 벗어 났습니까? – Joe

+0

그것들은 의문의 여지가 없지만 전에는 사용 해보지 않았습니다. 나는 지금 무엇이 가장 효과가 있는지보기 위해 그들을 조사하고있다. –

답변

0

가장 간단한 기술을 사용하면 콘솔 앱이 타이머 또는 BackgroundWorker가 제어하는 ​​루프에서 데이터베이스에 연결할 수 있습니다. 어떤 레코드가 새로운 레코드인지 알 수없는 방법이 필요합니다. 테이블을 폴링 할 때 해당 테이블에서 레코드를 삭제할 수 있다면, 그럴 때마다 새로운 레코드 만 가져옵니다. 삭제할 수없는 경우 해당 테이블의 TimeStamp 필드를 사용하고 폴링 할 때마다 이전 일괄 처리의 최대 타임 스탬프보다 큰 타임 스탬프로 레코드를 선택하십시오. 이러한 레코드를 처리 된 것으로 표시해야하는 경우 해당 플래그를 설정하고 타임 스탬프를 잊어 버릴 수 있습니다.

2

귀하의 요구 사항이나 설정이 확실하지 않지만 WCF은 옵션이 될 수 있습니다.

[편집]
확장하려면 콘솔 응용 프로그램에서 wcf 서비스를 호스팅하고 asp.net 사이트에서 호출 할 수 있습니다. 그 문제에 대해, 원격 (또는 다른 형태)도 잘 작동 할 수 있습니다. 이렇게하면 필요하지 않을 때 콘솔 응용 프로그램 풀을 데이터베이스에 저장할 필요가 없습니다.

+0

이것은 훌륭한 대답입니다. 나는이 요즘에이 해결책을 만들었습니다. 매력처럼 작동합니다. 처음에는 명명 된 파이프를 사용했지만 성능이 우수한 사이트에서는 너무 적습니다. 이제 WCF 서비스가 내 콘솔 응용 프로그램 (servicehost)에 호스팅됩니다 (실제 서비스가 완료되면 백그라운드를 실행하고 100 % 테스트 됨). – BerggreenDK

0

기본적으로 앱 통신을 원합니다. 많은 옵션이 있지만 실제로 (얼마나 많은 데이터, 얼마나 큰지, 얼마나 자주, 대기 시간), 환경 (방화벽 뒤, 온라인/오프라인, 복구) 등의 요구 사항에 따라 달라집니다.

데이터베이스 사용은 하나의 솔루션입니다. 그러나 웹 서비스 (wcf), 메시징 시스템 (msmq), .net 리모팅 등 다른 서비스를 사용할 수도 있습니다.