Api 관련 질문드립니다.

흔히 Http 를 통해 POST, GET 방식을 HtmlBody 형식이나 Json 형식으로 데이타를 보내는 것은
알고 있는데
제가 금요일에 웹서버단에서
이런방식으로 CURL 라이브러리를 이용하여 제 로컬 와치독프로젝트에 EMBEDIO (웹서버)로
데이타를 보냈습니다. 10만건을요…
1000건 정도마다 0.01 인가 0.001 초마다 sleep 과 flush 등을 했습니다.
이렇게 하니깐 20분 걸렸습니다.

요약 제컴퓨터에서 웹서버 => 와치옥시비스(C#) 으로 10만건의 DB에서 JSON 변환 후 데이타 전송
EmbedIO 에서 건바이건 만 되더라고요 다중 레코드를 오류냅니다. 20분 좀 아니 많이 긴거 같아요

구글링 하다 보니깐 EmbedIO 에서 아래처럼 Stream 방식으로 예제? 가 있더군요
그런데 Router 보니깐 Post 로 되있네요 … 제가 C#에서 HttpWebRequest 를 써본적이 있는데
저런거와 비슷했던거 같습니다.
저러한 방식 , 기술을 정식적으로 뭐라고 부르나요?

그리고 EMBEDIO 사용하신 분 대량의 데이타 처리 관련해서 조언 부탁드립니다.

[WebApiHandler(HttpVerbs.Post, "/api/login/")]
public bool PostCredentials(WebServer server, 
                            HttpListenerContext context)
{
 try {
   StreamReader reader = new StreamReader(context.Request.InputStream);
   string userJson = reader.ReadToEnd();
   var user = JsonConvert.DeserializeObject(userJson);

   if (Users.Contains(user)) {
    return context.JsonResponse(new { access_token = "abc123", 
                                      expires_in = 12345678 });
   }

   return false;

 } catch (Exception ex) {
    return HandleError(context, ex, 
                       (int)HttpStatusCode.InternalServerError);
 }
}
2개의 좋아요

웹서버 (WAS?) 에서 일반적인 Http + post + json ( or etc) 등으로 보낼 때

C#서버( 이부분을 뭐라 불르나요 앱서버인지?) 에 Embed 된 웹서버에서는 그냥 Stream으로 받을 수
있는건가요? 그럼 구지 왜 라우터표현에서 POST 를 왜 하는 거죠? 스트림으로 받는것이 GET, POST 와
관련있나요?

1개의 좋아요

글 내용을 이해못했는데 스트림으로 보내고 받는 이유에 대해 물어보신건가여??

2개의 좋아요

저런 방식이나 기술을 그냥 Stream 이라고 부릅니다.
우리가 데이터를 로드할 때 특정 변수를 만들어 넣는다면 그건 메모리에 적재됩니다.
해당 데이터가 크면 클 수록 메모리에 적재하는게 부담일 수 있습니다.
이럴 때 Stream을 활용할 수 있습니다.

Stream은 '데이터를 읽는 방법’을 가지고 있습니다.
즉, 데이터 전체를 메모리에 적재하지 않고 필요한 순간에 1byte씩 읽어 처리하도록 할 수 있습니다.
읽는 방법을 알고 있는 놈이기 때문에

2개의 좋아요