SlideShare a Scribd company logo
1 of 69
3일차: 닷넷분산 기술의 이해 박경훈
인피니트 닷넷교육 1일차 – 닷넷 소개, C#특징 2일차 – UI 기술 WPF, Expression Blend 소개 3일차 – 닷넷 분산 통신기술의 소개 4일차 – 프로젝트 설계 및 팀시스템, 유닛테스팅 5일차 – C# 3.0과 C#4.0 추가된 문법 살펴보기
강사소개 현) 캠든소프트 대표이사      국내 닷넷 최대 커뮤니티 “HOONS닷넷” 운영자국제 닷넷 연합 그룹회 한국 유저그룹 리더 전) 2002~2010 소프트웨어 엔지니어로 활동     2005년 마이크로소프트 최연소 MVP수상     2005~2010년 마이크로소프트 Visual C# MVP     10여권의 IT개발 서적 집필 및 번역      KBS 미래를 짊어질 젊은 주역 60명 선정
진행순서 ,[object Object]
WCF의 소개
WCF 도입 사례,[object Object]
분산 기술의 발전사 닷넷 1.0 ~ 닷넷4.0 ~현재 COM+ WCF DCOM COM+ COM DCOM DLL MTS 웹서비스 웹서비스  & WSE(ws-*) 리모팅 서비스 MTS MSMQ 닷넷 리모팅서비스
닷넷 엔터프라이즈 서비스 DCOM MTS + DCOM
닷넷 엔터프라이즈 서비스 MTS
로컬 트랜잭션 vs 분산 트랜잭션 Client Server Accounts ADO.NET Account A Local Transaction Account B OLE DB SQL TDS Client Component A Component B DCOM TXID=1234 TXID=1234 Distributed Transaction Coordinating DTC Participating DTC TM Protocol Account A Account B TXID=1234 TXID=1234 Server A Server B
COM+ 처리 예제 코드 [Transaction(TransactionOption.Required)] class A : ServicedComponent {   [AutoComplete]   public void foo()   {     B obj = new B();     try {      obj.TransactionTest();    }     finally {      obj.Dispose();    }   } }   [Transaction(TransactionOption.Supported)] class B : ServicedComponent {   [AutoComplete]   public void TransactionTest() {    // 데이터베이스 액세스 코드} }
닷넷리모팅 서비스 프로토콜 분산 어플리케이션을 위한 기반 다른 프로세스/장비간 통신 DCOM 을 대체한다.
닷넷리모팅 서비스
리모팅 서비스
닷넷 웹 서비스의 등장 배경
웹 서비스의 구조
웹 서비스 메시지 소개 SOAP Envelope <soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > <soap:Header>   <UserName>홍길동</UserName> </soap:Header>   <soap:Body>     <Add xmlns="http://tempuri.org/" />       <a>5</a>       <b>8</b>     </Add>   </soap:Body> </soap:Envelope> Header Body
웹 서비스의 처리 과정
WS-* Protocol의 발전
웹 서비스vs리모팅 서비스
MSMQ 서비스의 소개
서비스 프로그램 작업요청 메시지를  순차적으로 실행 메시지를 쌓음 MSMQ 웹 서버 MSMQ 서비스의 소개 클라이언트
WCF 소개
서비스의 정의 모바일 이용 고객 고객 모바일 이용 고객 고객
통합된 서비스 모델 .NET Remoting ASMX 다른 플랫폼과의 상호운용성 닷넷 고유의 원격 객체 호출 기술 Attribute-       기반의 프로그래밍 Message- 기반의  프로그래밍 WS-* Protocol 지원 Enterprise Services System.Messaging WSE
Message WCF Service Client Caller Service
A B C A B C A B C EndPoint Caller Service Message Address Binding Contract (Where) (How) (What)
Transport Encoder Protocol(s) Transport Encoder Protocol(s) EndPoint Service Contract andBehaviors Client Dispatcher Binding Address
CLR to Contract Types WSDL CLR Service Contract CLR XML Schema Data Contract CLR SOAP Message Contract
Binding (How?) Transport 	 Http, TCP, Named Pipes, MSMQ Encoding Text, Binary, MTOM Protocol Security, Transaction, Reliability
Binding (How?) N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions
Address (Where?) Address는 서비스를 제공하는 주소의 역할 Address는 URI(Uniform Resource Identifier)의 형태 http://www.x.com:80/Service/MyEndPoint net.tcp://www.x.com:8080/Service/MyEndPoint net.pipe://www.x.com/Service/MyEndPoint net.msmq://www.x.com/MyQueue
Hosting IIS Hosting Windows Service Windows Activation Service (WAS) 윈도우 활성화 서비스가 실행되고있는 상태에서 WCF 응용 프로그램이 자동으로 활성화되고 서비스 실행 Self Hosting ServiceHost class
EndPoint
WCF의 메시지 전달 유형 Simplex (One-Way) : 단 방향통신으로 특정 로그를 쌓거나 할 경우 간단한 작업에 적합(One Way) Request-Reply : 동기 양방향 통신 방식으로 특정한 메시지를 보내고 전달 받는 방식 Duplex : 비 동기 양방향 통신 방식으로 특정한 메시지를 원격으로 보내고 전달 받는 방식
WCF의메시지전달유형 : Simplex (One-Way)  단 방향 통신으로 특정 로그를 쌓거나 할 경우 간단한 작업에 적합 (One Way)
WCF의메시지전달유형: Request-Reply 동기 양방향 통신 방식으로 특정한 메시지를 보내고 메시지를 다시 전달 받는 방식
WCF의 메시지 전달 유형 : Duplex 비 동기 양방향 통신 방식으로 특정한 메시지를 원격으로 보내고 전달 받는 방식
* 속성 CallbackContract, ConfigurationName, HasProtectionLevel, Name, Namespace ProtectionLevel, SessionMode, TypeId * 속성 Action, AsyncPattern , TypeId HasProtectionLevel, IsInitiating,  IsOneWay, IsTerminating, Name,  ProtectionLevel, ReplyAction ServiceContract [ServiceContract] public interface ICalculator { [OperationContract]   ComplexProblem SolveProblem (ComplexProblem p); }
Operation Contract: OneWay Caller Service Message [ServiceContract] public interface IOneWayCalculator {     [OperationContract(IsOneWay=true)]     void StoreProblem (ComplexProblem p); }
Message Message Service Contract: Duplex Caller Service [ServiceContract(CallbackContract=  typeof(ICalculatorResults)] public interface ICalculatorProblems {     [OperationContract(IsOneWay=true)]     void SolveProblem (ComplexProblem p); }
WCF의 메시지 전달 유형
WCF의 인스턴스의 관리 Per-Call: 메서드가 호출됨에 동시에 인스턴스 개체가 제거됨- 일반적인 웹 서비스와 유사함, 기본  자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known SingleCall과 유사 Per-Session: 기본적으로 세션이 지원됨(Default Value)  - 클라이언트에서 파괴해야 개체가 제거됨 - 신뢰할 수 있는 전송 세션에서 지원하는 바인딩 SingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의  클라이언트 호출만 실행할 수 있는 동기화 작업이 필요함- 자유롭게 인스턴스 초기화 가능
WCF의 인스턴스 관리 유형: PerCall Per-Call: 메서드가 호출됨에 동시에 인스턴스 생성되고 제고됨   - 일반적인 웹 서비스와 유사함, 기본  자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known     SingleCall과 유사
WCF의 인스턴스 관리 유형: PerSession Per-Session: 기본적으로 세션이 지원됨(Default Value)  - 클라이언트에서 파괴해야 개체가 제거됨- 신뢰할 수 있는 전송 세션에서 지원하는 바인딩
WCF의 인스턴스 관리 유형: SingleCall SingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의  클라이언트 호출만 실행할 수 있는 동기화    작업이 필요함- 자유롭게 인스턴스 초기화 가능
WCF의 인스턴스 관리 VS PerSession PerCall
Client B Client A Client C 채팅 서비스의 설계 WCF Service
요구사항 설정: 채팅 서비스 채팅 서비스는 별도의 응용 프로그램으로 관리 된다. 닷넷끼리만 통신을 하기 때문에 상호 운용성은 고려하지 않아도 된다. TCP 통신을 이용하기 원한다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 전송 할 수 있어야 한다. 채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다.
채팅 서비스 요소 분석 #1 (Hosting) 채팅 서비스는 별도의 응용 프로그램으로 관리 된다. IIS Hosting Self Hosting
채팅 서비스 요소 분석 #2 (Binding) 클라이언트들은 모두 닷넷 환경이다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다. 로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
채팅 서비스 요소 분석 #2 (Binding) 클라이언트들은 모두 닷넷 환경이다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다. 로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
- PerSession 채팅 서비스 요소 분석 #3 (Instance) 채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다. PerSession  or PerCall or SingleCall
WCF 채팅 서비스 구현 예제 WCF Service
WCF 도입사례
i사의 CCTV 관리 솔루션
Endpoint Endpoint Endpoint Endpoint Endpoint 서버 전체 통신구조 Sync Service Data Service Control Server Client Application Sync Service DBService Player Cast Server External Device  Client Application RS-232C Camera & External Device IConsole DBService Socket Socket Endpoint Endpoint Endpoint Endpoint Endpoint DB
서버 전체 통신구조 Sync Service 기존 TCP 소켓 통신을 대체함 연결 지향적으로 실시간으로 데이터를 처리함 Data Service 기존 웹 서비스 통신을 대체함 비연결 지향적으로 DataBase관련 내용을 처리함
Endpoint Endpoint Endpoint Endpoint Endpoint 서버 전체 통신구조 Player WCFService WCFService Sync Service ControlServer Console Data Service Endpoint Endpoint Endpoint DB
서비스 프로그램들의 소개 Control Server Client Application Sync Service DBService IConsole과 Player간의 통신을 지원하고 외부 장비와의 통신 또한 제공한다. Socket을 이용하여 Sync 서비스와 장비와의 데이터 전달을 중개한다. Windows Service External Device  Client Application Dll for Device  DBService For Linux 사이트 별로 다른 장비가 설치되기 때문에 통신 프로토콜이 일정하지 않기 때문에 별도의 DLL로 분리하여 관리한다. (e.g) sungjin.dll, eunsung.dll DB의 정보를 교환하기 위한서비스로 Linux용으로는 별도의 서비스를 제공한다.
Sync Service – #1. 소개 Client Application Player Sync Service External Device  Client Application Camera IConsole 주로 IConsole에서 Player를 조정하기 위한 메시지를 중개하는 서비스로 사용된다. 특정 카메라에 고화질 영상과 같은 요청을 위해서 Camera쪽에 메시지를 전달하기도 한다. External Device 서비스의 경우 각각의 장비 별로 달라지게 되는 통신 모듈을 별도의 로직으로 분리하기 위해서 분리해 놓았다.
Sync Service - #2. 구현 WCF 서비스를 이용한 TCP기반의서비스- Address: net.tcp://서버주소:20000/CS- Binding: netTcpBinding- Contract: InnotiveCSClassLib- Hosting: Windows Service 관련 프로젝트 파일- InnotiveCSClassLib: 계약 인터페이스 & 실제 동작을 위한 DLL- InnotiveControlServerWindowsService: 윈도우 서비스에 등록하여 호스팅하기 위한 프로젝트- InnotiveControlServerSetup: 윈도우 서비스를 간편하게 설치할 수 있게 해주는 셋업 프로젝트 설치되는 경로- C:rogram FilesnnotivennotiveControlServer
Sync Service – #3. 설치 & 서비스 셋업 프로그램 설치 Windows Service ->InnotiveControlServer->시작
Data Service- #1. 소개 Data Service Innotive  Framework Stored Procedure Player IConsole Payer나 Iconsole의 동작에 필요한 여러가지 정보들을 주고 받기 위한 데이터 서비스 DB
Data Service - #2. 구현 WCF 서비스를 이용한 HTTT기반의서비스(웹 서비스)- Address: http://서버주소:15777 - Binding: basicHTTPBinding- Contract: IService- Hosting: IIS7 관련 프로젝트 파일- http://localhost:15777 : 서비스 메시지들의 인터페이스들이 정의되어 있고 메시지들을 구현하고 있다. - InnotiveFramework: 실제 DB와 통신하는 로직과 에러&호출에 대한 로그를 정의하고 있다.
TCP 통신 이슈 소켓 연결 유지를 위한 처리서버와 클라이언트 간의 PING 메시지 비동기 메시지를 순차적으로 사용하기 위한 방법큐활용– 스레드 삽질 스토리
Endpoint Endpoint Endpoint 스레드 튜닝 초창기 단순한 설계 클라이언트 인스턴스 큐 클라이언트 인스턴스 Player 클라이언트 인스턴스 큐에 담아 스레드1개를 만들어 메시지를 순차적으로 처리한다. TimeOut의 이슈
Endpoint Endpoint Endpoint 스레드 튜닝 다시 생각한 설계 클라이언트 인스턴스 큐 클라이언트 인스턴스 큐 Player 클라이언트 인스턴스 큐
Q&A

More Related Content

Viewers also liked

주간 소셜미디어 트렌드(9월 4주, 10월 1주)
주간 소셜미디어 트렌드(9월 4주, 10월 1주)주간 소셜미디어 트렌드(9월 4주, 10월 1주)
주간 소셜미디어 트렌드(9월 4주, 10월 1주)Jinseok Ro
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기복연 이
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능Dexter Jung
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaDexter Jung
 
『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기복연 이
 
위대한개발문화
위대한개발문화위대한개발문화
위대한개발문화신승환
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째Jaeseok Park
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째Jaeseok Park
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째Jaeseok Park
 
R 스터디 세번째
R 스터디 세번째R 스터디 세번째
R 스터디 세번째Jaeseok Park
 
20 Fantastic Flat Icons and Their Meaning In Logo Design
20 Fantastic Flat Icons and Their Meaning In Logo Design20 Fantastic Flat Icons and Their Meaning In Logo Design
20 Fantastic Flat Icons and Their Meaning In Logo DesignDesignMantic
 

Viewers also liked (11)

주간 소셜미디어 트렌드(9월 4주, 10월 1주)
주간 소셜미디어 트렌드(9월 4주, 10월 1주)주간 소셜미디어 트렌드(9월 4주, 10월 1주)
주간 소셜미디어 트렌드(9월 4주, 10월 1주)
 
『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기『누워서 읽는 알고리즘』 - 미리보기
『누워서 읽는 알고리즘』 - 미리보기
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With Java
 
『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기『밑바닥부터 시작하는 딥러닝』 - 미리보기
『밑바닥부터 시작하는 딥러닝』 - 미리보기
 
위대한개발문화
위대한개발문화위대한개발문화
위대한개발문화
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째
 
R 스터디 세번째
R 스터디 세번째R 스터디 세번째
R 스터디 세번째
 
20 Fantastic Flat Icons and Their Meaning In Logo Design
20 Fantastic Flat Icons and Their Meaning In Logo Design20 Fantastic Flat Icons and Their Meaning In Logo Design
20 Fantastic Flat Icons and Their Meaning In Logo Design
 

Similar to 3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)

m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325sbroh
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까영석 양
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?강 민우
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)Sang Don Kim
 
Cse342 chapter 04
Cse342 chapter 04Cse342 chapter 04
Cse342 chapter 04Jinil Nam
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
WebRTC in 2014
WebRTC in 2014WebRTC in 2014
WebRTC in 2014Lee WonJae
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)uEngine Solutions
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-kosandeepreddyp42
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음DataUs
 
