인피니트 닷넷교육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명 선정
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(){ // 데이터베이스 액세스 코드}}
WCF의 메시지 전달유형Simplex (One-Way) : 단 방향통신으로 특정 로그를 쌓거나 할 경우 간단한 작업에 적합(One Way)Request-Reply : 동기 양방향 통신 방식으로 특정한 메시지를 보내고 전달 받는 방식Duplex : 비 동기 양방향 통신 방식으로 특정한 메시지를 원격으로 보내고 전달 받는 방식
WCF의 인스턴스의 관리Per-Call:메서드가 호출됨에 동시에 인스턴스 개체가 제거됨- 일반적인 웹 서비스와 유사함, 기본 자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known SingleCall과 유사Per-Session: 기본적으로 세션이 지원됨(Default Value) - 클라이언트에서 파괴해야 개체가 제거됨 - 신뢰할 수 있는 전송 세션에서 지원하는 바인딩SingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의 클라이언트 호출만 실행할 수 있는 동기화 작업이 필요함- 자유롭게 인스턴스 초기화 가능
44.
WCF의 인스턴스 관리유형: PerCallPer-Call: 메서드가 호출됨에 동시에 인스턴스 생성되고 제고됨 - 일반적인 웹 서비스와 유사함, 기본 자원효율 우수함- COM+의 JIT방식 .NET Remoting의 Well-Known SingleCall과 유사
45.
WCF의 인스턴스 관리유형: PerSessionPer-Session: 기본적으로 세션이 지원됨(Default Value) - 클라이언트에서 파괴해야 개체가 제거됨- 신뢰할 수 있는 전송 세션에서 지원하는 바인딩
46.
WCF의 인스턴스 관리유형: SingleCallSingleCall: 하나의 인스턴스만 생성됨 - 한 번에 하나의 클라이언트 호출만 실행할 수 있는 동기화 작업이 필요함- 자유롭게 인스턴스 초기화 가능
요구사항 설정: 채팅서비스채팅 서비스는 별도의 응용 프로그램으로 관리 된다.닷넷끼리만 통신을 하기 때문에 상호 운용성은 고려하지 않아도 된다.TCP 통신을 이용하기 원한다.단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 전송 할 수 있어야 한다.채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다.
50.
채팅 서비스 요소분석 #1 (Hosting)채팅 서비스는 별도의 응용 프로그램으로 관리 된다.IIS HostingSelf Hosting
51.
채팅 서비스 요소분석 #2 (Binding)클라이언트들은 모두 닷넷 환경이다.단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다.로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
52.
채팅 서비스 요소분석 #2 (Binding)클라이언트들은 모두 닷넷 환경이다.단순한 Request-Reply가 아닌 메시지를 클라이언트에서 서버로 서버에서 클라이언트로 비 동기 전달 되어야 한다.로컬이 아니기 때문에 TCP 통신을 이용해야 한다.
53.
- PerSession채팅 서비스요소 분석 #3 (Instance)채팅은 연결 지향적이기 때문에 사용자의 인스턴스가 관리되어야 한다.PerSession or PerCall or SingleCall
서비스 프로그램들의 소개ControlServerClient ApplicationSync ServiceDBServiceIConsole과 Player간의 통신을 지원하고 외부 장비와의 통신 또한 제공한다.Socket을 이용하여 Sync 서비스와 장비와의 데이터 전달을 중개한다.Windows ServiceExternal Device Client ApplicationDll for Device DBServiceFor Linux사이트 별로 다른 장비가 설치되기 때문에 통신 프로토콜이 일정하지 않기 때문에 별도의 DLL로 분리하여 관리한다. (e.g) sungjin.dll, eunsung.dllDB의 정보를 교환하기 위한서비스로 Linux용으로는 별도의 서비스를 제공한다.
61.
Sync Service –#1. 소개Client ApplicationPlayerSyncServiceExternal Device Client ApplicationCameraIConsole주로 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:\Program Files\Innotive\InnotiveControlServer
63.
Sync Service –#3. 설치 & 서비스셋업 프로그램 설치Windows Service ->InnotiveControlServer->시작
64.
Data Service- #1.소개DataServiceInnotive FrameworkStoredProcedurePlayerIConsolePayer나 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 메시지비동기 메시지를 순차적으로 사용하기 위한 방법큐활용– 스레드 삽질 스토리