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

카테고리

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




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

[바로가기]
실전활용!! - Flickr API를 이용한 포토갤러리 만들기 (1)
실전활용!! - Flickr API를 이용한 포토갤러리 만들기 (2)
실전활용!! - Flickr API를 이용한 포토갤러리 만들기 (3)



지난 연재 내용을 통해서 비헤이비어(Behavior)에 대해서 간단히 알아 보았고, 예제를 통해서도 어느 정도 어떻게 사용되면 되는지 익혔을 것이다. 이는 실버라이트(Silverlight)를 처음 접하신 분들이라면 정말 편리한 친구이라는 것을 잘 실감할 수 없을 것 인데, 실버라이트2에서부터 계속 하셨던 분들이라면 정말 편이한 친구라는 것을 공감 할 수 있을 것이다.

 

 이번 시간에는 실버라이트3를 이용해 간단한 나만의 포토 갤러리는 만들어 보고자 한다. 이 내용은 2010년을 맞이하여 처음으로 실버라이트를 배우고자 하는 열정적인 분들에게 도움이 되는 자료가 되지 않을까 싶다. 물론, 기존에 실버라이트를 이용해서 개발하고 계신 분들에게도 조금은 유익한 정보도 있지 않을까 하는 생각이 든다.  다들 실무에서 잘 사용하고 있는 MVVM + Command패턴 이야기도 해보려 하기 때문이다. 또한, 지난 시간에 배웠던 비헤이비어(Behavior)도 같이 복습하면서 적용할 것 이기 때문에 기존 실버라이트 개발자들에게도 조금은 도움이 되는 자료가 있지 않을까 싶다.

 

 

MVVM & Command 패턴

 

-      MVVM 패턴 ??

 

MVVM (Model-View-ViewModel)패턴은 MVC(Model-View-Controller)패턴과 비슷하다.

(View)를 따로 두고, 뷰는 모델(Model)을 몰라도 되며, 모델 또한 뷰는 몰라도 된다. 뷰는 어디에도 종속적이지 않아야 하며, 모델 또한 그러하다. 뷰는 언제든지 변경이 가능하다는 것을 염두 해 두어야 하며, 그로 인해 Model이 영향을 주면 안 되기 때문이다. 이렇게 하면 좋은 점이 디자이너와 협업이 편리해 진다. 디자이너는 뷰만 신경 써서 이뿌게 디자인해서 결과물을 만들어 주면 되고, 개발자는 모델과 뷰모델(ViewModel)를 잘 관리해 주면 되기 때문이다. 나중에 개발자 또는 디자이너가 바인딩(Binding)만 잘 엮어 주면 정말 편리한 패턴이다. 또한, 유지보수하기가 편리해진다는 장점도 있다. 수정사항이 들어오면 디자이너는 뷰만, 개발자는 뷰모델만 확인해서 수정하면 될 것 이기 때문이다.

 

[그림 1] MVVM 패턴

 

 위 그림을 보면 이해가 더 빠를 것 이다. 우리가 XAML를 만들면 코드 비하인드(Code-Behind)와함께 XAML이 생겨 날 것이다. 보통은 XAML파일에서 디자인을 하다고 객체에 x:Name을 주어 코드 비하인드에서 여러 가지 코드를 작성했을 것 이다. 이렇게 되면 차후에 새로운 디자인 수정 요청사항이 나오면, XAML파일에서는 꼭 x:Name으로  명시 한 객체가 있어야 하며, 개발 코드 또한 복사해서 붙어 넣기 하거나, 객체 이름을 찾아서 다시 값을 세팅해 주어야 할 것이다.  하지만, MVVM에서의 View XAML Code-Behind를 하나의 뷰로 본다. 그리고 모델은 DB또는 XML에서 가지고 온 데이터모델(DataModel)을 의미한다. 아까 위에서도 말했듯, [그림 1]에서도 보듯 뷰와 모델은 독립적이어서, 서로 연관되어 있지 않다. 다만 중간에 뷰모델만 있을 뿐이다. 그렇다면 뷰모델은 어떤 일을 하는 녀석인지 알아 보자!!

뷰모델은 모델이 생성되거나, 변경 되었을 때 바인딩으로 엮여져 있는 뷰에게 값을 변경시켜주는 역할을 한다. 뷰모델과 뷰는 바인딩(Binding)식으로 데이터를 주고 받기 때문에 뷰 객체에 x:Name을 지정해 줄 필요가 없다. 그럼 뷰에서 이벤트처리는 어떻게 할 것 인지에 대한 고민이 생길 것 이다. 이 해결 방법은 MVVM패턴과 찰떡궁합인 커맨드(Command) 패턴으로 해결 할 수 있다.

 

 

