SQL Azure 데이터 이용(3)

Cloud 2011. 5. 31. 08:30 Posted by 알 수 없는 사용자


SQL Azure 데이터 이용(3)

이번에는 SQL Azure의 데이터를 Windows Azure 프로젝트의 ASP.NET MVC 응용프로그램에서 데이터를 이용하는 내용을 알아보도록 하겠습니다.

앞에서 살펴보았듯이 기존 ASP.NET MVC 응용 프로그램과 별 차이가 없는 것을 확인 가능합니다.

Cloud 폴더의 Windows Azure 프로젝트를 생성합니다. 프로젝트 이름은 SQLAzureMVC 으로 지정합니다.

Windows Azure 프로젝트에서는 ASP.NET MVC 웹 역할을 추가합니다.

ASP.NET MVC 웹 역할의 이름은 SQLAZMVCWeb 로 아래와 같이 지정합니다.

Models 폴더에 View에서 나타낼 Product 클래스를 아래와 같이 선언합니다. 필요하다면 ProductSubCategory 클래스나 ModelView 클래스를 추가해야 합니다.

SQL Azure에 있는 데이터를 호출하기 위해 clsProduct에서 Enterprise Library Data Access Block을 이용해서 web.config 에 있는 연결 문자열을 통해 액세스합니다.

Controller를 생성하기 위해 Controllers 폴더를 오른쪽 클릭, 추가에서 컨트롤러를 선택하고 이름은 ProductController로 지정합니다.

ProductController Index에서는 아래와 같은 형태로 DropDownlist의 데이터는 ViewData로 처리하고 Product List View로 보내주는 내용을 구성합니다. 그리고 DropDownList Change 했을 경우 POST 방식으로 처리되는 Index 메서드를 정의합니다.

public ActionResult Index()

{

clsProduct product = new clsProduct();

var d = from p in product.GetProductSubCategory().Tables[0].AsEnumerable()

select new ProductSubCategoryModel

{

Name = p.Field<string>("Name"),
ProductCategoryID = p.Field<int>("ProductCategoryID")

};

ViewData["SubCategories"] = new SelectList(d.ToList(),"ProductCategoryID", "Name");

string ddlCategory = d.ToList().First().ProductCategoryID.ToString();

var products = from g in product.GetProducts(ddlCategory).Tables[0].AsEnumerable()

select new ProductModel

{

Name = g.Field<string>("Name"),

ProductID = g.Field<int>("ProductID"),

ProductNumber = g.Field<string>("ProductNumber"),

Size = g.Field<string>("Size"),

Color = g.Field<string>("Color"),

StandardCost = g.Field<decimal>("StandardCost"),

ListPrice = g.Field<decimal>("ListPrice")

};

return View(products.ToList());

}

Views 폴더에 View를 생성해보도록 하겠습니다. Index 메서드에서 오른쪽 클릭하여 뷰 추가 메뉴를 클릭합니다.

강력한 형식의 뷰 만들기에서 ProductModel를 선택하고 뷰 콘텐츠에서는 List 를 선택합니다.

Views 폴더의 Product 폴더의 Index.aspx의 코드를 살펴보고 DropDownList 관련 내용을 추가합니다.

<% Html.BeginForm(); %>

<p><%=Html.DropDownList("ddlCategory",(IEnumerable<SelectListItem>)ViewData["SubCategories"], new { onchange = "this.form.submit()" }) %></p>

로컬에서 실행해서 결과를 확인합니다.

자 이제 Windows Azure ASP.NET MVC Web Role에 대한 내용을 배포해봅니다.

배포에 대한 일반적인 내용은 아래 블로그를 참조하면 됩니다.
http://redju.tistory.com/56
ServiceConfiguration.cscfg
파일에서 인스턴스를 2로 수정하고 솔루션 탐색기의 SQLAzureMVC 프로젝트를 오른쪽 클릭하고 게시를 클릭하여 패키지를 생성합니다.

Windows Azure 사이트로 이동(http://windows.azure.com/) 하여 하여 New Hosted Service를 클릭하여 서비스 이름과 패키지 경로 등을 아래와 같이 지정합니다.

Staging에서 Ready 상태로 되었고 오른쪽 속성 창을 통해 테스트를 해볼 수 있습니다.

SWAP IP를 클릭하여 Staging에서 Production 환경으로 변경하여 결과를 확인합니다.

SQL Azure의 데이터를 이용하는 클라우드 ASP.NET MVC 웹 역할을 생성하고 배포해보았습니다.