ASP 프로그램의 설계

최근에 ASP 프로젝트를 진행하면서 가장 초창기에 생각했던 부분입니다.


타 프로그램과 달리, ASP는 하도 구식 기술인지라, 특정 프레임워크가 존재하는 것도 아니고.. 해서 요즘 웹 프로그램의 화두가 되고 있는 MVC 모델을 적용하기가 쉽지는 않지요.


 


스프링 프레임워크만 봐도 아주 훌륭하게 독립적인 모델이 존재하고 있지 않습니까? 그런데 ASP에서는 이건 뭐 가동되고 있는 객체가 없으니.. 전문가들이야 COM 객체를 활용해서 잘 사용하겠지만, 초보인 입장에서 그래도 ! MVC 비슷하게 구동하고 싶은게 욕심이긴 하더군요.


뭐 사실 MVC를 잘 모르는 입장에서 그냥 뭐랄까.. 효율적인 ASP 웹 프로그램의 설계라고 말하고 싶네요.


 


ASP를 설계하기 위해서는.. 음.. 우선, 웹 프로그램이 다 그렇듯이 대다수는 뭐 게시판과 같은 형태로 돌아가게 됩니다. 그럼 결국 모든 것들이 list / view / write 로 구분될 수 있지요. 수정 삭제요? write와 view로 구분될 수 있겠지요.


 


그럼 MVC와 같은 패턴을 적용하기 위해서는? 우선 각 사이트마다 고유의 기능을 처리할 수 있기 때문에 우리는 컨트롤을 생성해 주어야 합니다.


 


결국 컨트롤도 param값과 파일명으로 구분할 수 밖에 없는데요 예를 들면..

<%
	'클래스 생성
	Set dFunc = NEW FUNC_FD_VIEW

	'Param 정보 받기
	Dim uno : uno = Request("uno")
	Dim status : status = Request("status")
	Dim comment
	Dim cuno
	Dim wtype

	If status = "view" Then '글보기
		Call dFunc.GetFDView(uno,status)	
	ElseIf status = "comment_write" Then ' 코멘트 쓰기
		comment = Request("comment")
		wtype = Request("wtype")

		Call dFunc.CommentWrite(uno,comment,wtype)
	ElseIf status = "comment_modify" Then ' 코멘트 수정
		comment = Request("modComment")
		wtype = Request("modWtype")
		cuno = Request("cuno")
		Call dFunc.CommentModify(uno,cuno,comment,wtype)
	ElseIf status = "comment_delete" Then ' 코멘트 삭제
		cuno = Request("cuno")
		Call dFunc.CommentDelete(uno,cuno)
	ElseIf status = "delete" Then ' 글 삭제
		Call dFunc.DelFD(uno)
	Else
		response.write "
End if
%>

뭐 이런식으로 구분할 수 밖에 없다는 것입니다.


(사실은 저게 Controller의 맞는 표현일 수도 있어요.)


 


그다음에 우리는 list / view / write 에 해당되는 클래스들을 만듭니다.


참고로, ASP의 클래스는 c++의 클래스를 생각하시면 오산입니다. 프로그램 실행과 동시에 각 클래스의 객체가 움직이는 것이 아니라, 각 페이지마다 초기값 세팅부터 해서 처음부터 전 과정을 거쳐야만 클래스가 다시 작동할 수 있습니다.


말그대로 저 클래스는 함수의 뭉퉁구리 일 뿐입니다! 그 이외에 c++과 같은 기능은 절때로 없다는 것입니다.


 


하나의 게시판을 예로 들면


List 에서는


– Search


– Listing


– Paging


 


View 에서는


– Viewing


– Hitting


– Deleting


– Comment View


– Comment Write


– Comment Modify


 


Write 에서는


– Write


– Modify


– Reply Write


– Attach File


 


이러한 기능들을 한다고 치면, 이에 해당되는 기능들을 함수로 구현해서 각각의 list/view/write 클래스에 넣고 우리는 메뉴 구분 / 파일 구분 / DB구분 등으로 다양한 게시판들을 처리할 수 있다는 것입니다.


그리고, 웹 프로그램인 만큼, input hidden 값으로 param값들을 각 페이지마다 공통된 것들은 가지고 있어야 겠지요. 아니면, ASP의 Common에서 직접 생성을 해주던가, 이런 식으로 처리하는 것이 좋습니다.


 


이렇게 처리되면 최종적으로는 파일/폴더 구조가 대충 이렇게 됩니다.

































































Depth-1 Depth-2 File 설명
admin 관리자 페이지 폴더
css
default.css 스타일 시트 파일
flash 플래쉬 파일 모음
images 이미지 폴더
board 게시판용 이미지
common 공통 이미지
js 각종 스크립트 파일
include
function
func_board.asp 게시판 관련 함수 모음
func_common.asp 공통 인클루드 파일
classes 클래스 인클루드 파일 모음
class.list.asp LIST 용 클래스
class.view.asp VIEW 용 클래스
class.write.asp WRITE 용 클래스
structure 구조체 인클루드 파일 모음
data.asp 데이터 구조 클래스
각종 서비스 페이지 폴더
index.asp 메인 화면


 


 


따지고 보면 별 것 아니지만.. ASP를 설계할 떄 참조가 되었으면 좋겠네요 🙂