알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

간단한 C# 웹서버 라이브러리 (SimpleHttpServer) 본문

C# tip

간단한 C# 웹서버 라이브러리 (SimpleHttpServer)

백곳 2018. 3. 30. 08:33

SimpleHttpServer



C# 을 하는데 asp 프레임 워크 까지 크게 만들것이 아닌 소형화 모듈을 만드는데 필요 해서 사용 하게 되어서 적어 봅니다. 


사용 목적은 단순히 C# 라이브러리을 사용 해야 하는데 라이브러리로 얻어야하는 데이터를 웹 서버로 형식으로 


데이터를 건네 받기 위함입니다. 


https://github.com/jeske/SimpleHttpServer


위의 사이트가 해당 오픈 소스 사이트 입니다., 


사용법은 단순 합니다. 



자신의 프로젝트에 해당 오픈 소스 프로젝트를 다운 받아 import 해 줍니다. 


저는 일반적인 서비스 프로그램을 만들어서 프로젝트내에 위와같은  Service 프레임을 가지게 되었습니다. 


실제 소스는 main_thread.cs 와 Routes.cs 에 의해 가동 됩니다. 



using SimpleHttpServer;

namespace NS_Web_Service.Threadclass
{
class main_thread
{
public main_thread()
{
HttpServer httpServer = new HttpServer(8282, Routes.GET);

Thread thread = new Thread(new ThreadStart(httpServer.Listen));
thread.Start();
}
}
}





namespace NS_Web_Service.Threadclass
{
static class Routes
{
public static List<Route> GET
{
get
{
return new List<Route>()
{
new Route()
{
Callable = HomeIndex,
UrlRegex = "^\\/$",
Method = "GET"
},new Route()
{
Callable = testIndex,
UrlRegex = "^\\/get_data",
Method = "GET"
}
};

}
}
private static HttpResponse testIndex(HttpRequest request)
{
return new HttpResponse()
{
ContentAsUTF8 = "TEST",
ReasonPhrase = "OK",
StatusCode = "200"
};
}

private static HttpResponse HomeIndex(HttpRequest request)
{
return new HttpResponse()
{
ContentAsUTF8 = "Hello",
ReasonPhrase = "OK",
StatusCode = "200"
};
}
}
}



라우터 에서  


UrlRegex 를 보면 감이 오신 분들도 있지만 정규 표현식을 사용 하여 route 를 해줍니다. 



callable 은 함수 이름을 적어 줍니다. 


위와 같이 간단히 웹서버를 구축하여 모듈화 할수 있습니다. 



Comments