클라이언트 서버 응용 프로그램에 전자 메일 알림을 추가해야합니다.클라이언트가 잠재적으로 인터넷에 연결되어 있지 않은 2 계층 응용 프로그램에서 전자 메일 알림을 보내는 것에 대한 제안
알림은 사용자가 클라이언트 UI에서 특정 작업을 수행 할 때 발생합니다. 나는 중간 계층 또는 서버에서 실행되는 서비스가 있다면
나는 그것을 수행하는 방법을 상상할 수 :
1) 단순히 사용자로 "보류 통지"
2)와 DB 테이블을 생성 알림을 생성하는 작업이 나는 테이블에 레코드를 추가 않습니다
3) 서버 측 나는 계속 그 메일을 보내려고 한 번 전송 테이블에서 제거하는
지금 내가 지금이 작업을 수행 할 수 없습니다 성공적인입니다 것입니다, 나는 계획을 가지고있다. 나중에 서비스를해라. 그러나 당장 나는 빨리 더러운 길로 가야한다.
그래서 어떻게 든 내가 무슨 생각 같은 것을 구현하는 것입니다하기 : 실패시
1)은 통지 가치 이벤트가 클라이언트에서 발생, 같은 클라이언트 (내 EXE)는 통지를 보내려고 시도로 그것을 "pending notifications"테이블에 알림을 로깅합니다 (인터넷 연결 또는 기타 문제로 인해 실패 할 수 있음)
2) 보류중인 알림을 확인하기 위해 모든 클라이언트 컴퓨터에서 작동하는 타이머를 추가합니다. 클라이언트가 전자 메일을 보내려고하면 (트랜잭션을 사용하여 필드를 "TryngToSendFromClientX"로 표시하고 실패 할 경우 해당 필드를 NULL로 재설정합니다)
이 접근 방식은 (서비스가 실패한 경우 아무도 시스템에 로그인하지 않으면 아무런 통지도 보내지 않을 것입니다. 서비스가 "다운"되는 경우에도 마찬가지입니다). 그러나이 접근 방식에 대해 의견을 제시하고 더 나은 접근 방식을 제안 할 수 있습니까?
추가 참고 (더 나은 시나리오를 이해하기) :
A) 참고 : 모든 알림이 같은 전자 메일 계정에서 전송됩니다.
b) 전자 메일을 보낸 사람을 추적 할 필요가 없습니다.
c) 서비스를 만드는 문제는 기본적으로 배포가 복잡해 지므로 서비스 상태를 모니터링하는 도구를 만들어야한다는 것입니다. 내가 미래에 할 것이지만 지금은 안될 것이지만 앞으로는 더 많은 기능을 서비스에 추가 할 계획이 있으므로이 경우에는 서비스를 만드는 것이 더 합리적입니다.
d) Indy 구성 요소와 SMTP 서버를 사용하여 전자 메일을 보냅니다.
bepe4711 답변을 완료 해 주셔서 감사합니다. – LaBracca