2011년 7월 9일 토요일

C# Window Service + MSMQ를 이용한 404, 500 에러 수집 및 Reporting 강좌(3)

1. MSMQ 설치하기 

첫번째 시간에는 Message Queue가 무엇인지에 대해서 알아보았습니다.
한번 더 짚고 넘어가면 아래와 같이 생각하면 아주 쉽습니다.

MSMQ(Microsoft Message Queue) : 마이크로소프트라는 이름을 가진 우체국
MQ(Message Queue) : 사람이 다른 사람에 보내고 싶은 편지, 소포, 등기등의 메시지

즉, MSMQ는 이기종간에 원하는 데이터를 주고 받을 수 있는 데이터를 말한다. 최근엔 Xml(eXitensibl Markup Language) 형식으로 메시지 데이터를 주고 받고 있습니다.

그럼 위의 MQ 가 무엇인지 개념을 머리속에 넣어놓고 이 MSMQ를 사용하기 위해 어떤 절차를 거쳐야 하는지 알아보겠습니다.
백번 들으면 뭐할꼬.. 보는게 최고다..라는 말을 기억하면서 아래 그림대로 따라하면 MSMQ설치는 끝납니다. 아주 쉽습니다.

우선 필자의  PC OS는 윈도우7입니다. XP나 다른  PC들도 시작 - 제어판 가는 방법은 다 아실거라 생각하고 윈도우7 기준으로 설명드리겠습니다.

1. 시작 - 제어판을 클릭합니다.



2. 제어판을 클릭했으면 아래 윈도우에서 프로그램 및 기능을 클릭합니다.





3. 프로그램 및 기능을 클릭하면 아래와 같은 화면이 나오는데 해당 화면의 왼쪽 메뉴에서 Windows 기능 사용/사용 안함을 클릭합니다.



4. Windows  기능 사용/사용 안함을 클릭하면 아래와 같은 화면이 나오는데 해당 화면에서 Microsoft Message Queue(MSMQ) Server를 모두 클릭하고 확인 버튼을 누릅니다. 즉, 메시지를 받고 처리해줄 우체국을 짓는 것이지요...




5. 그럼 설치가 진행됩니다. 그리고 나서 제어판으로 다시 관리도구에 컴퓨터관리를 클릭합니다.



6. 컴퓨터 관리 창이 뜨면 아래와 같이 MSMQ가 설치된것을 확인하실 수 있습니다.
    경로 : 서비스 및 응용프로그램 > 메시지 큐 > 개인 큐

    * 컴퓨터 관리는 시작 - 실행에서 아래의 명령어로도 띄울 수 있습니다.
      시작 > 실행 > compmgmt.msc


    

이로써 404, 500 사용자 정의 오류로그 모니터링 (관제) 시스템을 위한 메시지 큐 (우체국) 을 모두 다 지었습니다. 다음 시간에는 오류가 발생했을시 MSMQ에서 Error Message를 받아 저장시킬 DB Schema에 대해서 알아보겠습니다. (오류로그 Table, Stored Procedure)

2011년 7월 8일 금요일

C# Window Service + MSMQ를 이용한 404, 500 에러 수집 및 Reporting 강좌(2)

0. Message Queue란?

여기서는 일반적으로 MQ(엠큐 : Message Queue)라고 불리는 MSMQ (Microsoft Message Queue)에 대해서 알아보겠습니다.

우선 원론적인 뜻부터 풀이를 해보면(제일 하단에 쉽게 풀이 해놓았지만...)

Message Queue (이하 : MQ) 라는 이름의 기술을 사용하게 되면 각기 다른 시간에 실행되는 응용 프로그램이 이기종(서로 다른 체제) 네트워크 및 System(일시적인 Offline 포함)에서 서로 통신할 수 있는 것을 말합니다.

A) Message란?
- 두 대의 컴퓨터(혹은 일련의 System) 간에 전송되는 Data의 단위로서, Message는 텍스트 문자열로 구성된 아주 간단한 형식이 될수도 있고 개체를 포함하는 복잡한 형식이 될수도 있습니다.
(혹은 Xml 형태의 문서로도 저장이 가능합니다. - 보통 Standard type XML Documents를 많이 사용하기도 합니다.)

B) MQ의 역할은?
- MQ Management System은 Message를 최초 position에서 Destination position 까지 전달하는 중개자 역할을 합니다.(즉, 우체부라고 생각하시면 됩니다.)

C) 그렇다면 MQ의 목적은 과연 무엇?
Queue의 목적은 Routing을 제공하고 Message 전달을 보장하는데 가장 기초적인 목적을 둡니다.
따라서 Message를 전송할 때 받는 사람이 수신 가능하지 않으면 Message가 성공적으로 전달될 때까지 Queue에서 Message를 보관합니다.

