클래스 구조 만드는 것에 대한 질문..
글쓴이: balgarac1 / 작성시간: 수, 2015/11/25 - 12:11오전
첨부 파일에 프로그램의 요구 사항이 나와 있습니다.
프록시 게이트웨이를 c++ 로 짜는 과정 중에 프록시 게이트웨이에 대해서 상속과 다형성을 적용해보라는 추가 요구를 받았습니다.
지금은 프록시 게이트웨이가
class CNetwork { public: CNetwork(); ~CNetwork(); int CNetworkRelayInit(); int CNetworkRelayConnectDBServer(); void CNetworkRelayMultiplexing(); private: int m_nSock; int m_nClntSock; int m_nDBSock; int m_FdMax, m_StrLen, m_FdNum, m_i; int m_nPacketSize; UB2 m_ubMsgType; struct sockaddr_in m_ServAddr; struct sockaddr_in m_ClntAddr; struct sockaddr_in m_DbAddr; struct timeval m_timeout; char m_pBuf[2048]; fd_set m_reads, m_cpy_reads; socklen_t m_adrSz; // 로그인 패킷 구조 dgt_auth_req_msg m_LoginReqMsg; dgt_auth_res_msg m_LoginResMsg; // SQL 패킷 구조체 dgt_sql_req_msg m_SqlReqMsg; dgt_sql_res_msg m_SqlResMsg; // 종료 처리 패킷 구조체 dgt_close_req_msg m_CloseReqMsg; dgt_close_res_msg m_CloseResMsg; // broken packet 구조체 dgt_broken_packet_msg m_BrokenPacketMsg; // SQL 처리 시 필요한 문자열 char m_szSqlText[2025]; char m_szTmp[1025]; char *m_pStr; int m_SqlTypeRetValue; // 소켓 기능 별로 저장할 변수 queue<int> m_nLoginSocket; queue<int> m_nSqlSocket; queue<int> m_nCloseSocket; // 패킷 수신 int CNetworkRelayRecvPacket(char * m_pBuf, UB2 * msgType, int *); // 패킷 식별 void CNetworkRelayCheckMsgService(char *, UB2, int); // 로그인 요청 및 응답 중계 void CNetworkRelayAuthService(int); void CNetworkRelayAuthResService(); // SQL 요청 및 응답 중계 void CNetworkRelaySqlService(int); void CNetworkRelaySqlResService(); // 종료 요청 및 응답 중계 void CNetworkRelayCloseService(int); void CNetworkRelayCloseResService(); // SQL 타입 체크 int CNetworkRelaySqlTypeCheck(char *); // 잘못 온 패킷 처리 void CNetworkRelayBrokenPacketService(); };
이런 식으로 하나의 클래스 안에 만들어져 있는데
메세지가 100개 정도로 늘어나게 된다면 이런 프록시 게이트웨이 구조에서는 다소 비효율적인 구조로 처리할 수 밖에 없을 것 같아서 질문 드립니다.
어떻게 이 클래스를 분할하는 것이? 상속과 다형성을 살릴 수 있는 방향일까요??
네트워크를 처리하는 클래스와 메세지를 처리하는 클래스를 따로 갖고 있어야 할까요??
처리해야 할 메세지가 100개라면 어떤 식으로 클래스를 디자인해야 좋은 구조를 갖고 있는 프로그램이 될까요??
조언 부탁드립니다..
Forums:
어렵네요.
요구사항에 대한 내용이라면.
- 요청자에게 메시지 형식을 지정해주시면. 규격문서를 받아서 프로그램에서 사용하실 수 있습니다.
- 패킷 단위로 클래스를 분할해서 상속 및 구현
- 중복패킷은 전송하지 않고. 약속된 시간에 처리
- 메모리를 네트워크 하드처럼. 공유해서 원하는 정보를 READ WRITE
굳이 상속해야 할지는 잘 모르겠습니다.
[KGC2007] Thin Transaction Clients:빠르고 효과적인 게임의 보급
http://www.kocca.kr/cop/bbs/view/B0000180/1289624.do?searchCnd=3&searchWrd=Thin+Transaction+Client&cateTp1=&cateTp2=&useAt=&menuNo=200953&categorys=0&subcate=0&cateCode=&type=&instNo=0&questionTp=&uf_Setting=&recovery=&pageIndex=1
[구글 I/O 2015] 구글 I/O에서 공개된 구글의 10가지 혁신 (1)
http://it.donga.com/21330/
CDN / AOP / REST API / SOAP / XML / XAML / HTML5 / JQuery / Node.js / Ext.js
IOCP / Overlapped I/O / AsyncSocket / ACE Network
도서관. 서점에서 TCPIP 나 게임 네트워크 관련. 책 보시면 많이 있습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
아..
잘 이해가 안되는데요.. 혹시 게임 네트워크?? 쪽 책 추천 하나만 해주실 수 있나요??
아니면 말씀해주신 것이 json 방식의 통신 방식 인가요??
댓글 달기