noob
582
2018-05-11 02:39:21 작성 2018-05-11 02:40:29 수정됨
4
1207

C# 윈폼 프로그램에서 바로 웹페이지로 데이터를 전송하는 방법이 있나요?


웹 페이지에 실시간 데이터를 보여주는 방법에 대해서 질문드립니다.


현재 구성은


이렇게 되어있습니다.

윈폼 프로그램은 여러개의 장비와 통신을 하여 데이터를 받아오고 받은 데이터를 바로 DB로 insert 합니다. (2~3초 마다 DB로 insert를 합니다)

웹페이지에서는 서브쿼리를 이용해서 각 장비별 최신 데이터를 받아오고 HTML테이블을 이용해 웹페이지에 실시간 데이터를 보여줍니다.


처음에는 서브쿼리를 해도 속도가 빨랐었는데 DB에 데이터가 몇십만개 ~ 백만개 정도 되니 속도가 너무 느려져서 방식을 바꿔야 할거 같습니다.


그래서 생각해낸 방법이 있는데 이 방법이 가능한지 잘 모르겠습니다.

윈폼 프로그램에서는 그대로 DB에 데이터를 넣고, 추가로 웹페이지에 데이터를 전송하고 웹페이지에서는 따로 DB를 안 거치고 바로 받은 데이터를 HTML테이블에 표시해 주는 방법인데

가능한 방법인가요? 아니면 더 좋은 방법이 있나요?

0
0
  • 답변 4

  • 메로니에
    504
    2018-05-11 08:56:04

    디비에서 쿼리 조회할때 인덱스를 태우고계신가여??

    디비쪽 성능을 체크해보시고, 개선해보는것도 좋은 방법이될것같은뎁..ㅎㅎ

    0
  • 아스키
    10k
    2018-05-11 09:34:54
    메로니에님 말씀처럼 DB 성능 개선이 우선입니다. DB 조회 튜닝등을 요청하세요..
    0
  • 저기봐라
    797
    2018-05-11 10:35:38 작성 2018-05-11 10:36:17 수정됨

    DB를 통하지 않고 바로 URL을 호출해도

    업무상 문제가 없는지 부터 확인해봐야 될 것 같네요


    그리고 윈폼에대해서는 잘 모르지만

    구글에 "winform url 요청"로 검색해보면 

    C#에서는 HttpWebRequest 이용하면 된다고 하는 글들이 좀 보이네요

    0
  • noob
    582
    2018-05-11 21:56:05

    답변들 감사합니다.

    DB 조회 속도 개선하는 방법들도 찾아봤는데 제가 제대로 적용을 못한건지 차이가 없었습니다 ㅜ


    select t1.* from data as t1, (select id, max(time) as max_sort from data group by id) as t2 where t1.time = t2.max_sort and t1.id = t2.id and time > DATE_ADD(now(), INTERVAL - 10 second) and location_id=0 order by t1.id*1 asc; 

    여기서 id : 장비의 id // time : 데이터 insert 시간 // location_id : 장비가 설치된 위치

    입니다.

    EXPLAIN으로 쿼리문을 실행해보면 type이 ALL 로 나오는데 이걸 어떻게 처리해야 할지 모르겠습니다 ㅜ

    혹시 시간이 되신다면 조언좀 해주시면 감사하겠습니다 

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.