본문 바로가기

프로그래밍37

Thread 사용시 주의할 사항 프로그램 개발 시 Thread를 사용하는 이유는 프로그램 내에서 여러 가지 작업을 동시에 처리하기 위해서인데 Thread를 잘못 사용하면 성능이 저하되는 경우가 있습니다. 가장 흔한 경우로 스케줄링을 체크하거나 반복적으로 특정 기능을 수행하는 작업을 Thread에 위임할 경우 아래와 같이 Thread.Sleep()을 주지 않고 실행하게 되면 해당 Thread는 CPU를 붙잡고 무한 반복하면서 맡은 작업을 수행하게 됩니다. MySchedule _mySchedule; // 스케줄을 담는 멤버 Thread scheduleChkThread; // 스케줄 체크 Thread // 스케줄 시작 public void Start( ) { IsRunning = true; scheduleChkThread = new Thre.. 2020. 5. 16.
WCF(Windows Communication Foundation) 서비스 개발[1] 이전 포스팅에서 WCF의 기본 개념과 핵심 키워드, 계약 선언 부분을 살펴보았습니다. 이번 포스팅에서는 실제 WCF 계약 선언과 서비스 타입 구현부를 어떻게 호스팅 프로세스에서 사용하는지 살펴보겠습니다. 먼저 서비스 계약 부분은 아래와 같이 선언했습니다. // 서비스 계약 선언 [ServiceContract] public interface IHelloWorld { [OperationContract] string SayHello{}; } 그리고 서비스 계약을 구현하는 클래스에서 아래와 같이 인터페이스를 상속받아 서비스 계약을 구현하였습니다. // 서비스 타입 구현 public class HelloWorldWCFService : IHelloWorld { public string SayHello{} { ret.. 2020. 5. 14.
WCF(Windows Communication Foundation) 서비스 개발[0] '서버와 클라이언트 간의 통신을 어떻게 구현할 것인가?' 하는 부분은 프로젝트 개발 시 항상 고민의 대상이 됩니다. 보통은 .NET Framework의 Socket 클래스를 이용하여 TCP 또는 UDP로 개발을 하곤 했지만 이번에 새롭게 WCF(Windows Communication Foundation)을 적용해 보았습니다. 개발하면서 참고했던 도서는 '유수석의 WCF 바이블'인데, WCF의 기초적인 프로그래밍 기법부터 고급 기능을 포함하는 WCF 확장 부분까지 자세한 설명이 있어서 도움이 많이 되었습니다. 여기서는 도서의 내용을 참고하여 WCF에 대한 기본 내용을 정리하는 개념으로 포스팅을 올리고자 합니다. WCF의 정의는 XML 웹 서비스 기반의 차세대 서비스 통신 프레임워크라 할 수 있습니다. 뭔가.. 2020. 5. 13.
프로세스간 메시지 전송[1] 이전 포스팅에서 Window Message를 이용해서 프로세스 간에 COPYDATASTRUCT 구조체를 메시지로 전송하는 방법을 살펴보았다. (이전 포스팅 보기) 이번 포스팅에서는 IPC를 이용한 메시지 송수신 방법을 살펴보고자 한다. 먼저 간단하게 IPC통신이 무엇인지부터 살펴보자. IPC는 Inter Process Communication의 약자로 커널 영역에서 제공하는 내부 프로세스간 통신을 이용해서 그 기능을 구현할 수 있다. IPC의 종류에는 PIPE, Named PIPE, Message Queue, Shared Memory, Memory Map, socket 등이 있지만 여기서는 Shared Memory를 이용하여 기능을 살펴보고자 한다. 먼저 솔루션을 만들어 주고 하나의 DLL 라이브러리 프.. 2020. 5. 5.