달력

03

« 2010/03 »

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  

'ASP.NET'에 해당되는 글 2

  1. 2008/09/05 ASP.NET Generated Image 컨트롤
  2. 2007/01/24 ASP.NET AJAX 1.0 정식 버전 출시

얼마 전 한 신입사원이 데이터베이스에 저장되어 있는 BLOB형태의 이미지 파일을 ASP.NET 웹페이지로 출력하기 위해서, 데이터베이스에서 byte배열을 얻어서 하드디스크에 GUID형태의 이름을 가지는 이미지로 저장한 다음 그 파일을 출력하고, 이미지를 생성할때 마다 파일이 생성될 폴더에 파일 중 생성시간이 하루 이상 지난파일을 삭제하는 로직으로 짜고 있는것을 본적이 있었습니다.

검색엔진에 검색 한번으로 엄청난 양의 레퍼런스 코드가 쏟아져 나올텐데도, 자기 나름대로 계획을 세우고 꿋꿋하게 그걸 구현해 나가는 모습을 보고 얘한테 뭐라고해야하나 말아야하나 고민을 했었더랬습니다.

당시에는 핸들러파일(ashx)파일에서 이미지를 출력하도록하는 방법을 알려주고 끝냈었는데, 오늘 보니 Micorosft에서 ASP.NET Generated Image 라는 상당히 유용해 보이는 컨트롤을 내놓았네요.

서버 컨트롤형태로 구현되어 있고, 각 용도별 구현을 위해서 ImageHandler를 상속받는 ashx 핸들러 파일을 생성하여 컨트롤에 지정하도록 하고 있습니다.
즉, 이미지관련 처리를 위한 라이브러리를 제공하고 그 라이브러리를 이용해서 실제 이미지를 그리는 부분은 사용자에게 맡기는 형태입니다.

예제를 한번 보자면, 페이지에 컨트롤을 올리면
captured_Image.png 
디자인뷰 코드상에서 보면

<cc1:GeneratedImage ID="GeneratedImage1" runat="server" 
    ImageHandlerUrl="~/ImageHandler1.ashx" >
    <Parameters>
      <cc1:ImageParameter Name="Msg" Value="Welcome To CodeDigest" />
      </Parameters>
</cc1:GeneratedImage>
이미지를 처리할 대상을 ImageHandler1.ashx 로 설정하였습니다.
즉, 이미지 출력에 관한 모든 것은 ImageHandler1.ashx가 처리하는 것입니다.
ImageHandler1.ashx는 아래와 같습니다.
<%@ WebHandler Language="C#" Class="ImageHandler1" %>
 
using System;
using System.Collections.Specialized;
using System.Drawing;
using System.Web;
using Microsoft.Web;
 
public class ImageHandler1 : ImageHandler {
    
    public ImageHandler1() {
        // Set caching settings and add image transformations here       
       }
    
    public override ImageInfo GenerateImage(NameValueCollection parameters) {
        // Add image generation logic here and return an instance of ImageInfo
        Bitmap bit = new Bitmap(500, 500);
        Graphics gra = Graphics.FromImage(bit);
        gra.Clear(Color.AliceBlue);
        gra.DrawString(parameters["Msg"], new Font("Verdana", 16), Brushes.Black,0 , 150);
        this.ImageTransforms.Add(new WaterMark());
        return new ImageInfo(bit);
    }
}

위 코드는 새로운 Bitmap을 생성하서 그 안에 매개변수로 넘어온 메시지를 드로잉하여 반환합니다.
그러므로, 이 예제의 결과는 아래와 같습니다.
captured_Image.png[5]

하지만, 지정한 핸들러파일의 GenerateImage메서드의 구현에 따라서 이미지는 어떠한 형태로도 출력이 가능해 집니다.
DB에서 이미지를 불러와서 출력하는 것도 가능하고, 이미지의 리사이즈 및 이미지에 워터마크를 넣고, 테두리를 입히는 작업등 구현에 따라 다른 형태의 이미지를 출력할 수 있을것입니다.

