블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday




ㅁ 네트워크 구조의 호환성

 

-à 네트워크 구조간 호환성 요구의 대두

 1. 컴퓨터 보급의 확산으로 인한 분산 기기들간의 상호연결 증대

 2. 컴퓨터 제조업체나 판매 업자들마다 독자적인 네트워크를 형성.

. IBM : SNA(System Network Architecture)

. Digital Equipment Corp. : DNA(Digital Network Architecture)

 

 위와 같은 요구의 대두로 네트워크가 대규모로 증가함에 따라서 지역단위나 국가단위의 통일된 네트워크 구성에 대한 요구가 높아져 이에 대한 표준화 요구가 대두 되었다.

 

-à 개방형 시스템(Open System) :

최소한의 표준화된 소스가 공개됨.(반대 폐쇄형 시스템[Closed System]).

 . 서로 다른 특징을 갖는 기종들과도 접속될 수 있도록 준비가 되어 있는 시스템이라 할 수있다.

 . 이 기종 시스템 간의 연결을 위해서 시스템 상호간에 서로 이해할 수 있는 최소한의 규격에 대한 표준이 필요하다.

 .

 

 OSI 참조모델(Reference model)은 국제 표준 기구인 ISO에서 1983네트워크상에서 서로 다른 이 기종끼리도 호환성 있게 상호접속을 할 수 있도록, 정보교환을 위해 필요한 최소한의 망 구조를 제공하는 기본 참조 모델을 제안.

 

 

OSI 참조모델(Reference model)

 

 통신망을 통한 상호접속에 필요한 제반 통신절차를 통신절차 가운데 기본적으로 비슷한 기능을 갖는 모듈을 동일 계층으로 분할하고, 가능하면 각 계층간의 독립성을 유지할 수 있도록 하여 크게 7개의 계층으로 나누어 정의하였다.


[그림 OSI 7계층]

 

-à1계층 물리계층 :

 상위 계층에서 내려온 비트들이 상대방까지 보내질 수 있도록 근원지와 목적지간의 물리적 링크를 설정, 유지, 해지하기 위한 물리적, 전기적, 기능적 그리고 절차적인 특성을 제공.

1.     아날로그 회선 : RS-232C

2.     디지털회선 : x.21

 

-à 2계층 데이터링크계층 :

 물리적인 링크를 통하여 신뢰성 있는 정보를 전송하는 기능을 제공한다. , 동기화, 오류 제어, 흐름 제어 등을 통하여 데이터 블록(프레임)을 전송한다.

1.     헤더부분 : 데이터 블록의 시작을 나타내는 표시와 목적지로의 주소 등을 포함.

2.     트레일러부분 : 데이터블럭 내에 발생한 전송에러를 검출하기 위한 에러검출코드.

 

-à 3계층 네트워크계층 :

. 개방형 시스템 사이에서 네트워크의 연결을 유지하고 설정하며 해지하는 기능을 담당

1.     이용자들이 자신의 데이터가 어떤 경로를 통해 전달될 것인지 결정.

2.     얼마나 많은 물리적인 회선을 경유할 것인지, , 사용자가 이에 관해 무관하게 네트워크 내에서의 데이터를 다른 노드로 넘겨주는 릴레이(Relay)기능.

3.     상위계층에서 넘겨진 데이터를 일정 크기의 패킷으로 분할 및 재조립.

. 네트워크 계층의 표준

1.     현재 ITU-T(CCITT) X.25의 패킷레벨 프로토콜이 널리 사용되고 있다.

 

-à 4계층 전송계층 :

 End-to-end에 신뢰성 있고, 투명한(transparent)데이터 전송을 제공한다. , 네트워크 계층에서 제공하지 않는 데이터의 에러나 이중 처리 등에 대한 에러제어 기능을 비롯하여 흐름제어를 담당한다.

 

-à 5계층 세션계층 :

 응용 간의 통신에 대한 제어 구조를 제공한다. , 특정한 한 쌍의 프로세스들 사이에서 세션이라 불리는 연결을 확립하고 유지.

1.     다른 쪽의 프로세스와 대화하기 위해 양단간의 연결을 설정.

2.     순차적인 방법으로 대화를 관장하여 대화의 흐름이 원활히 이루어지도록 동기에 대한 기능을 제공.

3.     전이중 혹은 반이중 전송과 같이 데이터 전송방향을 결정하는 등의 기능을 제공.

 

