검색어
ASP.NET / MVC / DB / Database
개발 환경
OS : Windows 8.1 64bit
IDE : Visual Studio 2013 Community
DB : MS SQL Server 2008 R2 Express
Framework : .Net Framework 4.5
서버 환경
OS : Windows Server 2012
WAS : IIS 8
DB : MS SQL Server 2008 R2 Express
개발 목표
간단한 일정 관리 페이지
상용 수준은 어렵겠지만 규모를 줄이고 수준을 낮춰서 구현 할 예정
기능 목록
1. 일정 등록
일정 구성요소 : 제목, 내용, 등록자, 등록일, 수정일, 시작일, 종료일, 참여자
2. 일정 수정
등록자, 등록일, 수정일을 제외한 모든 항목에 대해 수정이 가능
3. 일정 삭제
자신이 등록한 일정만 삭제 가능
4. 일정 확인
기본적으로 본인이 등록한 일정과 참여하는 일정을 표시
테이블 형태의 목록 혹은 Gantt 차트 형태로 표시
5. 일정 알림
등록한 일정이 실행될 시간이 다가오면 설정해둔 값에 따라 사용자의 e-mail로 알림
6. DashBoard (Admin)
사이트 사용량을 기록하고 한눈에 확인 할 수 있음
본격! 구현화계 크라피카
1. Project Setting
Create Project : New Project - C# - Web - MVC ( .Net 4.5 )
프로젝트 생성
.NET Framework 4.5 선택. ASP.NET 웹 응용 프로그램 선택. 프로젝트 이름 입력
MVC 선택
프로젝트 생성 완료
축하 인사와 함께 도움이 되는 링크들이 잔뜩
디버깅 실행
설치된 브라우저에 한하여 디버깅 타겟을 변경 할 수 있음
실행 결과
프로젝트에 기본으로 포함된 코드 덕분에 바로 실행 가능
사용하지 않는 파일들 제거
최초 프로젝트 생성시 같이 생성되는 파일로 참고용으로 놔둬도 좋다
사용하지는 않을 예정
Connect Database Server : Web.config
프로젝트의 Web.Config 설정
2. Get Reference Package (Nuget Console)
Nuget 패키지 관리자 실행
콘솔창에 Install-Package Petapoco 입력
설치 완료된 모습
이제 Database Migration 작업을 해보자
서비스 게시와 동시에 관리를 위한 계정을 생성하기 위하여 진행하는 작업이다
우선 패키지 관리자 콘솔에서 아래 명령어를 입력한다
PM> Enable-Migrations
아래와 같이 Migrations/Configuration.cs 가 생성된걸 확인 할 수 있다
protected override void Seed(Manager.Models.ApplicationDbContext context)
{
IdentityResult IdRoleResult;
IdentityResult IdUserResult;
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
if (!roleManager.RoleExists("Admin"))
{
IdRoleResult = roleManager.Create(new IdentityRole { Name = "Admin" });
}
if (!roleManager.RoleExists("Manager"))
{
IdRoleResult = roleManager.Create(new IdentityRole { Name = "Manager" });
}
if (!roleManager.RoleExists("Tester"))
{
IdRoleResult = roleManager.Create(new IdentityRole { Name = "Tester" });
}
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
var admin = new ApplicationUser { UserName = "admin" };
IdUserResult = userManager.Create(admin, "admin");
var adminId = userManager.FindByName(admin.UserName).Id;
IdUserResult = userManager.AddToRole(adminId, "Admin");
var manager = new ApplicationUser { UserName = "manager" };
IdUserResult = userManager.Create(manager, "manager");
var managerId = userManager.FindByName(manager.UserName).Id;
IdUserResult = userManager.AddToRole(managerId, "Manager");
var tester = new ApplicationUser { UserName = "tester" };
IdUserResult = userManager.Create(tester, "tester");
var testerId = userManager.FindByName(tester.UserName).Id;
IdUserResult = userManager.AddToRole(testerId, "Tester");
}
Configuration.cs에 Seed 메소드를 위 내용으로 채운다
간단히 설명하자면 ASP.NET에서 인증을 도와주는 Identity2와 EntityFramework가 계저의 역할을 정의하고
역할을 맡을 계정을 미리 하나씩 생성해두는 코드이다
ASP.NET에서는 Code First라고 부르는 약간 독특한 프로세스인데 데이터베이스를 작성하는 코드를 먼저 짜두면
EntityFramework가 데이터베이스 생성을 돕는다
우리는 이 Code First를 이용해서 데이터베이스를 생성하면서 같이 필수 계정을 등록하는 작업을 하는 것이다
일단 기본적으로 관리자 계정과 역할을 생성해야 사이트 생성 후 관리를 할 수 있을 것이다
이 역할을 Admin이라 명명한다
위 코드에서는 Admin 역할 계정명을 admin으로 작성했으나 헷갈리지 않게 하려고 한 것이고 실제로 admin 혹은 administrator를 그대로 사용하면 계정 생성이 안된다
확인된 걸로는 admin과 administrator만 피하면 어떤 것이든 생성되는 것 같다
일단 코드를 수정하여 "webAdmin / webAdmin"으로 생성하자
또한 사이트를 관리하는데 시스템 적인 관리가 아닌 운영 측면의 관리를 위해 Manager 역할을 생성한다
사이트에 기능을 새로 추가하거나 수정하고 라이브 서버에 게시하고 싶은데 일반적인 사용자의 접근을 막고 싶은 경우가 있을 것이다
Tester라는 역할을 만들어두고 기능 혹은 페이지를 Tester에게만 보이게 하여 QA를 실시 할 수도 있겠다
일반 사용자는 따로 역할을 배정하지 않도록 할 것이다
아래 명령어를 입력하여 설정한 내용을 적용하여 실제 DB를 생성해보자
PM> Update-Database
Web.config 설정과 Migration 설정 코드에 의해서 솔루션 폴더에 있는 App_Data 폴더에 Manager.mdf / Manager_log.ldf 파일이 생성되었을 것이다
그리고 SQL Management Studio를 실행하여 로컬 연결로 들어가면 Manger 데이터베이스가 추가 되어 있을 것이다
기본적인 환경 설정은 여기까지
앞으로 MVC 구조로 원하는 사이트를 구현하고 각종 라이브러리를 사용해 개발과 운영의 편의성을 높여 볼 것이다
다음 포스팅 : ASP.NET with Petapoco
3. How to use Petapoco
DB를 다루는데 도움이 되는 가벼운 싱글톤 라이브러리
인젝션 방지도 기본적으로 해줌
테이블과 매칭 시킬 모델 클래스를 생성
이전 단계에서 nuget 패키지 설치를 했음
4. Hangfire
스케줄링 라이브러리
대쉬보드를 통해 스케줄 걸린 작업을 확인하고 결과도 볼 수 있음
PM> Install-Package Hangfire
Hangfire 실행
원격지에서 Hangfire dashboard 보기
1회성 스케줄 작업 추가
주기적인 스케줄 작업 추가
5. SMTP 서비스
IIS 설정
6. log4net
log4j의 닷넷 버젼
쉬운 설정과 사용법으로 빠르게 적용이 가능함
사용이 용이한 것에 비해 강력한 기능
로깅을 위한 log4net 설정
로깅 시나리오 구성
로깅 실행 및 확인
PM> Install-Package log4net
7. javaScript! 웹을 화려하게! 유려하게! 미려하게!
차트 라이브러리(바, 레이더, 도넛 등)
차트 라이브러리(간트)
https://github.com/komastar/GanttChart
날짜와 시간 라이브러리
C# 정규표현식 Regular Expression MSDN 참조 (0) | 2015.07.30 |
---|