알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)
간단한 C# 웹서버 라이브러리 (SimpleHttpServer) 본문
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 은 함수 이름을 적어 줍니다.
위와 같이 간단히 웹서버를 구축하여 모듈화 할수 있습니다.
'C# tip' 카테고리의 다른 글
CefSharp chrome run javascript (0) | 2018.08.13 |
---|---|
Datatable Merge(병합) 하기 (0) | 2018.07.19 |
Datatable 을 csv (엑셀)출력 하는 소스 (0) | 2018.07.19 |
mono linux 최신 버전 build 하기 (0) | 2018.07.11 |
C# restful 만들기 좋은 webserver opensource(embedIO) linux 사용 (0) | 2018.06.26 |
Comments