-à 6계층 표현계층 :

 . 이용자가 통신하거나 참조할 수 있도록 정보를 표현하는 기능을 담당.

 . 대표적인 변환 서비스의 예는 데이터 압축, 암호화를 비롯하여, 터미널이나 파일들을 네트워크 표준으로 변형하는 것 등이다.

 

-à 7계층 응용계층 :

 . 최상위 층으로 응용 프로세스가 네트워크 환경에 접근하는 수단을 제공함으로써 응용 프로세스들이 상호간에 유용한 정보교환을 할 수 있는 창구 역할을 담당.

 . 이 계층에서는 네트워크 관리기능을 비롯하여 범용 응용 서비스인 파일전송, 전자우편, 가상터미널 등의 기능이 포함된다.

 

Posted by happydong
, |




ㅁ 통신의 목적

 통신하는 상대방 사이에 정확하고, 효율적이며, 안전한 정보의 전송을 목적으로 한다.

 

-->데이터 전송의 흐름.

1.     에러 없이 정보를 수신하였으면 ACK를 보낸다.

2.     에러가 있었으면 NAK를 보낸다.

3.     NAK를 받으면 이전에 보내 온 정보를 다시 보낸다.

4.     16회 이상 계속해서 에러가 발생하면 통신도 중단한다.

 

ㅁ 통신의 불완전성

 통신하려는 상대방이 정보를 전송하기 위해 통신 채널을 통해 전송할 때 정상적인 정보를 훼방 놓는 여러가지 현상이 있다. 이러한 훼방 해위는 통칭하여 불완전성(impairment,전송에러)이라고 한다.

 통신의 불완전성이 초래하는 결과로는 신호의 감쇄, 왜곡 등을 초래하며 이와 함께 통신 채널에 존재하는 잡음과 더불어 에러의 원인이 된다.

 

ㅁ 에러제어와 동기

-à 에러제어 : 통신 프로토콜에서는 이러한 에러가 발생하였을 때 어떻게 에러의 발생 사실을 알아내고 손실된 정보를 회복할 것인가에 대한 엄밀한 절차, 즉 에러제어가 사전에 약속되어 있어야 한다. 이렇게 되어 있어야만이 통신의 불완전성을 극복할수 있는 방법이다.

 

-à 동기(synchronization) : 정보를 정확하게 전송하기 위해서는 동기(synchronization)의 개념 필요!

 

ㅁ 흐름제어

 정보의 양을 조절하는 흐름제어(flow control)방법도 사전에 미리 약속되어야 한다. , 흐름 제어는 정보의 송신 측에서 너무 빠르게 정보를 보내는 바람에 수신 측에서 이를 미처 소화하지 못함으로써 정보의 손실을 가져오는 사태를 막기 위한 방법을 말한다.

 

 

ㅁ 프로토콜의 기본 개념

 서로 다른 시스템에 있는 두 실체(entity)간의 신뢰성 있고, 효율적인 정보를 주고 받기 위해서 정보의 송.수신측 또는 네트워크 내에서 사전에 약속된 규약 또는 규범이다. (정보를 정확하게, 효율적으로, 안정하게 주고받기 위해 사전에 약속됨)


[그림1]

 

 ㅁ 프로토콜의 구성요소

 프로토콜들의 효과적인 정리를 위해서 프로토콜 계층화의 사고 방식이 도입되었다. 계층화의 개념은 구조화 프로그래밍(Structured programming)의 개념과 유사하다.

 

[그림2 – TCP/IP 계층구조]

 

프로토콜의 각 계층은 구조화 프로그래밍의 모듈(Module)과 같다. 또한, 프로토콜의 각 계층은 수직적으로 상하 관계를 갖는 것은 모듈들을 수직적으로 배치하여 모듈 사이의 인터페이스(interface)가 최소화되도록 하는 개념과 흡사하다.

 계층화된 네트웍 프로토콜을 총칭하여 네트웍 구조(Network Architecture)라고 부른다.

“나누어 정복하라(Divide and conquer)” : 모듈화를 통해 각계층에 종속이 되지 안게.

 

ㅁ 프로토콜의 종류

. TCP/IP(Transmission Control Protocol/Internet Protocol)

. OSI(Open System Interconnection) 참조모델(Reference Model)

. SNA(System Network Architecture)

  -IBM사의 네트워크 아키텍처 계층 개념

  -7계층으로 구성되어 있음.

