안녕하세요, ASP.NET을 사용하는 미천한 개발자입니다.
다름이 아니라 현재 회사에서 L7 레이어에서 독자적으로 개발한 네트워킹 프로토콜 인프라와 해당 네트워킹 프로토콜을 지원하는 서비스를 개발하기 위한 프레임워크(C++ 베이스)가 있는데 이제 모던 언어로 넘어가야 하는 포인트에 마주치게 되었습니다.
L4 (TCP 기반)를 이용한 L7 레이어를 독자 개발하여 (HTTP 스펙과 유사한) 자체 라우팅 시스템 인프라를 갖추고 서비스가 돌아가고 있는데요.
이러한 네트워크 인프라 시스템에서 동작하는 서비스 어플리케이션을 C++로 개발 및 유지보수를 하는것에 한계에 부딪히게 되어 이참에 모던 언어로 새로운 프레임워크를 개발하려 합니다. (기존 인프라에 호환되는)
이에 따라 ASP.NET의 웹 서버를 제외한 프레임워크 기능을 사용하며 서버는 자체 라우팅 시스템에 호환되는 서버를 내장하여 ASP.NET의 풍부한 기능들을 모두 활용하면서 손 쉽게 비즈니스 서비스 어플리케이션을 개발하기 위함이 목적입니다.
진행 방향은 ASP.NET의 기초 뼈대인 ApplicationBuilder를 이용하여 ASP.NET Http 미들웨어 파이프라인을 직접 생성하여 회사의 자체 L7 프로토콜과 호환되는 서버가 I/O를 담당하고 요청된 메시지에 대해HttpContext를 직접 생성하여 파이프라인을 통과 하게끔 설계하였습니다.
(물론 Http 기반으로 모두 바꾸는것이 제일 베스트이지만 이러한 부분은 쉽지가 않습니다…)
현재 프로토타이핑으로 성공적으로 기능이 잘 작동하며, 이제 ASP.NET의 MVC 기능과 같은 풍부한 기능들을 활용 할 수 있게 되었습니다. (커스텀 프로토콜 ↔ Http의 변환 레이어가 있지만 이는 코스트가 크지가 않습니다.)
다만, 걱정되는 부분은 이렇게 사용하는 케이스가 있는지? 그리고 이러한 형상으로 유지보수를 하고 있는 분들이 계실지 궁금합니다.
마이크로소프트에서도 ApplicationBuilder 자체를 public으로 노출 시켰다는 것은 이렇게 직접 사용해도 된다는 의미로 받아들였습니다.
초기에 이러한 아이디어로 리서칭을 했을때 이러한 Needs가 있는 여러 스택오버플로우 글들을 보았는데요.
이러한 방향성이 괜찮을지 닷넷데브의 수많은 경험을 가지신 개발자분들의 의견을 여쭙고 싶습니다.
PS. 참고한 스택오버플로우 링크: Programmatically invoking the ASP.NET Core request pipeline