개발중 또는 개발후에도 NexusDB에서 nxEnterpriseManager를 사용하는 방법.

안녕하세요.

NexusDB를 소개하고 많은 시간이 흘렀습니다. 게으름에 사용 방법을 올려야 하는데, 저도 이게 정석인지 아닌지 몰라 고민하다가 그냥 공개를 합니다. ( 이글은 초보용이 아닙니다. 약간의 지식이 필요합니다. )

일단 NexusDB는 DB를 사용하면 그 폴더안의 내용을 락을 겁니다. 그래서 공유할수 없도록 합니다.
그래서 개발자들이 실행중 또는 개발중에 nxEnterpriseManager를 사용하는데 고생을 합니다.

그래서 제가 쓰는 꽁수를 소개합니다.
이것이 정석이라고 할수 없습니다.
단지, 팁으로만 보시고 더 훌륭한 방법이 있으시면 공유 부탁 드립니다.

일단 DataModule에서 간단히 아래와 같이 디자인 합니다.

그림이 좀 이상하죠?
결국 로컬서버(?)를 이용하여 DB를 읽어 오는 설계는 같습니다. 단지 하나를 2개를 더둬서 My_WinsockTransport와 My_SharedmemoryTransport를 놓고 이넘들이 서버에 붙은 listner가 되도록 합니다.

그리고 ‘서버ServerEngine’이라는 넘들은 My_ServerEngine을 읽어오는 넘들입니다. 그냥 이름을 ‘서버’라고 붙인것은 제 맘 입니다( ^^; ).
위 그림에서 화살표는 My_Winsocktransport의 내용을 ‘서버WinsockTransport’의 내용이 받아 먹는다 라고 생각 하시면 되겠습니다.

‘서버WinsockTransport’의 ServerName을 ‘127.0.0.1’로 합니다.

이제 중요한 ‘내꺼Session’을 설정하는 부분인데, 디자인 타임이나 개발중에는 내꺼의 ServerEngine을  ‘서버WinsockTransport’로 설정합니다.
그리고 MyServerEngine.active := False로 합니다.
그럼.. nxServer.exe를 띄워 놨기 때문에 거기서 내용을 읽어 처리 합니다.
nxServer.exe를 사용하기 때문에 nxEnterpriseManager를 사용하는데는 전혀 지장없이 사용 가능합니다.

베포용이나 실행용은 반대로  ‘서버WinsockTransport.Active := False’로 설정하고, 내꺼Session.ServerEngine을 My_ServerEngine으로 설정합니다. (이부분은 INI파일을 만들어 사용하시면 편리 합니다.)
< 참고 : 베포용을 테스트하실때는 nxServer.exe를 잠시 Stop상태로 하셔야 겠죠? >

그리고 Winsocktransport의 포드가 16000 이기때문에 베포용이 실행중일때에도 nxEnterpriseManager의 사용이 가능합니다. ( 단 베포용 프로그램이 종료되면 nxEnterprisemanager는 동작하지 않습니다. 당연하지만.. )

전체적인 요지를 정리하면….
디자인 타임의 경우
1. nxServer.exe를 띄우고,
2. 서버ServerEngine을 Active True하고 My_ServerEngine을 Active False해서 nxServer.exe에 접속 한 다음
3. 내꺼Session에서 ServerEngine을 ‘서버ServerEngine’으로 설정 한 뒤에 개발을 합니다.

개발이 완료되면
1. nxServer.exe를 잠시 끄고
2. 서버ServerEngine을 Active False하고 My_ServerEngine을 Active True하고
3. 내꺼Session에서 ServerEngine을 ‘My_ServerEngine’으로 설정 한 뒤에 Test를 합니다.

이런식으로 DataModule Create부분에 코딩을 해놓으시면, 충분히 쉽게 개발이 가능하리라 봅니다.

참고만 하시길….

Author: yyjksw