-      Command 패턴??

 

 커맨드(Command)패턴이란 주로 애플리케이션(Application) 전역에서 동일하게 받을 수 있는 사용자의 제어 명령에 대한 이벤트를 효과적이고, 표준적으로 받기 위한 구현 방법이다. 커맨드패턴은 특히 MVVM처럼 뷰와 모델이 분리된 환경에서 매우 효과적으로 코드를 짤 수 있게 도와주는 역할을 한다. 또한, 커맨드패턴은 실버라이트 3에서 새롭게 등장한 비헤이비어와 만나 조금 더 쉽게 이용할 수 있게 되었다. 이는 휴즈플로우(HugeFlow)에서 오픈 소스로 올려놓은 HugeFlow.CommandPattern 어셈블리 파일(.dll)을 이용하면 된다. 물론 소스까지 공개되어 있으니 받아서 변경해도 된다.

 

 그럼 이제부터 본격적으로 MVVM + Command 패턴, 비헤이비어를 이용해서 나만의 포토 갤러리를 만들어 볼 것인데, 코드 하나하나 다 설명하기에는 시간이 많이 걸리고 내용도 많아서 주요 내용만 알아보도록 할 것이다. 하지만, 필자가 만든 소스는 블로그를 통해 올려 놓을 것이니, 참고해서 만들어도 괜찮을 것이다.

 

우선 Flickr API 키를 발급 받도록 하자. 이 예제에서는 따로 DB나 서비스(Service)를 만들지 않고 Flickr API를 이용할 것이기 때문에 키 발급을 꼭 해야 한다.

Posted by happydong
, |




ㅁ 국내외 인터넷 관련 기구