D) MQ의 종류
- 네트워크 유저가 만드는 큐
- 공개큐
- 개인큐
- 관리큐
- 응답큐
- 시스템큐
- 업무일지큐
- 보고서큐
- 개인시스템큐
등이 있습니다.

즉, MSMQ(Microsoft Message Queue)란? 마이크로소프사라는 이름을 가진 우체국이 있고 그 우체국에서 우체국을 이용하는 사람들이 보낸 일련의 연애편지, 소포등을 보관했다가 전달해주는 Message Queue라는 이름을 가진 우체부가 있다고 생각하면 됩니다.

2011년 6월 28일 화요일

C# Window Service + MSMQ를 이용한 404, 500 에러 수집 및 Reporting 강좌(1)

본 강좌는 ASP + C# 윈도우 서비스 + MSMQ 를 이용하여 404500 에러에 대한 수집 및 리포팅하는 부분에 역점을 두려고 합니다.

해당 부분은 실제로 ASP(Active Server Page)로 유저들에게 서비스하는 사이트에서 실행된 프로젝트의 일환으로 핵심 부분들만 간추려서 강좌를 Open하려 합니다.

강좌는 다음과 같은 Index로 진행될 예정이니, 처음 보시는 분들은 차근차근 1개 강좌씩 따라하시면 어렵지 않게 에러 Reporting System을 구축하실 수 있습니다.

Index

0. Message Queue란?
1. MSMQ 설치하기
2. 오류로그 DB Schema 생성
3. ASP 404, 500 Custom error pages 만들기
4. C# Window Service - 1 : 기본 Window Service 템플릿 작성
5. C# Window Service - 2 : Installer 설치 및 코드 작성
6. C# Window Service - 3 : MQ Message Receive 및 Send 작성
7. C# Window Service - 4 : MQ Message Class 작성(추상 클래스)
8. C# Window Service - 5 : MQ Message Xml Data Parsing
9. C# Window Service - 6 : MQ Message DB Insert 부분 작성
10. C# Window Service - 7 : 쓰레드(Thread)를 이용하여 MQ Logic Call 작성
11. C# Window Service - 8 : log.txt File을 이용한 Exception(예외) 처리
12. C# Window Service - 8 : 윈도우 서비스 Install 방법
13. 404, 500 발생 및 MQ Message Data DB insert 확인
14. 기타

위의 순차적인 강좌를 통하여 다음 시간부터 MSMQ를 이용한 오류 모니터링 구축에 대해서 알아보겠습니다.

2011년 6월 23일 목요일

ASP.NET Web.config 암호화/복호화

Status : ASP.NET Web.config(구성파일) 암호화 / 복호화

- 기본적으로 제공되는 Builtin 구성 암호화 제공자는 아래 두가지이다.

  • RsaProtectedConfigurationProvider

  • DataProtectionConfigurationProvider

  •    이 제공자들은 machine.config에서 확인할 수 있다.

    (web.config 내용)
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <connectionStrings>
            <add connectionString="Data Source=127.0.0.1;Initial Catalog=mydb;User Id=admin;Password=admin1234;" name="mydbConn"/>   
            </connectionStrings>
        <appSettings>       
            <add key="Path500" value=".\private$\500_log" />
        </appSettings>
    </configuration>


    1. Visual Studio Command prompt 창을 띄운다.



    2. 해당 prompt 창에서 아래 명령어를 입력한다.
      
        syntax : aspnet_regiis -pef "구성섹션이름" -app "가상디렉토리" [-site "사이트이름"]
       
        예 : d:\webApplication1\Webapplication1\ 디렉토리에 web.config가 있으며 암호화 하고자
              하는 부분의  이름이 connectionStrings 일 경우...

         ASPNET_REGIIS -pef "connectionStrings" "d:\webApplication1\webApplication1"

        * 유의점 : 프롬프트 창에 connectionstrings 라고 대소문자를 맞추어 주지 않으면 구성 섹션을
                          찾을수 없다고 나온다. 대소문자를 꼭 web.config와 맞춰 줄것

        * 유의점 : connectionString에  & <-- 가 들어간 경우 &amp;  라고 치환하여 써준다.
                         실제 암호가 123@##@## 라고 되어 있으면 web.config에는 123@amp;##@amp;##
                         라고 써준다.

       
       
    3. 암호화 성공



    4. web.config File reopen (web.config 파일을 다시 연다.)
        암호화 된 부분을 확인해 볼 수 있다.

    프로필

    내 사진
    마포구 상암동, 서울 특별시, South Korea