ASP.NET Core 하나의 호스트에서 http와 socket 통신 같이 하기
ASP.NET Core의 Kestrel을 사용하여 TCP Socket 프로그래밍을 할 수 있다.
MultiProtocolAspNetCore 프로젝트의 Program.cs 파일의 내용은 아래와 같다.
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
// TCP 8007
options.ListenLocalhost(8007, builder =>
{
builder.UseConnectionHandler<MyEchoConnectionHandler>();
});
// HTTP 5000
options.ListenLocalhost(5000);
// HTTPS 5001
options.ListenLocalhost(5001, builder =>
{
builder.UseHttps();
});
})
.UseStartup<Startup>();
ASP.NET Core이니 http는 당연하고, http 아래 단의 socket 통신도 직접 컨트롤 할 수 있다.
위 파일에서 http 부분을 제거하고 좀 더 기능을 구현하면 고성능 비동기 IO tcp socket 서버를 쉽게 만들 수 있다.
위 프로젝트는 TCP Socket으로 Echo 기능을 구현하고 있다.
이 글은 2019-01-28에 작성되었습니다.