컨트롤의 다운로드는 여기서 가능하시고, .NET Framework 3.5 SP1이 적용되어야 사용이 가능합니다.

좀더 자세한 내용 및 관련 예제은 다음 글 에서 확인이 가능합니다.
New Image Generator control in ASP.Net 3.5

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by WHiSTLE
ASP.NET AJAX
그동안 Atlas라고 알려졌고, 정식명칭이 ASP.NET AJAX가 된 Microsoft ASP.NET AJAX가 긴 beta, RC 과정을 마치고 1.0 정식버전을 출시 했군요..

Ajax라는 현재 가장 주목받고 있는 WEB관련 기술을 ASP.NET에서 좀 더 쉽고 빠르게 개발하기 위한 ASP.NET AJAX는 ASP.NET에 그치지 않고, PHP및 기타 다른 플랫폼 언어에 까지 그 발을 넓히고 있습니다.

그 이유는 ASP.NET AJAX가 서버컴포넌트로만 이루어진 것이 아니라, 클라이언트 사이드의 크로스 브라우저 라이브러리를 포함하기 때문인데요..

Atlas 시절에 본바로는 JavaScript의 라이브러리를 제공함으로 JavaScript를 마치 OOP적으로 이용이 가능하며, 자주 쓰이는 함수 및 용법에 대한 캡슐화가 잘 되어 있었습니다.

하지만, 그 클라이언트코드들이 그동안 개발을 해오던 개발자들에게 받아들여질지는 약간 의문스럽더군요.. 이미 익숙해질 대로 익숙해진 JavaScript를 사용하면 좀 불편하기는 하겠지만, 그동안의 사용으로 불편함을 그다지 느끼지 않는 개발자가 많을 테고, ASP.NET AJAX에서 제공하는 클라이언트 라이브러리를 사용하기 위해서는 또 다른 공부가 필요하기 때문이죠..

하지만, ASP.NET AJAX를 이용하면 클라이언트 라이브러리 자체에서 크로스브라우저(플랫폼)을 지원하기 때문에 IE, FF등의 브라우저 환경에 신경쓸 필요가 없어지는 부분에서는 상당히 작업량이 줄어들걸로 예상이 되네요...

서버사이드 코드또한 ASP.NET에서 XmlHttp객체를 이용하기 위해서 클라이언트 스크립트 코드와 새로 작성된 서버로직 페이지를 생성하는 방법이 아닌, 기존 ASP.NET 코드에 ScriptManager라는 서버 컨트롤과 UpdatePanel 서버 컨트롤을 이용하면 되므로 기 작성된 페이지들에 대한 Ajax적용이 간편해졌습니다.

또, ASP.NET AJAX Control Toolkit을  제공함으로서 그동안 좀더 사용자 친화적인 UI를 위하여 JavaScript와의 전쟁을 치러서 만들어내야 만 했던것들을 제공하므로 이부분은 개발자 뿐만이 아니라 디자이너분들께도 많은 도움이 될 수 있을 듯합니다.

설치를 해보고 좀 더 테스트를 해봐야 하겠지만, 현재 트랜드에 맞는 웹페이지를 개발하기 위한 유용한 플랫폼이 될 것은 자명할 것같네요.

ASP.NET AJAX 홈페이지 : http://ajax.asp.net
ASP.NET AJAX 1.0 및 관련 다운로드 : http://ajax.asp.net/downloads/default.aspx?tabid=47
ASP.NET AJAX Docs : http://ajax.asp.net/docs/default.aspx

이전버전이 설치되어 있는 경우에는 VS2005 환경에서는 스키마를 캐싱하므로 인텔리센스에 문제가 생길 수 있다고 합니다.
아래 경로의 내용을 삭제하는 것이 좋다고 하네요..

윈도우XP: C:\Document and Settings\[YourUserName]\Application Data\Microsoft\VisualStudio\8.0\ReflectedSchemas
윈도우 비스타: c:\Users\[YourUserName]\AppData\Roaming\Microsoft\VisualStudio\8.0\ReflectedSchemas
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by WHiSTLE