'Windws Azure'에 해당되는 글 1건

  1. 2009.07.30 Windows Azure 기반의 데이터 서비스 그리고 MVC (1)
Windows Azure2009.07.30 20:29
플랫폼을 Windows Azure 로 정하고 나서 급 관심이 높아 졌습니다.
Azure 위에서 데이터는 어떻게 처리가 되고, MVC 와 잘~ 붙일수 있을까? 라는 의문이 들어 자료를 찾던중 보물과도 같은 아티클을 찾게 되어 간단히 소개 하려 합니다.

Access Your Data On Premise Or In The Cloud With ADO.NET Data Services - Elisa Flasko

원문이고, 내용이 많기 때문에 간략하게 정리 해 봤는데요, 주관이 많이 섞여있으니 정확한 내용은 위 링크를 참조 하세요.

최근에 몇년동안 웹서비스에 대한 관심이 많아졌습니다. 이 웹서비스의 핵심은 HTTP 통신과 XML 기반의 데이터 전달이죠.
훌륭한 기술임에도 불구하고, 데이터 전달 속도가 느려 전체적인 퍼포먼스가 떨어진다는 비평가 들도 많았습니다. 저도 그중 한 사람이니깐요.

하지만, 이렇게 데이터를 XML 기반으로 구조화 되게 표현하면서 점점 데이터 중심적인 RESTful 한 인터페이스를 가지게 되었습니다. 이러한 기술 발전이 클라우드 컴퓨팅의 초석을 마련하게 되지 않았나 생각합니다.


제가 준비하고 있는 "한글 형태소 분석기 With ASP.NET MVC, SPRING.NET, iBATIS.NET ON VS2010 에서 어쩌면 iBATIS.NET 이 빠지게 될지도 모르겠습니다.

왜냐면 Elisa Flasko 이 양반의 아티클에서는 간단한 블로그 서비스를 Windows Azure + Azure Table + ASP.NET MVC 로 구현하고 있습니다. 그 중에 Data Service 부분인데, 어떻게 구현이 되었냐면...

우선, 미니 블로그의 형태를 ASP.NET MVC 패턴으로 설계가 되었고, 모델이 되는 녀석을 POCO(Plain Old CLR Objects) 로 만들었답니다. 이양반의 POCO는 이전에 제가 VO 라고 설명했던 엔티티 클래스와 비슷하다고 보시면 됩니다.

이 POCO를 RESTful 하게 표현하기 위해서 WCF Service 를 만들었고, 프로젝트에 웹참조를 시켰습니다.(대단한 발상인것 같네요)

이게 미니 블로그 데이터 서비스를 위한 POCO 입니다. 그러면 이녀석을 WCF Service 로 만들었다면 원하는 데이터를 어떻게 가져왔을까요? 이를 위해 LINQ 를 사용했네요... 이양반 기술을 아주 적합하게 잘 사용한것 같네요..
public ActionResult Index(string channel, string author)
    {
        microblogEntities svc = new microblogEntities(new 
        Uri("http://localhost:50396/MicroData.svc"));
        ViewData["channels"] = svc.Channels;

        int y = DateTime.Now.Year;
        int mm = DateTime.Now.Month;
        int d = DateTime.Now.Day;

        var q = from m in svc.Messages.Expand("Author").Expand("Channel")
                where m.Channel.ChannelName == channel && (m.DatePosted.Year == y && 
                m.DatePosted.Month == mm && m.DatePosted.Day == d)
                select m;

        if (!string.IsNullOrEmpty(author))
        {
            q = from m in q
                where m.Author.UserName == author
                select m;
        }

        ViewData["msg"] = q;

        return View();
    }


이 코드 보고 깜딱 놀랐습니다. DB 커넥션이라는 개념을 없애버리고, RESTful 한 데이터를 LINQ 를 이용해서 Expand() 메서드를 통해 원하는 데이터를 한번에 가져오는 방식!!!

그리고 가져온 데이터를 ASP.NET MVC 의 ViewData 에 할당하여 View 페이지로 전달을 합니다.

그러면, MVC 에서 M / VC 를 나눌수가 있게 됩니다. 물론 Windows Azure 를 이용하지 않고 이 방식을 적용 할 수가 있게 되죠. 그런데, 왜 Azure 를 사용했을까요? Windows Azure는 HTTP 를 통한 RESTful 한 스타일로 Blobs, Tables, Queues를 지원 합니다.

세가지 방식 중에서 Elisa Flasko 라는 양반은 Tables 를 사용하여 구현을 했는데, 엔티티 계층구조를 저장할 수 있는데, 테이블은 정해진 스키마를 가지지 않고 property를 통해 다양한 데이터타입을 가질수 있습니다. 이 테이블을 CRUD 하기 위해서 LINQ 를 사용할 수 있습니다.

또한, 이러한 RESTful 한 데이터 표현에 대해서 JAVA 어플리케이션으로도 이 클라우드 스토리지에 접근이 가능하게 되는것이죠. 대형 포털의 서비스를 보면, 페이지에 iframe 을 덕지덕지 밖아 넣었습니다.

우리가 Open Social 과 같은 서비스를 개발 하기 위해서 더이상 iframe 따위로 눈가리고 아옹하지 않아도 되었습니다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바