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 은 함수 이름을 적어 줍니다.
위와 같이 간단히 웹서버를 구축하여 모듈화 할수 있습니다.