이번 강좌에서는 비주얼 베이직으로 컴포넌트를 만들어 보겠습니다.

강좌에 들어가기에 앞서 선수학습으로 비주얼베이직을 할줄 알아야하는데, 일단 만드는 것을 따라서 할 것이므로 차츰 공부하시면 될 것 같습니다.

먼저 콤포넌트에 대해서 알아보겠습니다.

왜 콤포넌트을 만들어야하는가? 이것의 해답은 재사용이 가능했으면 좋겠다는 객체모델에 근거을 두고 있습니다. 컴포넌트기반의 애플리케이션이라고도 불립니다. 이것은 응용프로그램을 컴포넌트의 조합으로 개발하는 것을 말합니다. 우리는 많이 자주 사용되는 것이 있다면 함수로 만들어서 사용했었는데, 이런식으로 만든 것을 콤포넌트라고 부릅니다.

ADO 객체(콤포넌트)를 우리는 무엇으로 만들었는지는 모르나, 인터페이스만 알고 있는 것으로 잘 사용하고 있는 것이 그 예입니다.
cf)인터페이스 (일종의 함수)

우리는 내부는 알지 못하지만 인터페이스을 통해 ADO의 콤포넌트을 잘 사용할수 있었습니다. 그것을 일반적으로 콤 이라고 부릅니다. 

cf)



COM(Component Object Model) : 마이크로소프트의 이진규격.
프로그래밍언어는 아니나, VB같은 언어로 만들거나 호출할 수 있습니다.
컴포넌트는 컴파일된 파일(클래스파일.dll)로 사용합니다. 

장점:






응용프로그램개발시 생산성 향상됩니다.
바이너리코드로, 적은 메모리와 리소스의 절약.
비즈니스로직과 사용자인터페이스의 분리.
프리젠테이션계층(HTML) + 비즈니스로직(ASP) ==> 디자이너가 코딩을
바꾸는 것이 어렵습니다.
컴포너트을 만들면,프리젠테이션과 비즈니스로직의 구분이 가능합니다.

단점:


실제로는 완벽한 구분이 힘듭니다.(asp.net은 완벽히 구분함.)
유지보수가 힘듭니다.

그러면 콤포넌트을 직접 만들어보겠습니다. 보통은 비주얼베이직으로 만듭니다.
(C++로도 만듬.) 

먼저 간단한 비주얼베이직으로 콤포넌트을 만들어보겠습니다. 자료실을 할때, abc업로드콤포넌트등이 .dll로 나타나는 것을 생각하고 만들면 되겠습니다. 이번에 만들려고 하는 콤포넌트는 데이터베이스에 연결하는 콤포넌트을 만들고 계속해서 추가하도록 하겠습니다. 일단 비주얼베이직을 엽니다.



<그림 1>

우리가 만들 것은 activex DLL을 선택합니다. 프로젝트의 이름이 가장 중요하므로 잘 정합니다. 예를 들어 feelzoa 라고 회사이름을 썼다고 합시다. 그 다음 클래스 모듈에서 zzang이라는 이름을 정합니다. 



<그림 2>

다음으로 프로젝트에 가서 참조 추가 마이크로소프트엑티브X 데이터오브젝트2.7을 추가합니다.



<그림 3>

그리고 코딩을 해 보도록 하겠습니다.



<그림 4>

옵션 익스플리트 하고 변수선언을 합니다. 그리고, 함수을 만듭니다.

Option Explicit

Dim dbopen As New ADODB.Connection
Dim rs As New ADODB.Recordset
Public Function dbcon()
Dim cnn As String
cnn = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=changho;Initial Catalog=tongtong;Data Source=."

Set dbopen = New ADODB.Connection
dbopen.open cnn
Set dbcon = dbopen
End Function

이렇게 만들었다면, 끝났으니,파일에 feelzoa.dll 만들기을 누르면 자동으로 .dll파일이 만들어지고, 또한 윈도우2000서버의 레지스터리에 등록이 됩니다. 위치는 C:\WINNT\system32\inetsrv 에 가져다 놓습니다.



<그림 5>


<그림 6>

연결 객체을 만들어 보았습니다. 이제 게시판에서 활용을 해 보도록하겠습니다. 게시판의 write_ok.asp 의 코드는 대강 이렇게 되어있을 것입니다. 수정해 보겠습니다.



<그림 7>

이미 우리의 객체는 컴퓨터에 설치(등록)이 되어있으므로, 연결객체을 만들어주는 9번, 10번라인을 바꾸면 됩니다. 인터데브에서 불러옵니다. 자료실에서 사이트겔럭시을 부르듯 객체의 이름을 부릅니다. 

일단, set connection =server.createobject("프로젝트이름.클래스이름)
그 다음 그객체의 메소드나 속성을 사용합니다.(여기서는 함수입니다. 아까 함수의 이름을 dbcon() 이라고 주었던 것을 기억하시면 됩니다. 아래의 그림을 참조해서 보도록합니다. 주요 소스는 아래와 같습니다.) 

set connection=server.CreateObject ("feelzoa.zzang")
set dbcon=connection.dbcon

sql = "INSERT INTO board (w_name,"
sql = sql & "e_mail, w_home, w_title,"
sql = sql & "w_content,"
sql = ...
dbcon.execute sql

set dbcon=nothing 



<그림 8>

소스에 데이터베이스에 접근하는 여러소스들이 감추어지는 장점이 있다는 것을 알수가 있습니다.

feelzoa.dll과 asp 소스을 웹서버로 가져가서 써야합니다. 이 dll은 등록을 해서 써야하는데 등록하는 방법은 아래와 같습니다.



<그림 9>

명령프롬프트을 열고, 해당 되는 dll 이 위치하는곳으로 이동한 다음, regsvr32 디엘엘이름을 쓰면 됩니다.

그럼. 콤포넌트에 게시판의 글쓰기 SQL까지 감추어 보겠습니다.



<그림 10>

위에 보이는 것처럼 함수를 추가합니다.

Public Function writeok(w_name, e_mail, w_home, w_title, w_content, w_pass)

Dim sql As String
Dim sql1 As String

sql = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=changho;Initial Catalog=tongtong;Data Source=."
Set dbopen = New adodb.Connection
dbopen.Open sql

sql1 = "INSERT INTO board"
sql1 = sql1 & " (w_name, e_mail, w_home, w_title, w_content, w_pass)"
sql1 = sql1 & " VALUES ('" & w_name & "', '" & e_mail & "', '" & w_home & "', '" & w_title & "','" & w_content & "', '" & w_pass & "')"

dbopen.Execute sql1

End Function

그리고, 재 컴파일을 시킵니다. ASP의 write_ok.asp 코드에서 connecton이라는 객체을 부르면, writeok 함수가 나오고, 그 함수에 인자값을 주면됩니다. 아래의 그림을 보고 따라해봅니다. 



<그림 11>

connection.writeok aaa,bbb,ccc,ddd,eee,fff 의 코딩만 추가해주면 됩니다.

+ Recent posts