SlideShare a Scribd company logo
1 of 19
c# .net framework
 패스포트, 게임, 채팅, 메인
 8개월
 MSSQL 2008, Mongodb 64
 Windows server 2008
 IIS, CDN
 .net framework 4.5
 C# console, asp.net c#
 리니지 공성전?!
 성을 걸고 국가간의 싸움
 실제교전은 1대1로 진행
 Socket방식 연결유지형
 누적유저: 300,000
 최고레코드수: 200,000,000
 평균레코드수: 20,000,000
 순간최고동접: 8,000
 일일접속자수: 50,000
 = .net framework
 C++, java similar
 C#용 dll, 클래스라이브러리는 asp.net c#에서도
사용 가능
◦ 관리웹에서 몽고드라이버dll을 그대로 사용
 메모리침범 걱정 끝!
 예외를 던진다.
 현상
◦ 입력대기 오류 팝업창이 뜬다.
 그래서 unhandled???같은곳에서
◦ 기록남기고
◦ Environment.Exit(0); 로 프로세스 종료
 2가지의 자료구조를 가장 많이 사용
◦ List<???> list = new List<???>();
◦ Dictionary<int, ???> list = new
Dictionary<int, ???>();
 foreach(var ??? In ???)
◦ 자료구조의 저장방식/순서에 따름
◦ 읽기전용
 이런것의 반복) AES 암호화가 필요해
◦ 검색
◦ .net framework에 있네?
◦ 사용코드 숙지하고 적용
◦ 빌드>>실행>> 잘되네…
 C++ 사용자입장에선 유틸리티 쓰는 기분!
 Third party library지원이 풍부함
 List 등의 컨테이너에 주로 활용
 Select, order by, group by
 람다형
◦ Var query = (from e in ? where ? Select e)
 함수호출형
◦ List.OrderBy(row => row???).ToList();
 Like delegated
 동시에 1만개의 async가 발생시
◦ 제한된 쓰레드풀링으로 관리
 리턴이 필요없는 비동기 작업에 주로 활용
◦ mongodb 쿼리
◦ 서신쓰기
 실행순서를 보장 안함.
 로직은 쓰레드를 수동으로 만들어 사용
◦ SelectLordExecuter x1
◦ EngagementExecuter x5
◦ WarscoreWriter x4
◦ LogWriter x1
 헤더파일이 없네!
 “partial class” keyword
 컴파일속도는 30초 미만
 클래스 개수 - 약 400개
 기본 지원
 간단 사용
◦ var asm = Assembly.GetExecutingAssembly()
◦ var buff =
asm.CreateInstance(“GameWorldServer.CombatBuffs
.ArmyAttackUp”);
◦ public class ArmyAttackUp : CombatBuff
 어셈블리
◦ 빌드된 실행파일/DLL
 디버그모드로 서비스중!!!(설마!!)
 Release Stack Tracing
◦ 축약되어 있거나 아예 없는 경우도 있다.
 Debug Mode
◦ Stackstracing이 반드시 남음
◦ C#특징상 스택훼손은 잘 일어나지 않음
◦ 아직 release와 크게 차이는 안남
 class type identifier(식별자,변수)
◦ 레퍼런스형태로만 존재
◦ aClass a = new aClass();
 넘어가는객체와 넘겨받은객체
◦ A.func(a), public void func(aClass p)
 a,p 엄연히 다른 객체임 가리키는 값은 같음
 no ref passing
◦ Class는 레퍼런스(주소값)값이 복사되어 넘어감
◦ Structure는 내용전체가 복사되어 넘어감
◦ A.func(a), public void func(aClass p)
 p = new aClass(); //p is not a
 ref passing
◦ Declare: Public void func(ref ??? A1), Call: ???.func(ref ddd)
◦ A.func(a), public void func(aClass p)
 p = new aClass(); //p is a
 String str = “aaa” + i1 + “sdfsdf” + s1;
◦ + 마다 새로운 객체가 생성됨
◦ String.format() 내부에선 stringbuilder를 사용
 StringBuilder 추천!!!
◦ 최대버퍼(글자수,명시가능)내에서 사용
◦ 버퍼넘어서는경우에 새로운 객체 생성
 string like int,struct
◦ string a = “”; ddd.func1(a);
◦ String a = “”; ddd.func2(ref a);
 Array.Copy
◦ Like memcpy
 BitConvert
◦ Int >> byte
◦ Byte >> int
Q&A

More Related Content

What's hot

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
Esun Kim
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 

What's hot (20)

Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 
Node.js
Node.jsNode.js
Node.js
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기[NDC 2016] 유니티, iOS에서 LINQ 사용하기
[NDC 2016] 유니티, iOS에서 LINQ 사용하기
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 

Similar to 공성대전 C# 사용기

자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
destinycs
 
스레드
스레드스레드
스레드
xxbdxx
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
destinycs
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
min woog kim
 
Net debugging 3_전한별
Net debugging 3_전한별Net debugging 3_전한별
Net debugging 3_전한별
Han-Byul Jeon
 
웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap
Yu Yongwoo
 

Similar to 공성대전 C# 사용기 (20)

Effective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshinEffective c++ chapter1 2_dcshin
Effective c++ chapter1 2_dcshin
 
Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초Start IoT with JavaScript - 1.기초
Start IoT with JavaScript - 1.기초
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
 
