IR 명령 라우팅을 위해 GlobalCache GC-100-12와 통신하는 서버 응용 프로그램 (싱글 톤, 간단한 .NET 콘솔 응용 프로그램)이 있습니다. 로컬 네트워크의 다양한 .NET WinForm 클라이언트가 내 서버 응용 프로그램에 연결하여 ASCII 명령을 전송합니다. 서버 응용 프로그램은 이러한 ASCII 명령을 대기열에 넣은 다음 TCP 연결을 통해 GC-100-12로 보냅니다.C#에서이 TCP 연결을 처리하는 가장 좋은 방법은 무엇입니까?
제 질문은 서버의 관점에서이 연결을 처리하는 가장 좋은 방법은 무엇입니까?
생성 및 각 개별 요청에 대한 새로운하여 TcpClient를 엽니 다 : 나는 두 가지 방법으로 생각할 수 있습니다. 요청이 완료되면 TcpClient를 닫습니다.
서버가 시작될 때 하나의 TcpClient를 만들고여십시오. 필요한 경우 연결 유지를 사용하여 서버 개체의 수명 동안 연결을 열어 두십시오.
각 요청마다 새 TcpClient를 만드는 오버 헤드가 궁금하기 때문에이 질문을드립니다. 그것은 비싼 수술입니까? 이것은 나쁜 습관입니까?
현재 # 1을 (를)하고 각 전송 결과를 콘솔에 인쇄하고 있습니다. 때로는 일부 연결 시간 초과 및 명령 라우팅되지 않습니다 및 매번 새로운 TcpConnection을 만드는 오버 헤드 때문에 또는 그것이 다른 이유로 인한 것인지 궁금 해서요.
연결이 끊어지면 다시 만들어야하고 그 상황을 처리하는 데 약간 더 많은 코드가 필요하기 때문에 # 2가 더 복잡하다는 것을 알 수 있습니다.
이에 대한 일반적인 조언을 찾고 있습니다. TcpClient 클래스에 대한 많은 경험이 없습니다.