2017-10-20 3 views
-1

그래서 서비스와 양식이있는 프로젝트를 설치했습니다. 이 서비스는 양식에서 만드는 XML 파일을로드합니다. 경로 수리 및 양식 AppDatas이XML을 사용하여 서비스와 양식을 올바르게 통신하는 방법

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

나는 사용자 계정이 아닌 로컬 시스템에 서비스를 설치해야했습니다 사용 다르기 때문에 문제입니다. 대부분의 서비스가 로컬 시스템으로 설치되어 있음을 알게되었습니다. 이것이 서비스의 성능에 어떤 영향을 미치지 않습니까? 아니면 더 좋은 방법이 있습니까?

+0

시스템에 환경이 없으므로 폴더에 대한 경로가 없습니다. 정상적인 프로세스는 관리자 계정으로 프로젝트를 만든 다음 관리자로 실행하는 것입니다. 사용자 계정으로 실행하는 것은 동일하지만 사용자가 사용자가 아닌 한 수정 권한이 있습니다. 성능은 서비스의 우선 순위 설정을 기반으로합니다. 종종 시스템 서비스로 실행되는 서비스는 정상적인 우선 순위로 실행되도록 설정되어 운영 체제 성능에 영향을 미치지 않습니다. 따라서 모든 서비스는 요구 사항에 따라 우선 순위를 설정해야합니다. – jdweng

답변

0

귀하의 질문은 너무 광범위하게 이루어져 있습니다. 시나리오에 접근 할 수있는 많은 방법이 있습니다. 그렇다면 구현이 이미 있으므로 특정 부분을 처리 할 수 ​​있습니다.

먼저 서비스가 해당 계정에서 올바르게 작동한다고 가정 할 때 일반 사용자로 실행하는 것이 좋습니다. 이상적은 아니지만 아무런 상처를 입히지 않아야합니다. 일반적으로 서비스에는 상승 된 권한이 필요합니다.이 권한은 먼저 서비스이고 로컬 시스템 또는 로컬 서비스 계정으로 실행되는 이유입니다. 그러나 서비스에 이러한 권한이 필요하지 않은 경우 사용자 계정을 사용하는 것이 좋습니다.

GUI 프로그램이 서비스가 감시하고 읽는 특별한 위치에 XML 파일을 작성하여 서비스를 제어하는 ​​것처럼 사용자의 설명에서 들립니다. 파일 시스템을 프로세스 간 통신 (IPC)의 한 형태로 사용하는 것은 그 자체로 이상적인 것이 아니며 다른 접근 방식을 권장합니다.

이미 XML 기반 I/O가 있으므로 명명 된 파이프 또는 기타 네트워크/소켓 기반 IPC를 사용하는 것이 좋습니다. StreamWriterStreamReader에 스트림 객체 (예 : PipeStream 또는 NetworkStream)를 래핑 한 다음 이미 사용중인 일반적인 XML 항목을 사용하여 그에 따라 읽고 쓸 수 있습니다.

또 다른 대안은 WCF입니다. 약간의 학습 곡선이 있습니다. 데이터를 전송하는 데 사용되는 정확한 직렬화에 대한 제어력은 약간 떨어지지 만 Visual Studio의 지원을 통해 XML/직렬화 측면을 구현하는 데 드는 시간을 단축 할 수 있다는 이점이 있습니다. Visual Studio에 추가하여 서비스의 새 클라이언트를 만들 수 있습니다. IDE는 서비스에 연결하기 위해 필요한 데이터 구조와 구성을 작성합니다.

두 경우 모두 로컬 시스템 계정으로 서비스를 실행할 수 있으며 일반적인 서비스와 마찬가지로 지금 요청하는 문제는 사라집니다. :)