Send Class Data With lots of Field To Server

비대한 유저 데이터를 포스트데이터로 전송하기

1년 가량 서비스한 게임이다보니 , 유저 데이터가 정말 많았다 .

( 특히 클래스로 묶이기 보다는 밸류 타입의 데이터로 쪼개져 있기 때문)

유저 데이터 클래스 내의 변수( 필드 )만 400줄 가량 되는데 ,

이걸 아까 7시에서 8시 반까지

PostData.AddField( key , value );

형태로 옮겨 써야했다.

물론 통으로 제이슨으로 보내도 되겠지만 ,

페이스북 오픈소스인 Parse.com 서버를 쓰고 있는데

통으로 제이슨으로 박히기 보다는 유저 데이터 안에 한 필드당 하나의 칼럼으로

검색이나 필터링에 용이하게 만들고 싶어서 …

( 사실 제이슨으로 해서 서버단에서 해도 되겠지만,, 서버 개발자님이 우리 회사 직원은 아닌지라 클라 선에서 할 수 있는건 처리해야겠다 싶었다. )

처음엔 리플렉션을 쓸까 하다가

리플렉션은 iOS 에서 크래시가 나기 때문에 안쓰기로하고 -_-..

놀랍게도 저걸 일일히 보고 복붙해서 손으로 했다.

집에 일찍 와서 단잠을 자려고 누웠는데 그 순간,

해법이 생각나 버렸다.

원래 클래스 -> 제이슨 직렬화 -> 딕셔너리 <String, String>

위 순서대로 파싱하고 난 후에

Foreach ( var field_temp in 딕셔너리 ) { PostData.AddField( field_temp.key , field_temp.value );}

하면 된다 .

이 방법으로 하면 추가적인 이점이

PlayerData 만 수정하면 자동으로

서버 조작 부를 고칠 필요도 없다 .

( 노가다로 하면 일일히 고쳐야함 … )

유일한 단점이라면 모든 데이터를 string 으로 넘기는 것 정도

어짜피 postData field는 int or string 만 지원하기 때문에 ..

큰 의미는 없다. ( 기존 노가다 방식도 Convert 를 늘 해줬다. )