Block chain bidding_System
Block chain bidding_SystemBlock chain bidding_System
Block chain bidding_System환석 주
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTPNAVER D2
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 

Similar to 3일차-닷넷 분산 기술의 이해 (인피니트 강의자료) (20)

리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이리로그인 Relogin: 코드스테이츠 데모데이
리로그인 Relogin: 코드스테이츠 데모데이
 
m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325m-Station Channel Xpander5 020325
m-Station Channel Xpander5 020325
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
 
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
[Td 2015]구름 위로 올려 어느 곳에서든 연결되는 서비스 azure 앱 서비스(이종인)
 
Cse342 chapter 04
Cse342 chapter 04Cse342 chapter 04
Cse342 chapter 04
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
WebRTC in 2014
WebRTC in 2014WebRTC in 2014
WebRTC in 2014
 
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
유엔진 오픈소스 클라우드 플랫폼 (uEngine Microservice architecture Platform)
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-ko
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음프론트엔드 개발 첫걸음
프론트엔드 개발 첫걸음
 
Block chain bidding_System
Block chain bidding_SystemBlock chain bidding_System
Block chain bidding_System
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 

More from KH Park (박경훈)

테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
Approximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayApproximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayKH Park (박경훈)
 
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들KH Park (박경훈)
 
Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요KH Park (박경훈)
 
