728x90
최근 클라우드 컴퓨팅이 큰 화두입니다. 구글의 Back-end 시스템이 이미 클라우드로 구동되고 있다는 사실은 너무나 많이 알려진 사실이지요. 국내의 대기업들도 너도나도 클라우드 컴퓨팅에 뛰어 들고 있지만 세계적인 IT 벤더들의 발걸음을 따라가기는 무척 힘든 상황입니다.

마이크로소프트가 클라우드 컴퓨팅에 대응하기 위해서 제공하고 있는 서비스의 이름이 바로 Azure 입니다. Azure 는 웹 서비스로의 Role 뿐만 아니라 일반적인 어플리케이션을 위한 Worker Role 을 제공하고 Storage Service 를 통하여 Back-end 의 데이터베이스 기능까지 충실하게 제공하고 있는 클라우드 플랫폼 입니다.

시대적 흐름에 맞추어 닷넷 개발자 분들도 Azure 에 대응하는 스킬을 익혀둘 필요가 있을 것 같습니다. 저역시 이제 시작하는 단계이지만 Azure 에 올려 서비스 할 수 있는 웹, 워크의 개발을 하나씩 살펴보면서 실제 Azure 환경에 포팅하는 것까지 한번 포스팅을 통해서 공유해 볼까 합니다.

개발환경의 준비 : 비주얼 스튜디오 2010 또는 비주얼 스튜디오 2008 서비스팩 1

비주얼 스튜디오에는 Azure 개발환경이 기본적으로 포함되어 있지 않습니다. 비주얼 스튜디오에서 Azure 개발을 시작하기 위해서는 별도로 제공되는 플러그인을 설치하여 개발환경에 템플릿을 추가해 주어야 합니다. NoPD 는 비주얼 스튜디오 2010 을 사용하고 있으나 비주얼 스튜디오 2008을 쓰시는 분들도 서비스팩 1 으로 업데이트를 하면 동일하게 진행할 수 있습니다.


[ 다운로드 링크 : http://tinyurl.com/2a5qnrt ]

Azure 프로젝트 만들기

Azure Tools 를 다운로드 받아 설치하면 비주얼 스튜디오의 템플릿에 Cloud 라는 항목이 추가 된 것을 확인하실 수 있습니다. Cloud 항목 아래에는 Windows Azure Cloud Service 라는 하나의 템플릿만 존재하고 있습니다. Azure 개발은 Visual C# 으로만 제공하는 것일까요? NoPD 의 경우 Visual C# 만 설치한 상태라 이 부분은 잘 판단이 안됩니다만 다른 닷넷 언어가 안되지는 않을거라 생각됩니다.


프로젝트와 솔루션의 이름을 지정하고 확인을 누르면 아래와 같은 창을 만나게 됩니다. Azure 는 Role 이라는 이름으로 프로젝트를 구분짓고 있습니다. Role 이라는 것은 Azure 클라우드 플랫폼에서 구동되는 하나의 어플리케이션이라고 보면 됩니다. Web 형태의 서비스인지(Web Role) 아니면 데몬과 같은 백그라운드 어플리케이션인지(Worker Role) 등에 따라 Role 이 나뉘게 됩니다. 개발하려는 프로젝트의 성격에 따라 항목을 선택해 주면 됩니다.


우리는 솔루션 단위로 프로젝트를 생성하고 개발하기 때문에 솔루션 안에는 여러가지의 Role 이 있을 수 있습니다. 왼쪽에 나열된 항목들 중 필요한 Role 을 모두 우측의 빈 리스트 박스로 이동시켜 주면 프로젝트에서 해당 Role 을 사용할 수 있게 됩니다.

- NoPD -
728x90
728x90
* 이 글은 오라클 기술 네트워크(Oracle Technology Network)에 공개된 Joh Paul Cook 의 영문 아티클을 번역 / 의역한 글입니다. 원문은 링크(http://tinyurl.com/m69mvh)를 통하여 확인하실 수 있습니다.

에러 핸들링

에러가 발생하게 되면 닷넷 어플리케이션은 유연하게 에러를 핸들링 해야 하며 사용자에게 의미있는 메세지를 전달해 주어야 합니다. Try-Catch-Finally 에러 핸들링 구조는 닷넷 언어의 한 부분입니다. 아래의 소스코드는 오라클 연계 개발시 Try-Catch-Finally 에러 핸들링 구조를 사용하는 간단한 예입니다.

try
{
    conn.Open();

    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;

    cmd.CommandText = "SELECT dname FROM dept WHERE deptno = " + textBox1.Text;
    cmd.CommandType = CommandType.Text;
    if (dr.Read())
    {
        label1.Text = dr["dname"].ToString();
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message.ToString());
}
finally
{
     // 객체 초기화 코드
}
이러한 에러 핸들링 방식은 에러 발생시 무리 없이 에러를 처리할 수 있는 구조이긴 하지만, 사용자 친화적인 방식의 에러 처리라고 보기는 어렵습니다. 이러한 코드상에서 에러가 발생하는 경우 아래와 같이 불친절한 메세지가 사용자에게 출력되게 됩니다.


ORA-12154 와 같은 에러 코드, 에러 메시지는 오라클 DB 관리자(DBA)나 개발자 에게는 굉장히 유용한 메세지 임은 틀림없는 사실입니다만 사용자에게는 전혀 그렇지 못합니다. 보다 나은 에러 핸들링 방법은 추가적인 Catch 구문을 이용하여 주요 데이터베이스 에러 코드를 처리하고 사용자 친화적인 메세지를 출력해 주는 것입니다.

catch (OracleException ex)
{
    switch (ex.Number)
    {
        case 1 :
            MessageBox.Show(" 중복된 데이터를 Insert 하고 있습니다 ");
            break;
        case 12545 :
            MessageBox.Show(" 데이터베이스를 사용할 수 없습니다 ");
            break;
        ...
        ...
        default :
            MessageBox.Show(" 처리되지 않은 데이터베이스 에러가 발생했습니다 : " + ex.Message.ToString();
            break;
        }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message.ToString());
}
보다 상세하게 처리 로직을 추가한 위의 코드를 보면 catch 문이 2개가 사용된 것을 볼 수 있습니다. 오라클과 관련된 에러를 핸들링하는 catch 구문과 일반적인 에러를 핸들링하는 catch 구문이 그것입니다. 이와 같이 에러 메세지를 처리해 주면 사용자에게 보다 편안한 에러 메세지를 제공해 줄 수 있을 것입니다.

- NoPD -
728x90
728x90
실버라이트 2 의 한글판 비주얼 스튜디오 2008 SP1 버전용 공개가 미루어 지는 것에 대한
불만을 성토한 것이 불과 24시간도 되지 않았는데,
상당히 민망하게도 조금전에 한글버전이 공개가 된 것 같습니다. ;;;

지금 마이크로소프트 다운로드 사이트를 직접 방문하시거나,
silverlight.net 사이트를 통해서 다운로드 사이트로 연결하실 수 있습니다.


728x90

+ Recent posts