2010-05-24 3 views
2

테스트하고 디버깅 할 Win32 App을 썼습니다. TCP 소켓 및 IBDatabase 구성 요소를 실행하는 데 필요한 모든 기능을 갖춘 데이터 모듈을 만들었습니다.서비스 응용 프로그램에서 Datamodule 사용

Datamodule을 Win32 응용 프로그램 환경에서 성공적으로 테스트 한 후 Datamodule을 내가 만든 Service Application 템플리트에 연결하려고 시도했지만 아무 것도 실행할 수 없습니다.

기본 서비스 기능을 캡슐화하는 구성 요소 기능을 갖춘 Datamodule을 사용하는 전략이 실제로 실행 가능한지 여부와 누군가가 그것을 연결하는 방법에 대한 간단한 템플릿 예제를 제공 할 수 있습니까?

답변

7

서비스 시작 이벤트에서 데이터 모듈을 만들고 초기화해야합니다. 데이터 모듈이 대화 상자 등을 열면 안되며, 절대로 들어올 수없는 입력을 기다리며 기다릴 것입니다 (서비스는 사용자 데스크탑과 통신 할 수 있지만 좋은 서비스는 피해야합니다). 그러나 코드를 보지 않고 무엇이 잘못되었는지 말하기는 어렵습니다.

1

예, 서비스 응용 프로그램에서 작동하는 DataModule을 가질 수 있습니다.
바로 중간 계층 앱 서버에 해당하는 내용입니다.

+0

소켓 서버를 꽂을 수 있습니까? –

+1

물론 가능합니다. 비 시각적 구성 요소를 그 위에 둘 수 있습니다. @ ldsandon의 답변을 참조하십시오. –

+0

코드를 통해 소켓을 만듭니다 ... –

2

다른 사람들이 언급했듯이 그렇습니다. 구현을 위해, 실제로 프로젝트 옵션에서 자동으로 데이터 모듈을 자동으로 만듭니다. 그렇다면 내 서비스 코드는 매우 가벼워서 다음과 같이 변합니다.

procedure TMyService.ServiceStart(Sender: TService; var Started: Boolean); 
begin 
    Started := myDataModule.Startup; 
end; 

procedure TMyService.ServiceStop(Sender: TService; var Stopped: Boolean); 
begin 
    myDataModule.Cleanup; 
    Stopped := True; 
end; 
관련 문제