. X.25 : 패킷 교환 공중망(Packet Switched Public Data Network)을 통한 데이터 전송을 정의하며 Wan에서 가장 널리 채택.

 

Posted by happydong
, |



이 내용은 월간 Web에 2010년 03월호에 기고했던 내용 입니다!!

[바로가기]
실전활용!! - WCF RIA Services 알아보자 (1)
실전활용!! - WCF RIA Services 알아보자 (2)
실전활용!! - WCF RIA Services 알아보자 (3)



ㅁ 도메인 서비스 호출

 

 이제 실버라이트 프로젝트에서 도메인 서비스를 호출하고, 데이터를 받아서 해당 컨트롤에 뿌려주는 작업에 대해서 알아 보도록 하겠다. 기존에 WCF 서비스를 이용하였거나, WebService를 통해서 작업을 해보셨던 분들이라면 금방 익숙해질 것이라고 생각이 든다.

 

<UserControl x:Class="Demo.RIAServiceApplication.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    xmlns:Data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">

    <Grid x:Name="LayoutRoot">

        <Data:DataGrid x:Name="DataGrid1"></Data:DataGrid>

    </Grid>

</UserControl>

[코드 3] MainPage.xaml

 

MainPage.xaml DataGrid 컨트롤은 간단하게 데이터를 호출해서 뿌려주기위해 올려놓은 것이다. 호출 내용은 아래 코드와 같다.

 

 

// using 추가

using Demo.RIAServiceApplication.Web;

using System.Windows.Ria;

 

namespace Demo.RIAServiceApplication

{

    public partial class MainPage : UserControl

    {

        public MainPage()

        {

            InitializeComponent();

 

            // 도메인 서비스 생성

            Currency_DS service = new Currency_DS();

            // 도메인 서비스 로드 및 콜백(Callback)지정

            service.Load<Currency>(service.GetCurrencyQuery(), new Action<LoadOperation<Currency>>(Currency_LoadCompleted), null);

        }

 

// 콜백메소드

private void Currency_LoadCompleted(LoadOperation<Currency> operation)

        {

            // 에러가 있는지 확인

            if (operation.HasError == false)

            {

                // DataGrid ItemSource로 지정

                this.DataGrid1.ItemsSource = operation.Entities;

            }

        }

    }

}

[코드 3] MainPage 코드 비하인드

 

위 코드를 간단하게 설명하자면,

 

- 생성자에서 도메인서비스로 지정한 Currency_DS를 생성후 로드메소드를 구현해 주었다.

 

- service.Load메소드는 해당 서비스를 호출하고 받은 반환값 엔티티쿼리(EntityQuery)를 해당 엔티티클래스로 로드를 해주는 역할을 하는데, 위 코드에서 첫번째 파라미터로 GetCurrencyQuery 메소드를 호출하고 있는 것을 확인 할수 있을 것이다. 이 메소드는 도메인서비스의 GetCurrency메소드와 같다. 두번재 파라미터로는 콜백함수를 지정하였다. 세번재 파라미터는 userstate를 지정하는 것인데 null 지정해도 무관하다.

 

- Currency_LoadCompleted는 콜백메소드로 파라미터로는 LoadOperation<Currency>를 받는다.

LoadOperation<Currency>Entities속성을 DataGird 컨트롤의 ItemsSource로 지정해 주어 데이터를 채워주었다.

 

[그림 7] 프로젝트 실행모습

 

[그림 7]은 지금까지의 작업을 실행해본 모습으로, 도메인 서비스에서 데이터를 잘 받아서 뿌려주고  있음을 보여준다.

 

지금까지 작업을 기존에 서비스참조해서 작업하는 거하고, 얼마나 편해졌는지 대충 감이 왔을 것이라 생각이 든다. 위에서도 말했듯 WCF RIA Service에서는 서비스 참조 같은 작업이 없어서, 서비스를 수정하거나 했을 때 서비스 업데이트하는 번거로운이 일이 없다. 그래서 유지 보수가 편하고, 개발하기가 편하다고 하는 이유이다. 또한, 도메인서비스에서 기본적인 CRUD 작업을 만들어주니 개발해야할 부분이 일부, 약간 줄어든 샘이다. 하지만, 필요에 따라 도메인 서비스부분도 수정되어야 할때도 있을 것이다. 이를 적절이 이용해서 사용하면 개발하기 편리한 서비스가 될 것이다.

Posted by happydong
, |