728x90

이 설치는 SharePoint Foundation을 간략하게 설치하거나, 개발 환경 정도로 구성할 때 사용한다. 실제 운영하거나, SharePoint Server 2010 Standard 이상 버전의 서버 군 설치와는 다르다.

이 작업을 위해 필요한 환경은 아래와 같다.

Hardware

  • x64를 지원하는 PC 혹은 가상 머신
  • RAM 4G 이상.
  • HDD 80G 이상.
  • 인터넷이 연결 가능한 네트워크

Software

  • MS Windows Server 2008 R2 Standard 혹은 Enterprise Edition.
  • SharePoint Foundation 2010 ( http://download.microsoft.com 에서 다운 가능 )
  • MS SQL 2008 R2 Express with Tools ( http://download.microsoft.com 에서 다운 가능 )
    - 그냥 Express 버전은 Management Tool 이 없어서, DB 설정이나, 구성을 할 때 사용하는 도구가 없다.

Overview

전체적인 설치 순서는 다음과 같다. 이 순서대로 캡쳐 화면과 함께 소개할 예정이다.

  1. MS Windows Server 2008 R2 설치.
  2. Windows 관련 설정.
  3. SharePoint Foundation 설치.
  4. SQL 2008 R2 로 업그레이드 및 DB 관리도구 설치.
  5. SharePoint Foundation 구성.
  6. 기타..

이제 위의 순서대로 설치하는 방법을 나열할 것이다.
캡쳐된 화면은 1024 * 768의 화면을 캡쳐했는데, 블로그의 표시 해상도 상 사이즈를 많이 줄였다.
만일 제대로 확인이 불가능하면, 해당 그림을 클릭해서 확대해서 보면 된다. 

 

MS Windows Server 2008 R2 설치

Windows Server 2008 R2 미디어를 준비한다. 그리고 필요하면 CD-Key 정도는 확보해야 한다. 정품인증을 하지 않아도  대략 30일 정도는 사용할 수 있지만, 그 이후에는 여러 가지 문제가 발생할 수 있다. 또한 Windows Update 부분에서도 일부 불이익을 받을 수 있다.  만일 단순 테스트 용도라면 굳이 정품 인증이 필요 없다.

먼저 일반적인 Windows 설치와 마찬가지로, 미디어를 넣고 시작한다. Windows Server 2008 R2는 Windows 7 기반과 동일한 비슷한 구조로 되어 있어 시작화면도 Windows 7과 비슷하다.

본격적인 서버 설치 화면은 다음과 같다.

로딩이 완료되면 제품을 선택하는 화면이 나온다. 이 중, Standard 혹은 Enterprise를 선택한다. 또한 주의할 점이 (Server Core Installation) 이라는 항목들이 있는데, 이것은 피하도록 하자. 반드시 (Full Installation)을 선택한다. (Server Core Installation)은 진짜 Server의 핵심적인 모듈만 설치하기 때문에, UI가 전혀 없고, 도스 창 하나만 달랑 나오기 때문에, 진짜 운영용 서버를 만드는게 아니면 피하는게 상책이다.

만일 HDD Disk가 여러 개인 경우나, 파티션이 나눠져 있거나, 혹은 기존에 설치된 운영체제가 있는 경우에는 디스크 관련 도구가 뜬다. 그 부분은 상황에 맞춰서 적절하게 설치위치를 잡아준다.

설치가 본격적으로 진행되면 다음과 같은 화면이 나타나면서 자동으로 설치가 진행된다.

설치가 완료되면 Administrator의 암호가 설정되지 않았다고 나오면서 암호를 넣어달라고 한다. 이 암호를 만든 후에, 그 암호로 로그인을 하도록 한다. 그러면 Windows Server 설치는 완료된다.

Windows Server 설정

반드시 필요하다고 하면 필요하고 필요 없다고 하면 필요 없지만, 일단 간단한 설정을 해주도록 한다.

먼저 Internet Explorer의 보안설정을 끄도록 한다. 여기서는 약자로 IE ESC 라고 하는데, 이 항목들을 모두 Off로 해줘야 한다. 안 그러면 보안 설정으로 인해 웹사이트 접속이 어렵기도 하고, SharePoint 내의 검색 엔진이 정상적으로 동작하지 않게 된다.

서버 관리자를 띄우면 바로 볼 수 있다. 아래의 그림에서 왼편에 있는 Configure IE ESC링크를 누르면 창이 뜨는데, 그 안의 내용에 모든 Off 부분에 설정하면 된다.

다음 작업들은 반드시 필요한 것은 아니지만, 관리 및 작업의 편의상 해주면 좋은 정도이다.

Windows Update 비활성화.

MS의 Windows Update 설정은 대부분 완전 자동으로 하는 것을 추천한다. 하지만, 서버 제품 군은 가급적 이 설정을 끄는 것이 좋다. 특히 예상치 못한 시점에 갑자기 꺼지는 경우도 있기 때문이다.

설정 방법은 간단하다.먼저 제어판에 들어간다.

다음은 System and Security에 들어간다.

Windows Update 항목에 들어간 뒤,

왼편에 조그만하게 있는 Chnage Settings에 들어간다.

선택상자에서 Never check for updates를 선택하고 OK를 클릭한다.

 

User Account Control 비활성화

UAC(User Account Control) 이란, Windows에서 동작하게 되는 중요한 자원(시스템 파일 혹은 레지스트리 정보, 설치된 프로그램 파일 등등)이 자동적으로 프로그램에서 손대게 될 때, 사용자에게 확인 작업을 하는 보안 기능이다. 특히 트로이의 목마 같이 사용자 몰래 동작해서 Windows의 주요 파일들을 멋대로 변조하거나, 시스템 감시를 하는 짓과 같은 것을 원천 차단하게 된다. 이 기능은 Windows의 최 중심부인 Kernel 레벨에서 원천 차단하기 때문에, 화면이 완전히 멈추고, 사용자 확인을 요청하는 확인, 취소 버튼만 보이게 된다. 그래서 보안 설정 상 이 부분을 그래도 두는것을 권장한다.

하지만, 매번 작업할 때마다, 화면이 잠기게 되면 매번 확인을 눌러주는 것도 일이 되는데다가, 원격에서 작업하는데 미묘하게 화면이 잠겨서 더이상애로사항이 꽃피게 된다. 가급적 이 옵션을 설정하는게 편하다. 물론 화면이 잠겨도 아무런 문제가 없다면 켜 놓는게 좋다.

먼저 제어판에 들어간다.

제어판 항목 중, User Account 항목을 선택한다.

User Accounts 안의 User Account를 선택한다.

User Account 안에 맨 아래에 위치한 Change User Account Control Settings 를 클릭한다.

그러면 UAC(User Account Control) 설정화면이 나오는데, 여기서 맨 아래 단계로 맞추고 OK를 클릭한다

 

SharePoint Foundation 설치.

이제 본격적인 SharePoint 설치가 되겠다. SharePoint 에서 설치 작업은 크게 파일 자체 설치와 DB 구성 설치로 나눌 수 있다. 그에 맞추어 설명한다.

먼저 SharePoint Foundation 설치 파일을 실행한다. 대개 http://download.microsoft.com 에서 SharePoint Foundation 이라고 치면 설치파일을 쉽게 찾을 수 있다. 이 파일을 받아 설치를 하면 된다. 더블 클릭하면, 자동으로 압축을 풀고 설치진행이 시작된다.

이 SharePoint Foundation도 나름 서버 제품이기 때문에, 서버 제품 특유의 Autorun 화면이 나온다.
그 중 “Install software prerequisites” 라는 항목을 클릭해서 실행한다. (Install 바로 다음에 있는 항목)

예전에는 설치를 진행할 때, 설치에 필요한 필수 항목들을 설치해 달라고 오류가 나거나, 별도 메시지 창을 제공했는데, 이번에는 별도 도구를 제공해서 한번에 필요한 요소들을 모조리 설정해주는 편리한 도구가 생겼는데, 바로 그것이 “Install software prerequisites”  이다.

실행하면 다음과 같은 항목들을 알아서 구성해준다.

  • Application Server Role, Web Server (IIS) Role
  • Microsoft SQL Server 2008 Native Client
  • Hotfix for Microsoft Windows (KB976462)
  • Windows Identity Foundation (KB974405)
  • Microsoft Sync Framework Runtime v1.0 (x64)
  • Microsoft Chart Controls for Microsoft .NET Framework 3.5
  • Microsoft Filter Pack 2.0
  • Microsoft SQL Server 2008 Analysis Services ADOMD.NET
  • Microsoft Server Speech Platform Runtime (x64)
  • Microsoft Server Speech Recognition Language - TELE(en-US)
  • SQL 2008 R2 Reporting Services SharePoint 2010 Add-in

먼저 설치되어 있으면 건너뛰고, 없으면 설치하도록 되어 있다.
이 모든 진행은 마법사 화면으로 되어 있으며, Next만 누르면 거의 완료된다.

설치 중간에 재 시작이 될 수 있는데, 로그인만 하면 자동으로 실행되므로, 반드시 설치했던 계정으로 계속 로그인 하도록 한다. (대개 특별한 계정을 만들지 않으면 Administrator 계정일 것이다. )

모든 설치가 완료되면 다음과 같은 요약화면이 뜬다.

완료가 되었으면 이제 SharePoint 자체를 설치한다. 
아래와 같은 초기 화면이 닫혔다면 다시 설치파일을 실행해서 화면에 나오게 한다.

이제 앞서 클릭했던 “Install software prerequisites” 다음 항목인 “Install SharePoint Foundation”을 선택하도록 한다.

자동으로 새로운 설치 진행 준비가 완료되면 다음과 같이 설치 종류를 물어본다. 하나는 Standalone 설치이고 다른 하나는 Server Farm 설치이다. SQL DB를 별도로 구성하려면 Server Farm을 해야 되지만, 이를 위해서는 Active Directory 까지 준비가 되어 있어야 한다. 그 정도 되면 여기서 설명하는 범위가 벗어나므로 그냥 Standalone으로 구성한다. 자동으로 SQL DB와 SharePoint 모듈이 모두 설치되며, 심지어는 자동으로 팀 사이트까지 만들어 놓게 된다.

여튼 Standalone을 선택한다.

모든 설치는 자동으로 진행된다, 끝날 때까지 기다리면 된다.

완료가 되면, 체크 박스와 함께 Finish 버튼이 나오는데, 체크 박스를 끄고 Finish를 한다. 다음 단계는 SharePoint 구성인데, 이 체크 박스의 체크의 의미가 그 SharePoint 구성 도구를 자동으로 띄울 것인지를 묻는 것이다.

우리는 SharePoint 구성 전에 , SQL Server 2008 R2에 대한 업데이트를 먼저 진행할 것이다.

 

SQL 2008 R2로 업그레이드 및 DB 관리도구 설치

SharePoint 가 2010이 되면서 SQL Server 2008 R2를 지원하게 되었는데, 이를 통해 업데이트 된 사항이 바로, FILESTREAM이라는 기능이다. 이 기능은 BLOB 즉 대용량 바이너리 파일을 DB에 직접 넣지 않고, 공유 폴더 같은 곳에 넣어주는 기능이다. SharePoint의 최대의 단점이 바로 이 바이너리 파일을 직접 DB에 넣는 문제라고 볼 수 있는데, 이 부분을 상당 부분 개선할 수 있다.

그렇지만, 이 FILESTREAM 기능을 사용하려면, SQL DB 자체의 설정 변경이 반드시 필요하다. 그 작업을 위해서는 당연한 것이지만, SQL Server가 2008 R2 이여야 하며, 또한 SQL Management Studio 가 필요하다.

이제부터 그 작업이라고 보면 된다.

먼저 MS SQL Server 2008 R2 Express with Tools 라는 것을 받는다. 반드시 With Tools 버전을 받는다. 다른 Express 버전과는 다르게, 이 버전은 SQL Managment Studio가 탑재되어 있다. 물론 별도로 받아 설치할 수 있지만, 한번에 받는 것이 더 편하다.

먼저 SQL Server 2008 R2로 업그레이드부터 한다.

SQL Server 2008 R2로 업그레이드

이 작업도 많이 애매한 편인데, 요즘 등록된 SharePoint Foundation 2010 에는 2008 R2 버전이 탑재되어 있다. 예전에 받아놓았던 SharePoint Foundation 설치 파일에는 그냥 2008만 담겨 있다.여튼 R2든 그냥 2008이든, 업그레이드 과정을 먼저 시도한다.

설치용 실행파일을 실행하면 Server 설치도구가 뜬다.

좀 메뉴가 복잡하게 되어 있는데, 왼편 Installation 항목을 클릭해서 화면을 전환한 뒤, 3가지 항목 중에 가운데에 위치한, Upgrade from SQL Server 2000, SQL Server 2005 or SQL Server 2008 을 클릭하도록 한다.


그러면 EUL 승인 화면이 뜨는데, 적당히 하고 Next를 하면, 대부분의 화면에서는 자동으로 넘어간다.

완료되면 정리된 요약 화면이 뜬다. 해당 서버 설정에 따라 Reboot를 요청하기도 하는데, Reboot를 해주도록 한다.

다시 서버 설치용 도우미 화면으로 돌아가도록 한다. 그리고 난 뒤, 이번에는 “New Insatllation or add features to an existing installation” 항목을 클릭한다.

무언가 자동으로 설정을 체크하고 자동으로 휙휙 넘어간다. EUL 화면이 뜨면 반드시 승인하고 넘어가도록 한다.

그러면 아래와 같은 선택화면이 나오는데, 모두 선택하도록 하자. 굳이 분리해서 구성할 정도로 옵션이 많지도 않기 때문에, 체크 박스 모두 선택한 뒤 Next를 클릭한다.

다음은 SQL의 인스턴스를 선택하는 부분인데, 여기서는 기존에 있는 인스턴스에 덧붙이는 형태로 한다. 그래서 선택 버튼에서도 Named Instance로 선택되어 있다. 특별히 변경하지 않고 그대로 진행한다.

다음은 서비스 동작 계정인데, 이 부분 역시 기본값으로 둔다.

이부분은 SQL 인증 방식인데, 만일 원격에서(다른 PC에서)해당 SQL DB를 열여볼 일이 있다면,반드시 아래 화면과 같이 설정한다. Windows authentication mode는 AD 계정이 아닌 이상 내부에서 밖에는 열 수가 없다. 그러므로 반드시 Mixed Mode를 선택하도록 한다. 그리고 암호를 설정한다.

같은 화면의 탭에서 FILESTREAM을 선택하는데, 여기 안의 모든 항목을 체크하도록 한다.

Next를 클릭하면, 역시 오류 사항 자동 보고 인데 역시 그냥 두고 Next

자동으로 구성되면서 무엇인가 열심히 설치된다.

완료되면 완료 보고 페이지가 뜬다.

 

SharePoint Foundation 구성

이제 본격적인 SharePoint 구성이다. 원래 이 부분은 Server Farm 인 경우 복잡다단하게 되지만, Standalone으로 하는 경우에는 대부분의 설정이 자동으로 구성되기 때문에, 지켜 바라만 봐도 된다.

실행 방법은 Start –> All Programs –> Microsoft SharePoint 2010 Product 에 있는 SharePoint 2010 Products Configuration Wizard 를 실행하면 된다.

간단한 형태의 마법사가 뜬다.

Next를 누르면 경고 메시지가 뜨는데, 그냥 Yes를 클릭한다. 이 작업에서 자동으로 설정되고, 자동으로 껏다가 켜지는 항목들을 나열하는 부분인데, 운영 중이 아닌 경우에는 무시해도 되는 항목들이다.

이제 설치를 가만히 지켜본다.

완료되면 Finish를 클릭한다. 그러면 자동으로 만들어진 웹사이트가 뜬다. 웹사이트 주소는 http://컴퓨터이름 이다.

현재 로그인한 계정의 ID와 암호로 로그인하면 된다.

 

간단하게 구성한 SharePoint는 여기까지. 설치 작업은 예전 WSS 3.0 보다 훨씬 간단해지고, 단순해진 것 같다.
더욱이 자동적으로 설치 환경을 꾸며주는 기능은 칭찬을 주고 싶다.

이 외에도 실제로 활용하려면, 몇몇 부분을 손봐야 겠지만, 당장 사용하는데에는 큰 문제가 없을 것이다.

728x90
728x90
Free-BSD 기반으로 구성된 FreeNAS에서 원본 패키지를 가져와서 컴파일하여 make install 이 조금 곤란한다. ( 관련된 프로그램들이 전혀 없기 때문. 컴파일러라든가, make 바이너리라든가..).그래서 반쯤 포기했는데, 우연히 FreeNAS Forum에서 해당 Thread를 찾아 이를 소개한다.
요는 Free-BSD에서 제공하는 pkg_add 명령어를 사용하는 것이다.
(기타 기능 확장도 이 pkg_add 라는 것을 사용하여 추가하여 하는 것들이 대부분이다. )



FreeNAS 에서 SVN 서버 실행하기 ( HOW-TO )

무엇보다도 이 모든 내용은 http://www.h-i-r.net/2008/03/sysadmin-sunday-subversion.html 의 도움이 컸다. 이 웹페이지에서 SVN 서버를 동작하는 방법, 구하는 방법등을 모두 설명하고 있다.

테스트를 목적으로 필자는 Virtual Machin(VMWare)에 FreeNAS를 설치했다. 현재 VM의 호스트는 Windows Vista 이다.

기본적으로 두대의 장치를 가지고 있다고 생각하면 된다.

FreeNAS : 192.168.1.1 : 이것은 FreeNAS(0.69.2)가 설치된 가상 머신으로 Full Install 되어 있다.
Host : 192.168.1.2 : 이것은 현재 Vista가 동작 중인 본인의 PC 이다.

귀찮은 작업을 줄이려면, 먼저 SSH를 활성화하도록 한다. 그래야 명령어들을 직접 복사하면서 작업할 수 있다. putty 같은 것으로 연결한 뒤, 사용자 ID와 암호를 넣도록 하자.

Shell에 들어갔으면 다음 명령어를 입력한다.
pkg_add -r subversion
잠깐 동안 각종 관련 Package 들을 자동으로 다운로드 받으면서 설치할 것이다.

설치가 완료되었으면 Subversion의 저장소로 사용될 경로를 만들어주도록 한다.
여기서는 /var/svn/repositories 을 사용하도록 하겠다.

mkdir -p /var/svn/repositories

이제 SVN 서버를 실행할 것이다. 이 실행 할 때 사용되는 파라미터들을 먼저 보도록 하자.

  • -d : 데몬 모드
  • --listen-port : 외부에서 연결을 할 때 사용될 포트 번호.  사용자 별로 다양한 포트번호들을 사용하는데, 여기서 명확하게 잡아주는 게 좋다.
  • --listen-host : 호스트 이름. 이 부분이 없으면 제대로 동작하지 않는 것 같다. 여기서는 지금 필자의 환경에 맞추어서 192.168.1.1 로 설정한다.
  • -r : 저장소에 대한 경로를 설정한다.

자 이제 위의 파라미터 값들을 넣고 실행해 보도록 하겠다.

/usr/local/bin/svnserve -d --listen-port 3690 --listen-host 192.168.1.1 -r /var/svn/repositories

SNV 서버를 실행한 뒤, 실제로 사용할 저장소 부분을 생성하도록 한다.

/usr/local/bin/svnadmin create /var/svn/repositories/hir-test/

이 명령을 사용하면 몇가지의 설정 파일들과 저장소를 생성하게 된다. FreeNAS를 기본적으로 설치하였다면, Shell에서 이 파일을 설정하기 힘들다. 대신 Web GUI에 접속해서, 메뉴의 advanced -> file editor를 이용해 다음 파일을 띄우도록 하자.

/var/svn/repositories/hir-test/conf/svnserve.conf

주석 처리된 다음 항목들의 풀어 주도록 하자.

anon-access = read
auth-access = write
password-db = passwd

다음 파일을 읽어오도록 하자.

/var/svn/repositories/hir-test/conf/passwd

이제 다음과 같이 사용자와 암호를 넣어주도록 하자.

test = test
자 이제 모든 준비가 완료되었다. 서버는 이미 모든 동작이 준비되었다.
이제 호스트 컴퓨터(내 Vista 컴퓨터)에서 SVN 클라이언트를 사용하여 접속하여 테스트해보도록 한다. ( http://www.sliksvn.com/ 에서 명령어 기반의 클라이언트를 받을 수 있다. ). 자 이제 작업을 할 폴더를 먼저 선정하여 그 위치로 이동하도록 하자.
(예를 들자면, cd c:\temp\test )

자 이제 저장소와 작업할 자신의 폴더와 연결하는 작업을 하도록 한다.

svn checkout svn://192.168.1.1:3690/hir-test/

이러면 revision 0로 해서 check-out이 걸릴 것이다.
자 그러면 hir-test 라는 폴더가 생성되는데 그 디렉토리로 들어가도록 하자.

cd hir-test

이제 이 디렉토리 안에 파일을 하나(예를  들자면, test.txt 같은 것)를 만들어 주도록 하며, 다음과 같은 명령어를 넣어보록 하자.

svn stat

그러면 아래와 같은 내용이 보일 것이다.

state : ? test.txt

이 test.txt 라는 파일은 아직 서버의 저장소에 저장되지 않은 파일이라는 의미로 이 파일을 저장소에 넣으려면 다음과 같은 명령어를 넣어주어야 한다.

svn add test.txt

자 svn stat 명령어를 다시 실행해서, 이제 내용이 정상적으로 등록되었는지 보도록 한다. 이제 이 모든 작업을 완료하려면, 저장소로 변경된 모든 내용을 commit 하도록 요청하는 작업을 해야 한다. 이 commit은 다음과 같이 하면 된다.

svn commit --message : "my firest test"

이제 사용자 아이디와 암호를 넣어주시면 state : commited revision 1이 라는 것을 볼 수 있다.

다른 위치에서 이와 같은 형태로 작업을 해보면, 이제 서버에서 변경된 내용을 그대로 받아서 확인해 볼 수 있다.











728x90
728x90

( 조심 : 이 정보는 직접 Coding을 해서 얻은 결과 입니다. 실제 Azure 아키텍처를 명확히 이해하여 쓴 글은 아닙니다. )

Windows Azure에서 데이터를 저장하는 방식은 Table 기반의 저장 방식을 따른다.
물론 Azure 서비스 중 하나인 SQL 서비스를 직접 이용하는 방법이 있지만,
사실 그 방법 말고도, .NET 3.5 에서 제공하는 LINQ 방식을 이용하여 만드는 방법이 있다.
그리고 현재 Windows Azure Platform Kit ( 11월 버전 ) 에 담긴 Hands on Lab을 하다 보면,
이렇게 구성하는 구나, 싶다.


1. 데이터 저장을 위한 Table 구성

데이터의 기본은 표. 즉 Table 이다. 그리고 그 Table에 데이터를 쌓는 것을 레코드 혹은 Row 라고 한다.
그리고 각 데이터의 종류를 나타내는 것을 필드 혹은 Column 이라고 한다.

Table

  Column  
Row ->    
     
     

여기서는 위의 구조 중 Row와 Table을 구현하여 데이터를 구성하게 된다.

먼저 Table을 역할을 하는 Data 기본 셋으로 Windows Class Library 프로젝트를 하나 생성한다.
즉 Table이 여러 개 필요하면 그에 맞추어 프로젝트를 생성하면 된다.
( 이 부분은 나중에 Azure 문서 중 Data 관련된 사항을 더 공부하고 정리할 예정이다.)

즉 필요한 Table 만큼의 Windows Class Library 프로젝트를 생성하도록 한다.( Hands on Lab에서는 방명록을 구현하는데 그 때 사용되는 데이터를 구성하기 위해 하나의 Class Library 프로젝트를 만드는데 바로 그게 데이터 저장을 위한 Table 역할을 하게 된다. )

단 .NET Framework 3.5 이상 용으로 만들어야 한다.
    그래서 개발 환경 조건에, Visual Studio 2008 이상이 필요한 것이다.


이 때 프로젝트에는 다음과 같은 어셈블리를 Reference 해야 한다.

System.Data.Services.Client   ( .NET Framework 3.5 )
Microsoft.WindowsAzure.StorageClient   ( Azure SDK )

일단 위의 레퍼런스가 끝났다면 이제 Row을 구성한다.

2. 데이터 구조 잡기 가장 기초 부분 Entity

위에서 언급한 Row 부분 – 관점을 조금 돌리면 Column을 구성하는 것? 이라고 볼 수도 있다. - 을 구성하는 방법이다. 어떤 데이터를 어떻게 저장할 것인지를 결정하는 부분이다.
방법은 다음과 같다.

  1. public 클래스를 만든다.
  2. Microsoft.WindowsAzure.StorageClient.TableServiceEntity 를 상속 받는다.
  3. 생성자를 만든다.
  4. 생성자 안에 PartitionKey 와 Row Key를 설정한다.
  5. 프로퍼티를 만든다.

위의 다섯 단계를 찬찬히 설명하면 아래와 같다.

1과 2는 C#의 기초 단계와 다름이 없을 것이다.
일단 using을 써서 Microsoft.WindowsAzure.StorageClient 를 추가하는 줄을 넣는다.

using System;
using Microsoft.WindowsAzure.StorageClient;

그리고 난 뒤에, class 앞에 public 넣고, 맨 뒤에 : 을 넣은 뒤, TableServiceEntitiy를 넣는다

using System;
using Microsoft.WindowsAzure.StorageClient;

namespace GuestBook_Data
{
    public class GuestBookDataEntry : TableServiceEntity
    {

    }

}

위의 단계까지 왔으면 일단 기본은 끝난 것이다.

3~4 번 단계에서는 생성자를 생성하고, 그 안에 고유의 값을 넣는 작업을 한다.
단 기본 생성자로 생성해준다. 그리고, 이 GuestBookDataEntry 클래스는 프로젝트 밖에서  new 해야 되기 때문에, 이 생성자를 반드시 public으로 선언해야 한다. 
생성자 안에서  PartitionKey와 RowKey에 고유의 값을 넣어주도록 한다.
RowKey는 모든 데이터에서도 가장 유일한 값이여야 한다는 것은 이해했지만, PartitionKey는 DB의 Partition 과 유사한 기능 같았다. 그래서 이 부분은 그냥 다른 Table과 구분되는 정도의 레벨의 데이터로 생각하여 넣었다. PartitionKey 는 알아서.. 잘 넣어주시면 될 것 같다.

using System;
using Microsoft.WindowsAzure.StorageClient;

namespace GuestBook_Data
{
    public class GuestBookDataEntry : TableServiceEntity
    {
        public GuestBookDataEntry()
        {
            PartitionKey = "GuestBookRawData";

            RowKey = string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid());
        }
    }
}


5번 단계에서는 실제 값이 어떻게 들어갈지를 정의하면 된다.

using System;
using Microsoft.WindowsAzure.StorageClient;

namespace GuestBook_Data
{
    public class GuestBookDataEntry : TableServiceEntity
    { 
       public String Name { get; set; }
        public String Email { get; set; }
        public String HomePage { get; set; }
        public DateTime writtenDate { get; set; }

        public GuestBookDataEntry()
        {
            PartitionKey = "GuestBookRawData";

            RowKey = string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid());
        }
    }
}

C# 3.0 에서 사용되는 프로퍼티의 기본형으로 써주면 된다.
public으로 정의하고 그 데이터 형을 결정한 뒤, get과 set을 정의해주면 된다.
( C# 3.0에서 보면, 프로퍼티에서 그냥 get;set; 을 써주면 알아서 저장된다. )

아직은 기본형만 써봐서, 다른 형태의 Class 데이터나 복합형 데이터는 만들어보지는 않았다.
일단, 위와 같은 형태로 구성한다.

그러면 기본적인 Row 가 정의된다.

3. Context 구성하기.

데이터의 입출력을 할 때, 그 흐름을 정의하는 부분이라고 보면 된다.
어디서 저장되고, 어디로 저장되며 어떻게 진행되는지. 그러나, 실제로의 구현은 모두 기본값 만을 이용하여 생성할 예정이다. 그러므로 코드는 무척 간단하다.

using System;
using System.Linq;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace GuestBook_Data
{
    public class GuestBookDataContext : TableServiceContext
    {
        public GuestBookDataContext(string baseAddress, StorageCredentials credentions)
            : base(baseAddress, credentions)
        {
        }

        public IQueryable<GuestBookDataEntry> GuestBookDataEntry
        {
            get
            {
                return this.CreateQuery<GuestBookDataEntry>("GuestBookDataEntry");
            }
        }
    }
}

위의 코드 중 굵은 부분만 구성해주면 된다. 그런데, 저 붉은 부분은 좀 신경써서 정리해주어야 한다.
만일 저 붉은 내용의 문자열이 조금이라도 틀리면 알기 힘든 오류를 내어 디버깅 자체가 어려워 질 수 있다.
반드시 저 붉은색 부분은 신경써서 넣어주기 바란다. 저 붉은 부분에 넣는 것은 앞서 선언한 Entity 에 대한 Class 이름이다.

4. 데이터 접근용 Class.

사실 위의 두개의 class만 있어도 기본적인 데이터 접근은 가능하다. 하지만, 외부에서 데이터 호출을 위한 로직을 직접 선언하여 구축하는건 조금 지저분 해지기 때문에, 가급적 이런 대리자의 역할을 하는 클래스 구성이 효율적일 수 있다.

이 클래스는 굳이 상속 받을 필요는 없다. 생성 한 뒤, 데이터를 쿼리하거나 데이터를 넣는 정도의 인터페이스만 제공하면 되는 클래스 이기 때문이다.

먼저 Skelton 코드로는 다음과 같다.

using System;
using System.Linq;
using System.Collections.Generic;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace GuestBook_Data
{
    public class GuestBookDataSource
    {
        private static CloudStorageAccount storageAccount;
        private LottoSvcDataContext context;

        static GuestBookDataSource()
        {
            storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

            CloudTableClient.CreateTablesFromModel(
                typeof(GuestBookDataContext),
                storageAccount.TableEndpoint.AbsoluteUri,
                storageAccount.Credentials);
        }

        public GuestBookDataSource()
        {
            this.context = new GuestBookDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);
            this.context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
        }

    }
}

위에서 보는 것과 같이 생성자를 두 개 만든다.

둘 다 생성자이기는 하지만 그 역할을 판이하게 다르다. static 으로 선언한 생성자는 프로그램이 시작할 때 new 하던지 말던지 1회성으로 무조건 1번 실행하는 단발성 생성자다. 여기서는 앞서 만든 테이블 구조에 따라 가상의 테이블을 만들어주는 역할을 하게 된다.

그리고 두번째에 위치한 생성자는 일반적인 생성자로, 실제 이 데이터 관련 작업을 수행할 때 new 해서 생성하면 불리는 생성자다.

그리서 첫번째의 static 생성자에서는 CloudStorage 관련 도구를 사용하여 Table을 실제적인 인스턴스를 생성하는데 그 역할을 다하며, 두번재의 일반 생성자에서는 그 만들어진 Table에 접속하기 위한 기초적인 내용이 담기게 된다. 이 때, Static 생성자에서 사용하는 DataConnectionString 부분을 주목하자.
저 문자열이 뜬금없이 나온 문자열은 아니다. 분명 누군가가 저 값을 가져왔기에 그 내용을 쓸 수 있는 것이다.

저 내용은 이 DataSource를 New 해서 만들어서 사용하는 주체인 Web-Role 혹은 Worker-Role의 옵션에서 설정하게 된다. 이에 대한 설명은 나중에, 그냥 설정하는 방법은 다음과 같다.

  1. Solution Explorer 안에서 Service 목록이 나오는 곳을 찾는다. ( Azure 프로젝트로 만듦면 특이한 아이콘으로 생긴 프로젝트가 보인다 )
  2. 그 중에 설정하려고 하는 Role 부분에서 오른쪽 버튼을 클릭한다.
  3. 속성 창이 뜨면, 왼쪽 항목 Tab에서 Settings를 선택하고 AddString을 한 뒤, Name에 DataConnectionString을 넣고, Type은 ConnectionString을 Value는 그냥 기본값을 둔다. ( 기본값으로 하면, 로컬 DB에 저장하겠다는 의미 )

일단 이 DataSource 라는 것을 사용하는게 Web-Role이라는 가정하예서, Web-Role에 있는 설정을 변경하는 작업을 나타낸다.

일단 여기까지.
실제 DataSource 의 Select, Insert, Update, Delete 구현은 다음으로~

728x90
728x90
  • 어제는 들어가자마자 자서 경기 결과를 알 수 없넹(me2dayzm 월드컵)2009-06-18 10:06:41
  • 맨유경기 한국초대전 무료티켓 700장 뿌린다는데. 조건이 뭘까나(me2dayzm 맨유 무료티켓)2009-06-18 10:08:05
  • 베트남 아줌마 한국말 잘하는 편이라도 알아듣기 힘들군 내 일본 발음이 바로 저런 거 아닐까?(me2dayzm)2009-06-18 10:09:10
  • 구글맵 덕을 가끔보넹(me2dayzm 구글맵)2009-06-18 10:09:40
  • 오늘은 완존 지각. ㅋㅋ(me2dayzm 지각대장)2009-06-18 10:10:20
  • 인사 평가에 대한 고려,기대심 무엇하나 없네. 하는데 까지 절ㄹ 열심히.(me2dayzm)2009-06-18 10:11:18
  • 트위터가 알고 보니 오바마 부터 다양한 계층들이 이용중이라는 군요. 울나라에서는 김연아 효과덕으로 유명세 탔다고 하던데. 뭐니 해도 유명한 자가 한번 들이 밀어줘야…뭔가 있어보이는 지도 모르겠네요.(트위터 김연아 효과 뭐 나쁘진 않은데 뭔가 모르겠지만 낯설다는 느낌)2009-06-18 15:38:23
  • 오늘 틈새라면 안 매웠다. 잘못 만든듯(me2dayzm)2009-06-18 19:11:14
  • 어느새 목요일 내일만 지나면 다시 한 주 쫑(me2dayzm 주말D-1)2009-06-18 19:12:12
  • 양아들이은, 형광빛 카울한 택트에 큼직허니 음악틀때 안 쪽팔린가?(me2dayzm 이해하기 힘든 양아 머리 구성)2009-06-18 19:14:10
  • 일 할때 쓸 슬리퍼 하나 사야겠다.(me2dayzm)2009-06-18 19:16:15
  • 오늘은 핸폰으로 전환.(모바일 모드 에서 핸폰 모드로)2009-06-19 11:39:44
  • Azure 서비스로 만들려는 서비스나 만들어야 겠다.(azure 서비스 클라우드 컴퓨팅)2009-06-19 11:43:29
  • 다음 주 정도에 만들어놓은 프로그램의 결과나 봐야 겠다.2009-06-19 11:43:50
  • 지식 산업 인프라 구축에 요즘 유행한다는 방법론을 무조건 도입하기 전에, 눈에 보이는 무언가를 만들고 난 뒤에 하나씩 변경하는게 옳지 않을까?2009-06-19 11:53:18
  • 오늘 묘하니 비 올 분위기(me2sms)2009-06-19 12:31:54
  • 정치가들의 말바꾸기는 정말이지 신뢰안가게 만드는 주요한 원인.2009-06-19 12:50:26
  • 애저서비스 괜찮은것 같다 한번은 해볼만 한듯(me2sms)2009-06-19 14:24:40
  • 친구 꼬셔가가 애저 해볼까나?(me2sms)2009-06-19 14:27:44
  • 왠지 100건 다 안쓰믄 돈 날리는 기분 드는건 나만일까?(me2sms)2009-06-19 14:29:16
  • 장실에서 일보면서 전화허긴 글코,역쉬 미투질 뿐 인듯(me2sms)2009-06-19 14:30:51
  • 그르나 역시 일반 핸폰은 문자보내기가 영 껄끄럽다는….(me2sms)2009-06-19 14:32:28
  • 칵 옆사로에 비 맞은 중이 있다!! ㄷㄷㄷ(me2sms)2009-06-19 14:40:36
  • ASP.NET으로 프로젝트 열어봐야 겠다 익스프레 버젼도 될까?(me2sms)2009-06-19 14:55:22
  • 에쟈 잘만 구성하면 나름 도움이 될듯. 자바에 뜻이 있다면 구글 쪽에 그런 서비스가 있다고 들었다(me2dayzm)2009-06-19 19:02:46
  • 오늘은 하루종일 머리도 아프고 몸도 피곤했다(me2dayzm)2009-06-19 19:03:37
  • 콧잔등에 종기같은게 나는 바람에 안경 쓰는게 스트레스가 되버렸다(me2dayzm)2009-06-19 19:04:33
  • 오늘 하루 그저 그렇다(me2dayzm)2009-06-21 23:46:26
  • 내일은 무슨 일이 시작되고 마무리 져질까?(me2dayzm)2009-06-21 23:47:19
  • 통신이 안된다는데 무슨뜻일까?(me2dayzm)2009-06-22 05:22:39
  • 나에게서 일관성이 사라지다.2009-06-22 10:33:50
  • 조용히 있고 싶다.2009-06-22 10:34:27
  • 하지만, 끊임 없이 나오는 소리는 내야 된다.2009-06-22 10:34:44
  • 스트레스에 취약한 나로써는 명상으로써 스트레스를 흘릴 뿐.2009-06-22 10:35:07
  • 아니면 새로운 무언가를 쫒아 주변을 잊는 수 밖에…2009-06-22 10:35:32
  • 무대위의 광대 느낌. 우울증 초기 증세인가.(무언가 공허하니 울적하다 주변이 너무 시끄럽다)2009-06-22 10:43:07
  • 애자일이 먼지 아니?2009-06-22 13:40:44
  • 그럼 스크럼은? 먜한가지?2009-06-22 13:41:27
  • 인생 변화하듯 소프트웨어도 계획대로 잘 안되서 생각해낸게 그거 같은데…2009-06-22 13:42:50
  • 난 애자일 실패한 프로젝트를 봐서 그런지 약간 부정적이넹2009-06-22 13:43:39
  • 하지만 당신 같이 탑다운 방식에 약한 사람 한텐 중요한 방식일거 같은디..2009-06-22 13:45:07
  • 호들갑 좀 떨지 말고… 좀.2009-06-22 14:11:33

이 글은 하인도님의 2009년 6월 18일에서 2009년 6월 22일까지의 미투데이 내용입니다.

728x90

+ Recent posts

728x90