창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)KH Park (박경훈)
 
스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략KH Park (박경훈)
 

More from KH Park (박경훈) (8)

애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
Xp anti-practice
Xp anti-practiceXp anti-practice
Xp anti-practice
 
Approximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix ArrayApproximate Indexing: Gapped Suffix Array
Approximate Indexing: Gapped Suffix Array
 
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
윈도우 8의 새로운 컨트롤과 개발시 알아야 할 점들
 
Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요Windows8 매트로스타일 앱개발 개요
Windows8 매트로스타일 앱개발 개요
 
창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)창업, 그놈 (T아카데미 강의자료)
창업, 그놈 (T아카데미 강의자료)
 
스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략스마트앱 글로벌 진출전략
스마트앱 글로벌 진출전략
 

3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)

  • 2. 인피니트 닷넷교육 1일차 – 닷넷 소개, C#특징 2일차 – UI 기술 WPF, Expression Blend 소개 3일차 – 닷넷 분산 통신기술의 소개 4일차 – 프로젝트 설계 및 팀시스템, 유닛테스팅 5일차 – C# 3.0과 C#4.0 추가된 문법 살펴보기
  • 3. 강사소개 현) 캠든소프트 대표이사 국내 닷넷 최대 커뮤니티 “HOONS닷넷” 운영자국제 닷넷 연합 그룹회 한국 유저그룹 리더 전) 2002~2010 소프트웨어 엔지니어로 활동 2005년 마이크로소프트 최연소 MVP수상 2005~2010년 마이크로소프트 Visual C# MVP 10여권의 IT개발 서적 집필 및 번역 KBS 미래를 짊어질 젊은 주역 60명 선정
  • 4.
  • 6.
  • 7. 분산 기술의 발전사 닷넷 1.0 ~ 닷넷4.0 ~현재 COM+ WCF DCOM COM+ COM DCOM DLL MTS 웹서비스 웹서비스 & WSE(ws-*) 리모팅 서비스 MTS MSMQ 닷넷 리모팅서비스
  • 10. 로컬 트랜잭션 vs 분산 트랜잭션 Client Server Accounts ADO.NET Account A Local Transaction Account B OLE DB SQL TDS Client Component A Component B DCOM TXID=1234 TXID=1234 Distributed Transaction Coordinating DTC Participating DTC TM Protocol Account A Account B TXID=1234 TXID=1234 Server A Server B
  • 11. COM+ 처리 예제 코드 [Transaction(TransactionOption.Required)] class A : ServicedComponent { [AutoComplete] public void foo() { B obj = new B(); try { obj.TransactionTest(); } finally { obj.Dispose(); } } }   [Transaction(TransactionOption.Supported)] class B : ServicedComponent { [AutoComplete] public void TransactionTest() { // 데이터베이스 액세스 코드} }
  • 12. 닷넷리모팅 서비스 프로토콜 분산 어플리케이션을 위한 기반 다른 프로세스/장비간 통신 DCOM 을 대체한다.
  • 15. 닷넷 웹 서비스의 등장 배경
  • 17. 웹 서비스 메시지 소개 SOAP Envelope <soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > <soap:Header> <UserName>홍길동</UserName> </soap:Header> <soap:Body> <Add xmlns="http://tempuri.org/" /> <a>5</a> <b>8</b> </Add> </soap:Body> </soap:Envelope> Header Body
  • 22. 서비스 프로그램 작업요청 메시지를 순차적으로 실행 메시지를 쌓음 MSMQ 웹 서버 MSMQ 서비스의 소개 클라이언트
  • 24. 서비스의 정의 모바일 이용 고객 고객 모바일 이용 고객 고객
  • 25. 통합된 서비스 모델 .NET Remoting ASMX 다른 플랫폼과의 상호운용성 닷넷 고유의 원격 객체 호출 기술 Attribute- 기반의 프로그래밍 Message- 기반의 프로그래밍 WS-* Protocol 지원 Enterprise Services System.Messaging WSE
  • 26. Message WCF Service Client Caller Service
  • 27. A B C A B C A B C EndPoint Caller Service Message Address Binding Contract (Where) (How) (What)
  • 28. Transport Encoder Protocol(s) Transport Encoder Protocol(s) EndPoint Service Contract andBehaviors Client Dispatcher Binding Address
  • 29. CLR to Contract Types WSDL CLR Service Contract CLR XML Schema Data Contract CLR SOAP Message Contract
  • 30. Binding (How?) Transport Http, TCP, Named Pipes, MSMQ Encoding Text, Binary, MTOM Protocol Security, Transaction, Reliability
  • 31. Binding (How?) N = None | T = Transport | M = Message | B = Both | RS = Reliable Sessions
  • 32. Address (Where?) Address는 서비스를 제공하는 주소의 역할 Address는 URI(Uniform Resource Identifier)의 형태 http://www.x.com:80/Service/MyEndPoint net.tcp://www.x.com:8080/Service/MyEndPoint net.pipe://www.x.com/Service/MyEndPoint net.msmq://www.x.com/MyQueue
  • 33. Hosting IIS Hosting Windows Service Windows Activation Service (WAS) 윈도우 활성화 서비스가 실행되고있는 상태에서 WCF 응용 프로그램이 자동으로 활성화되고 서비스 실행 Self Hosting ServiceHost class
  • 35. WCF의 메시지 전달 유형 Simplex (One-Way) : 단 방향통신으로 특정 로그를 쌓거나 할 경우 간단한 작업에 적합(One Way) Request-Reply : 동기 양방향 통신 방식으로 특정한 메시지를 보내고 전달 받는 방식 Duplex : 비 동기 양방향 통신 방식으로 특정한 메시지를 원격으로 보내고 전달 받는 방식
  • 36. WCF의메시지전달유형 : Simplex (One-Way) 단 방향 통신으로 특정 로그를 쌓거나 할 경우 간단한 작업에 적합 (One Way)
  • 37. WCF의메시지전달유형: Request-Reply 동기 양방향 통신 방식으로 특정한 메시지를 보내고 메시지를 다시 전달 받는 방식
  • 38. WCF의 메시지 전달 유형 : Duplex 비 동기 양방향 통신 방식으로 특정한 메시지를 원격으로 보내고 전달 받는 방식
  • 39. * 속성 CallbackContract, ConfigurationName, HasProtectionLevel, Name, Namespace ProtectionLevel, SessionMode, TypeId * 속성 Action, AsyncPattern , TypeId HasProtectionLevel, IsInitiating, IsOneWay, IsTerminating, Name, ProtectionLevel, ReplyAction ServiceContract [ServiceContract] public interface ICalculator { [OperationContract] ComplexProblem SolveProblem (ComplexProblem p); }
  • 40. Operation Contract: OneWay Caller Service Message [ServiceContract] public interface IOneWayCalculator { [OperationContract(IsOneWay=true)] void StoreProblem (ComplexProblem p); }
  • 41. Message Message Service Contract: Duplex Caller Service [ServiceContract(CallbackContract= typeof(ICalculatorResults)] public interface ICalculatorProblems { [OperationContract(IsOneWay=true)] void SolveProblem (ComplexProblem p); }
  • 43. WCF의 인스턴스의 관리 Per-Call: 메서드가 호출됨에 동시에 인스턴스 개체가 제거됨- 일반적인 웹 서비스와 유사함, 기본 자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known SingleCall과 유사 Per-Session: 기본적으로 세션이 지원됨(Default Value) - 클라이언트에서 파괴해야 개체가 제거됨 - 신뢰할 수 있는 전송 세션에서 지원하는 바인딩 SingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의 클라이언트 호출만 실행할 수 있는 동기화 작업이 필요함- 자유롭게 인스턴스 초기화 가능
  • 44. WCF의 인스턴스 관리 유형: PerCall Per-Call: 메서드가 호출됨에 동시에 인스턴스 생성되고 제고됨 - 일반적인 웹 서비스와 유사함, 기본 자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known SingleCall과 유사
  • 45. WCF의 인스턴스 관리 유형: PerSession Per-Session: 기본적으로 세션이 지원됨(Default Value) - 클라이언트에서 파괴해야 개체가 제거됨- 신뢰할 수 있는 전송 세션에서 지원하는 바인딩
  • 46. WCF의 인스턴스 관리 유형: SingleCall SingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의 클라이언트 호출만 실행할 수 있는 동기화 작업이 필요함- 자유롭게 인스턴스 초기화 가능
  • 47. WCF의 인스턴스 관리 VS PerSession PerCall
  • 48. Client B Client A Client C 채팅 서비스의 설계 WCF Service
  • 49. 요구사항 설정: 채팅 서비스 채팅 서비스는 별도의 응용 프로그램으로 관리 된다. 닷넷끼리만 통신을 하기 때문에 상호 운용성은 고려하지 않아도 된다. TCP 통신을 이용하기 원한다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 전송 할 수 있어야 한다. 채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다.
  • 50. 채팅 서비스 요소 분석 #1 (Hosting) 채팅 서비스는 별도의 응용 프로그램으로 관리 된다. IIS Hosting Self Hosting
  • 51. 채팅 서비스 요소 분석 #2 (Binding) 클라이언트들은 모두 닷넷 환경이다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다. 로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
  • 52. 채팅 서비스 요소 분석 #2 (Binding) 클라이언트들은 모두 닷넷 환경이다. 단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다. 로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
  • 53. - PerSession 채팅 서비스 요소 분석 #3 (Instance) 채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다. PerSession or PerCall or SingleCall
  • 54. WCF 채팅 서비스 구현 예제 WCF Service
  • 56. i사의 CCTV 관리 솔루션
  • 57. Endpoint Endpoint Endpoint Endpoint Endpoint 서버 전체 통신구조 Sync Service Data Service Control Server Client Application Sync Service DBService Player Cast Server External Device Client Application RS-232C Camera & External Device IConsole DBService Socket Socket Endpoint Endpoint Endpoint Endpoint Endpoint DB
  • 58. 서버 전체 통신구조 Sync Service 기존 TCP 소켓 통신을 대체함 연결 지향적으로 실시간으로 데이터를 처리함 Data Service 기존 웹 서비스 통신을 대체함 비연결 지향적으로 DataBase관련 내용을 처리함
  • 59. Endpoint Endpoint Endpoint Endpoint Endpoint 서버 전체 통신구조 Player WCFService WCFService Sync Service ControlServer Console Data Service Endpoint Endpoint Endpoint DB
  • 60. 서비스 프로그램들의 소개 Control Server Client Application Sync Service DBService IConsole과 Player간의 통신을 지원하고 외부 장비와의 통신 또한 제공한다. Socket을 이용하여 Sync 서비스와 장비와의 데이터 전달을 중개한다. Windows Service External Device Client Application Dll for Device DBService For Linux 사이트 별로 다른 장비가 설치되기 때문에 통신 프로토콜이 일정하지 않기 때문에 별도의 DLL로 분리하여 관리한다. (e.g) sungjin.dll, eunsung.dll DB의 정보를 교환하기 위한서비스로 Linux용으로는 별도의 서비스를 제공한다.
  • 61. Sync Service – #1. 소개 Client Application Player Sync Service External Device Client Application Camera IConsole 주로 IConsole에서 Player를 조정하기 위한 메시지를 중개하는 서비스로 사용된다. 특정 카메라에 고화질 영상과 같은 요청을 위해서 Camera쪽에 메시지를 전달하기도 한다. External Device 서비스의 경우 각각의 장비 별로 달라지게 되는 통신 모듈을 별도의 로직으로 분리하기 위해서 분리해 놓았다.
  • 62. Sync Service - #2. 구현 WCF 서비스를 이용한 TCP기반의서비스- Address: net.tcp://서버주소:20000/CS- Binding: netTcpBinding- Contract: InnotiveCSClassLib- Hosting: Windows Service 관련 프로젝트 파일- InnotiveCSClassLib: 계약 인터페이스 & 실제 동작을 위한 DLL- InnotiveControlServerWindowsService: 윈도우 서비스에 등록하여 호스팅하기 위한 프로젝트- InnotiveControlServerSetup: 윈도우 서비스를 간편하게 설치할 수 있게 해주는 셋업 프로젝트 설치되는 경로- C:rogram FilesnnotivennotiveControlServer
  • 63. Sync Service – #3. 설치 & 서비스 셋업 프로그램 설치 Windows Service ->InnotiveControlServer->시작
  • 64. Data Service- #1. 소개 Data Service Innotive Framework Stored Procedure Player IConsole Payer나 Iconsole의 동작에 필요한 여러가지 정보들을 주고 받기 위한 데이터 서비스 DB
  • 65. Data Service - #2. 구현 WCF 서비스를 이용한 HTTT기반의서비스(웹 서비스)- Address: http://서버주소:15777 - Binding: basicHTTPBinding- Contract: IService- Hosting: IIS7 관련 프로젝트 파일- http://localhost:15777 : 서비스 메시지들의 인터페이스들이 정의되어 있고 메시지들을 구현하고 있다. - InnotiveFramework: 실제 DB와 통신하는 로직과 에러&호출에 대한 로그를 정의하고 있다.
  • 66. TCP 통신 이슈 소켓 연결 유지를 위한 처리서버와 클라이언트 간의 PING 메시지 비동기 메시지를 순차적으로 사용하기 위한 방법큐활용– 스레드 삽질 스토리
  • 67. Endpoint Endpoint Endpoint 스레드 튜닝 초창기 단순한 설계 클라이언트 인스턴스 큐 클라이언트 인스턴스 Player 클라이언트 인스턴스 큐에 담아 스레드1개를 만들어 메시지를 순차적으로 처리한다. TimeOut의 이슈
  • 68. Endpoint Endpoint Endpoint 스레드 튜닝 다시 생각한 설계 클라이언트 인스턴스 큐 클라이언트 인스턴스 큐 Player 클라이언트 인스턴스 큐
  • 69. Q&A