[ 국내외 인터넷 관련 기구표 ] 


  위 그림에서 노란색으로 체크되어 있는 ISOC , IAB , IANA최상위 표준 기구이며, 주요하게 알아야할 내용은 IETF , InterNIC , 한국 NIC 이다. 

 - ISOC(Internet SOCiety)
   . 1992년에 조직되어 전세계의 인터넷의 발전 및 진화와 관련된 기술을 위해 결정된 전문적 비영리 기구이다. 새로운 인터넷 어플리케이션 탐구에 대한 공개 토론의 장을 제공하고, 인터넷에 대한 관심과 바람직한 사용 및 발전을 진작시키기 위한 일을 한다. (http://www.isoc.org)

 - IAB(Internet Architecture Board)
  . 인터넷 발전에 관련된 기술적이고 정책적인 문제를 다루는 위원회로서, 인터넷 구조, TCP/IP 등의 프로토콜을 검토하고, IESG에서 동의할 만한 새로운 인터넷 표준(RFC)들을 제시한다. (http://www.iab.org)

 - IETF(Internet Engineering Task Force)
  .  인터넷 표준안을 제정하기 위한 기술 위원회로서, RFC의 실제 출판을 담당한다.(http://www.ietf.org)
  (RFC[Request For Comments]란?? 인터넷에 있는 모든 기술들은 문서화가 되어야 하는데, 이 문서를 RFC문서라고 한다. 이를 통해 IETF에 제출한다.)

[ RFC(Request For Comments) 문서]



 - IANA(Internet Assigned Numbers Authority)
  . 프로토콜의 변수들에 대해 값을 부여하는 것을 관장, IANA의 위임을 받은 InterNIC은 도메인 네임(COM,EDU, ORG, NET), IP 어드레스 배정 등의 임무를 맡고 있다. 

 - 한국인터넷정보센터(KRNIC)
  . 국내 IP 주소 할당, 도메인 네임 등록 등의 업무를 담당한다. (http://www.nic.or.kr)

Posted by happydong
, |



ㅁ 인터넷 정의

 네트워크들을 연결해 놓은 네트워크 : Network of Network

 - Internet[대문자] / internet[소문자]
 1. Internet(고유명사)
   미국방성 주도의 ARPANET에서 출발한 TCP/IP을 사용하여 서로 연결된 네트워크
 2. internet(기술적 측면)
   상호 접속 프로토콜을 이용하여 네트워크와 네크워크를 연결한 네트워크를 의미하며, TCP/IP 프로토콜을 사용하는 Internet은 internet의 한 종류라고 할수 있다.

ㅁ 인터넷의 특징

 1. TCP/IP 프로토콜을 통해 연결되어 있는 클로벌 네트워크이다.
 2. 인터넷은 네트워크를 연결해 놓은 네트워크이다.
 3. 인터넷은 클라이언트/서버 시스템으로 동작한다.
 4. 패킷 교환망을 기반으로 동작한다.
 5. 중앙 통제기구가 없다.

ㅁ 인터넷의 역사

 1969년 : 미 국방성의 ARPA프로젝트의 일환으로 탄생.
   국방성의 중앙컴퓨터,UCLA와 스탠포트 대학, UCBS 및 유타 대학 등의 컴퓨터를 연결
 
 1974년 : TCP/IP 프로토콜 디자인
 
 1982년 : TCP/IP(de facto) 프로토콜로 채택
  de facto : 사람들이 많이 사용해서 표준처럼 되어버린 표준을 의미.
  dejure : de facto의 반대로 산업적 표준을 의미

 1984년 : Domain Name 시스템 개념의 도입

 1986년 : 미 과학재단(NSF)에 의해서 NSFNET개발

 1990년 : ARPANET 소멸, 기존의 군사용 네트워크는 MILNET로 존재

 1993년 : InterNIC 설립과 모자이크 개발

 1994년 : Netscape 개발

사용자 삽입 이미지

[초기 NSFNET의 연결 형태]



ㅁ 인터넷 접속도(국내입장)

 우리 나라에서는 인터넷에 접속하기 위해서 크게 두가지 네크워크가 있다고 보면 되는데 이는 아래와 같다.

 - 국내 학술 연구망 : 순수 연구의 목적으로 만들어짐.
  . 한국 통신의 HANANET
  . 서울대학교에서 운영 중인 교육전산망인 KREN
  . ETR에서 운영 중인 KREONET 등

 - 국내 상용망(ISP) : 돈을 내고 사용함.
  . KORNET
  . INET
  . 데이콤
  . 나우누리 등

사용자 삽입 이미지

                                                           [전세계 인터넷 접속도]

 1. IP주소(IP Address)
  . 사람들이 편지를 주고 받을 때 주소가 필요한 것처럼 인터넷 상에서도 송수신 컴퓨터의 주소가 필요.
  . 인터넷에서 사용하는 숫자로 구성된 주소.
  . 네트워크 주소(Network ID)와 호스트 주소(Host ID)로 구성.
  . 인터넷의 주소체계는 Dotted Decimal Notation(e.g 210.102.150.219)
    - Dotted Decimal Notation : 10진수로 되어있고, 점으로 찍혀있는 표기법.
  . KRNIC에서 주관

사용자 삽입 이미지

[ IP 주소]


 
 2. Domain Name(Host Name)
  . IP 주소는 숫자로 구성되어 있기 때문에 사람이 기억하기 어렵다.
  . 숫자 대용으로 똑같은 주소 의미
  . 기관별, 국가별 등 최상위 도메인(domain)과 도메인(sub_domain)으로 구성

     - 기관별 최상위 도메인 :
 edu : 교육기관(mit.edu)
 com : 상업적 회사 혹은 기업체(microsoft.com)
 gov : 정부기관(whitehouse.gov)
 net : 네트워크 관련 기관(Internic.net)

     - 국가별 최상위 도메인 :
 au  : 호주
 uk  : 영국
 cn  : 중국
 us  : 미국
 fr  : 프랑스
 hk  : 홍콩
 jp  : 일본
 kr  : 한국

     - 국가도메인의 부 도메인
 co  : 회사(kotel.co.kr)
 re  : 연구소(etri.re.kr)
 ac  : 학술기관(skku.ac.kr)
 go  : 정부기관(bluehouse.go.kr)
 nm  : 네트워크(hana.nm.kr)

ㅁ DNS(Domain Name System)

 . 실제로 컴퓨터가 통신을 수행할 때 Domain Name은 사용할 수 없으므로 IP 주소로 변환해야 한다.
 . DNS는 자신의 도메인에 속한 IP주소에 대한 Domain name을 보유하고 있다.
 . 어떤 IP주소에 해당하는 Domain Name을 요청하거나 그 반대의 작업을 요청할 수 있다.
   (명령어를 통해 IP Address를 알아올수 있다. nslookup 도메인명)


 

Posted by happydong
, |