스레드
스레드스레드
스레드
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
 
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdfASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
ASP.NET MVC Framework 개발자를 위한 Razor Syntax.pdf
 
Anatomy of Realm
Anatomy of RealmAnatomy of Realm
Anatomy of Realm
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
[Tool] cwb cqp
[Tool] cwb cqp[Tool] cwb cqp
[Tool] cwb cqp
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
Net debugging 3_전한별
Net debugging 3_전한별Net debugging 3_전한별
Net debugging 3_전한별
 
웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap웹 개발 스터디 02 - javascript, bootstrap
웹 개발 스터디 02 - javascript, bootstrap
 
JDK 변천사
JDK 변천사JDK 변천사
JDK 변천사
 

Recently uploaded

Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Recently uploaded (7)

[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption[Terra] Terra Money: Stability and Adoption
[Terra] Terra Money: Stability and Adoption
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 

공성대전 C# 사용기

  • 2.  패스포트, 게임, 채팅, 메인  8개월  MSSQL 2008, Mongodb 64  Windows server 2008  IIS, CDN  .net framework 4.5  C# console, asp.net c#
  • 3.  리니지 공성전?!  성을 걸고 국가간의 싸움  실제교전은 1대1로 진행  Socket방식 연결유지형
  • 4.  누적유저: 300,000  최고레코드수: 200,000,000  평균레코드수: 20,000,000  순간최고동접: 8,000  일일접속자수: 50,000
  • 5.  = .net framework  C++, java similar  C#용 dll, 클래스라이브러리는 asp.net c#에서도 사용 가능 ◦ 관리웹에서 몽고드라이버dll을 그대로 사용  메모리침범 걱정 끝!  예외를 던진다.
  • 6.  현상 ◦ 입력대기 오류 팝업창이 뜬다.  그래서 unhandled???같은곳에서 ◦ 기록남기고 ◦ Environment.Exit(0); 로 프로세스 종료
  • 7.  2가지의 자료구조를 가장 많이 사용 ◦ List<???> list = new List<???>(); ◦ Dictionary<int, ???> list = new Dictionary<int, ???>();  foreach(var ??? In ???) ◦ 자료구조의 저장방식/순서에 따름 ◦ 읽기전용
  • 8.  이런것의 반복) AES 암호화가 필요해 ◦ 검색 ◦ .net framework에 있네? ◦ 사용코드 숙지하고 적용 ◦ 빌드>>실행>> 잘되네…  C++ 사용자입장에선 유틸리티 쓰는 기분!  Third party library지원이 풍부함
  • 9.  List 등의 컨테이너에 주로 활용  Select, order by, group by  람다형 ◦ Var query = (from e in ? where ? Select e)  함수호출형 ◦ List.OrderBy(row => row???).ToList();
  • 10.  Like delegated  동시에 1만개의 async가 발생시 ◦ 제한된 쓰레드풀링으로 관리  리턴이 필요없는 비동기 작업에 주로 활용 ◦ mongodb 쿼리 ◦ 서신쓰기
  • 11.  실행순서를 보장 안함.  로직은 쓰레드를 수동으로 만들어 사용 ◦ SelectLordExecuter x1 ◦ EngagementExecuter x5 ◦ WarscoreWriter x4 ◦ LogWriter x1
  • 12.
  • 13.  헤더파일이 없네!  “partial class” keyword  컴파일속도는 30초 미만  클래스 개수 - 약 400개
  • 14.  기본 지원  간단 사용 ◦ var asm = Assembly.GetExecutingAssembly() ◦ var buff = asm.CreateInstance(“GameWorldServer.CombatBuffs .ArmyAttackUp”); ◦ public class ArmyAttackUp : CombatBuff  어셈블리 ◦ 빌드된 실행파일/DLL
  • 15.  디버그모드로 서비스중!!!(설마!!)  Release Stack Tracing ◦ 축약되어 있거나 아예 없는 경우도 있다.  Debug Mode ◦ Stackstracing이 반드시 남음 ◦ C#특징상 스택훼손은 잘 일어나지 않음 ◦ 아직 release와 크게 차이는 안남
  • 16.  class type identifier(식별자,변수) ◦ 레퍼런스형태로만 존재 ◦ aClass a = new aClass();  넘어가는객체와 넘겨받은객체 ◦ A.func(a), public void func(aClass p)  a,p 엄연히 다른 객체임 가리키는 값은 같음  no ref passing ◦ Class는 레퍼런스(주소값)값이 복사되어 넘어감 ◦ Structure는 내용전체가 복사되어 넘어감 ◦ A.func(a), public void func(aClass p)  p = new aClass(); //p is not a  ref passing ◦ Declare: Public void func(ref ??? A1), Call: ???.func(ref ddd) ◦ A.func(a), public void func(aClass p)  p = new aClass(); //p is a
  • 17.  String str = “aaa” + i1 + “sdfsdf” + s1; ◦ + 마다 새로운 객체가 생성됨 ◦ String.format() 내부에선 stringbuilder를 사용  StringBuilder 추천!!! ◦ 최대버퍼(글자수,명시가능)내에서 사용 ◦ 버퍼넘어서는경우에 새로운 객체 생성  string like int,struct ◦ string a = “”; ddd.func1(a); ◦ String a = “”; ddd.func2(ref a);
  • 18.  Array.Copy ◦ Like memcpy  BitConvert ◦ Int >> byte ◦ Byte >> int
  • 19. Q&A