Your SlideShare is downloading. ×
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

1,337
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,337
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 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. 진행순서
    • 닷넷 분산 기술의 소개
    • 5. WCF의 소개
    • 6. WCF 도입 사례
  • 닷넷 분산 기술의 소개
  • 7. 분산 기술의 발전사
    닷넷 1.0 ~
    닷넷4.0 ~현재
    COM+
    WCF
    DCOM
    COM+
    COM
    DCOM
    DLL
    MTS
    웹서비스
    웹서비스
    & WSE(ws-*)
    리모팅
    서비스
    MTS
    MSMQ
    닷넷 리모팅서비스
  • 8. 닷넷 엔터프라이즈 서비스
    DCOM
    MTS
    +
    DCOM
  • 9. 닷넷 엔터프라이즈 서비스
    MTS
  • 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 을 대체한다.
  • 13. 닷넷리모팅 서비스
  • 14. 리모팅 서비스
  • 15. 닷넷 웹 서비스의 등장 배경
  • 16. 웹 서비스의 구조
  • 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
  • 18. 웹 서비스의 처리 과정
  • 19. WS-* Protocol의 발전
  • 20. 웹 서비스vs리모팅 서비스
  • 21. MSMQ 서비스의 소개
  • 22. 서비스 프로그램
    작업요청
    메시지를
    순차적으로 실행
    메시지를 쌓음
    MSMQ
    웹 서버
    MSMQ 서비스의 소개
    클라이언트
  • 23. WCF 소개
  • 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
  • 34. EndPoint
  • 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);
    }
  • 42. WCF의 메시지 전달 유형
  • 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
  • 55. WCF 도입사례
  • 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:Program FilesInnotiveInnotiveControlServer
  • 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
  • 70. hoonsbara@hotmail.com
    http://blog.hoons.kr
    http://twitter.com/_hoons