ASP 강의 10: 직접 구성 요소 작성
저자:Eve Cole
업데이트 시간:2009-05-30 19:54:53
이전 콘텐츠에서는 구성 요소를 사용하는 방법을 배웠습니다. 인터넷에 구성 요소가 많지만 작은 구성 요소에는 미국 달러를 지불해야 하는 경우가 많고, RMB를 지출하려면 국내에서 생산되는 구성 요소가 너무 적습니다. 장소를 찾을 수 없습니다. 쉽습니다. 그냥 직접 작성하세요. 실제로 구성 요소를 작성하는 것은 어렵지 않습니다. 낮은 수준의 구성 요소를 작성하기 시작하고 천천히 상위 수준의 구성 요소를 작성하기 시작하면 됩니다. ActiveX 서버 구성 요소를 작성하려면 Visual Basic, C++, Java 등 다양한 도구 중에서 선택할 수 있습니다. 여기서는 가장 간단한 VB6.0을 선택합니다. 이전에 VB를 사용해 본 적이 있다면 1시간 이내에 만들 수 있습니다. . 위젯이 나옵니다.
1. 빠른 컴포넌트 작성 - 컴포넌트 작성을 위한 가장 기본적인 단계입니다. 이 부분에서는 주로 컴포넌트 작성의 기본 단계를 설명합니다. 더 자세히 알아보려면 VB6.0 도움말의 "ActiveX DLL 만들기" 섹션을 참조하세요. 문서(MSDN 라이브러리의 문서 파일 이름은 Vbcon98.chm입니다).
목적: 가장 간단한 adder 구성 요소를 작성합니다. 이 구성 요소에는 두 개의 속성과 하나의 메서드가 있습니다. 이 구성 요소가 이미 존재한다고 가정하고 ASP에서 이 구성 요소를 사용하는 코드를 살펴보는 가장 친숙한 부분부터 시작해 보겠습니다.
<%
희미한 객체 합계
'먼저 구성 요소를 생성합니다. 구성 요소 식별자는 TestDll.Sum입니다.
objSum = Server.CreateObject("TestDll.Sum") 설정
'TestDll.Sum의 "TestDll", "Sum"을 기억하세요.
objSum.augend = 10.52 'augend 속성은 요약입니다
objSum.addend = 382.41 'addend 속성은 가수입니다.
결과 = objSum.Plus 'Plus 메서드 합계
응답.쓰기 결과
objSum = 없음으로 설정
%>
다음 작업과 밀접한 관련이 있는 TestDll, Sum, augend, addend, Plus 키워드를 꼭 기억하시기 바랍니다. 자세한 단계는 다음과 같습니다.
1. VB6.0을 실행하고 "파일" 메뉴에서 "새 프로젝트"를 클릭하고 → "새 프로젝트" 대화 상자에서 "ActiveX DLL" 아이콘을 두 번 클릭합니다. → Visual Basic이 자동으로 새 프로젝트에 클래스 모듈을 추가합니다. 프로젝트 Class1(그림 1과 같이 "프로젝트 탐색기"에서 볼 수 있음)
2. F4 키를 눌러 속성 창을 엽니다. "Name" 특성을 두 번 클릭하고 "Class1"을 Sum으로 변경합니다.
3. 프로젝트 메뉴에서 프로젝트 1 속성을 클릭하여 프로젝트 속성 대화 상자를 엽니다. "프로젝트 이름"에 TestDll을 입력하고 "프로젝트 설명"에 "ActiveX DLL 예제 생성"을 입력합니다. 그림 2와 같습니다.
팁: ASP 생성 구성 요소에 있는 두 식별자 TestDLL.Sum의 의미를 이해하고 있습니까?
4. "파일" 메뉴에서 "프로젝트 저장"을 클릭하고 프로젝트 파일을 SetupDll.cls 및 SetupDll.vbp라는 이름으로 저장합니다.
5. Sum 클래스의 속성을 만듭니다.
(1) "도구" 메뉴에서 "프로세스 추가"를 선택하여 "프로세스 추가" 대화상자를 엽니다. 그림 3과 같이 "이름" 상자에 augend를 입력하고 "속성"을 클릭한 다음 "확인"을 클릭합니다. (참고: 현재 초점은 코드 창에 있어야 합니다. 그렇지 않으면 "프로시저 추가" 메뉴가 유효하지 않습니다. ).
(2) "도구" 메뉴에서 "프로세스 추가"를 선택하여 "프로세스 추가" 대화상자를 엽니다. 이름 상자에 addend를 입력하고 속성을 클릭한 다음 확인을 클릭합니다.
6. Sum 클래스에 대한 메서드를 만듭니다.
도구 메뉴에서 프로시저 추가를 클릭하여 프로시저 추가 대화 상자를 엽니다. "이름" 상자에 플러스를 입력합니다. 유형에서 "서브루틴" 또는 "함수"를 선택할 수 있습니다. 이 예에서는 가수와 합의 합을 반환하려고 하므로 "함수"를 클릭한 후 클릭합니다. 확인을 클릭하세요.
이제 이전 ASP 코드의 다섯 가지 핵심 단어가 사용되었으므로 이제 많은 내용을 이해하게 되었습니다.
7. 클래스 모듈 Sum 코드 창의 모든 코드는 다음과 같습니다.
옵션 명시적
Private mdbl_augend를 Double로 사용
비공개 mdbl_addend를 Double로
공용 속성 Augend()를 Double로 가져오기
augend = mdbl_augend
끝 속성
공용 속성 Let augend(ByVal vNewValue As Double)
mdbl_augend = vNewValue
끝 속성
공용 속성 addend()를 Double로 가져오기
addend = mdbl_addend
끝 속성
공용 속성 Let addend(ByVal vNewValue As Double)
mdbl_addend = vNewValue
끝 속성
공용 함수 플러스()
더하기 = 피가수 + 가수
기능 종료
위의 코드는 시스템 생성 코드와 약간 다르다는 점을 눈치챘을 것입니다. 그 이유는 주로 Public Property Get augend() As Variant 부분이 실제 데이터 유형 Double로 대체되었기 때문입니다.
참고: 실제로 x = objSum.agend 문이 실행되면 Property Get 프로시저가 호출되어 mdbl_agend 값을 얻습니다. objSum.augend = 10.52 문이 실행되면 Property Let 프로시저가 호출되어 10.52가 할당됩니다. mdbl_augend로.
8. 마지막 단계는 "파일" 메뉴에서 ".Dll(K) 생성..."을 클릭하여 SetupDll.dll 파일을 생성하는 것입니다.
이제 구성요소가 생성되었습니다. 이제 먼저 VB6에서 테스트 프로젝트를 작성하여 파일이 올바른지 테스트할 수 있습니다.
1. "파일" 메뉴에서 "새 프로젝트"를 클릭하고 → "표준 EXE"를 더블클릭합니다.
2. "Project" 메뉴에서 "Reference"를 클릭하고 → "Reference" 대화 상자에서 "Browse" 버튼을 누르고 방금 컴파일된 "SetupDll.dll" 파일을 선택하고 → "OK"를 클릭합니다.
3. 마지막으로 코드 창에 다음 코드를 작성합니다.
옵션 명시적
비공개 하위 Form_Load()
Dim objSum As TestDll.Sum
objSum = 새 합계 설정
objSum.augend = 10.52
objSum.addend = 382.41
MsgBox objSum.Plus
서브 끝
실행하면 결과가 정확합니다. 다음으로 ASP에서 이 구성 요소를 사용합니다. SetupDll.dll을 웹 서버에 복사하고 "Regsvr32.exe setupdll.dll" 명령을 사용하여 구성 요소를 등록한 다음 브라우저에서 이 섹션의 시작 부분에 있는 ASP 프로그램을 실행합니다. 그래도 작동하지 않으면 먼저 VB6 패키징 도구로 패키징을 시도한 다음 구성 요소가 자동으로 등록되고 일부 필수 VB6 실행 파일도 자동으로 설치됩니다.
참고: 이 부분의 모든 프로그램은 다운로드 패키지의 Setupdll.zip에 있습니다.
위의 예에서는 Property Get 및 Property Let 속성 프로시저를 사용하여 속성을 추가합니다(Property Get은 속성 값을 읽고 Property Let은 해당 값을 속성에 할당합니다). Property Let 프로세스에 적절한 코드를 작성합니다. 다음 코드와 같습니다.
공용 속성 Let augend(ByVal vNewValue As Double)
vNewValue < 100이면
MsgBox "뭐하는 거예요! 값이 100보다 작으면 직접 계산해 보세요."
또 다른
mdbl_augend = vNewValue
종료 조건
끝 속성
2. 구성 요소에 속성과 메서드를 추가하는 다른 방법
1. 속성을 추가하는 가장 간단한 방법: 위의 예와 같이 공용 변수를 추가합니다. 가장 간단한 코드는 다음과 같습니다.
옵션 명시적
Public Augend As Double ' 추가 속성 추가
Public addend As Double ' 추가 속성 추가
공용 함수 Plus()를 Double로 사용
더하기 = 피가수 + 가수
기능 종료
그러나 이 방법은 읽기/쓰기 속성만 설정할 수 있으며 할당된 값을 확인할 수는 없습니다. 읽기 전용 속성만 추가해야 하는 경우: 위의 예에서 공용 속성 Let augend(ByVal vNewValue As Double) 프로세스를 삭제하면 augend가 읽기 전용 속성이 되어 값을 할당할 수 없습니다. 물론, 쓰기 전용 속성을 추가하려면 Property Get 프로시저를 삭제하면 됩니다.
2. 클래스 빌더 유틸리티 사용
VB6에는 속성과 메서드를 추가하는 도구도 있습니다. "추가 기능" 메뉴에서 "추가 기능 관리자"를 클릭하고 팝업 추가 기능 관리자 대화 상자에서 "VB 클래스 빌더 유틸리티"를 선택한 다음 load 동작에서 "로드/언로드"를 선택합니다(그림 4). 그런 다음 추가 기능 메뉴에서 Class Builder Utility를 클릭하면 사용 방법을 알 수 있습니다.
3. 주의해야 할 몇 가지 문제를 알려주세요.
1. 위의 예는 매우 간단한 구성 요소입니다. 보다 실용적인 구성 요소에는 일반적으로 하나 이상의 모듈이 있습니다.
2. 주의하지 않으면 Visual Basic에서 "단일 스레드" 구성 요소를 생성할 수 있습니다.
아마도 가장 일반적인 함정 중 하나는 "단일 스레드" 구성 요소와 같이 ASP에서 실행되도록 설계되지 않은 구성 요소를 사용하는 것입니다. 따라서 "프로젝트 속성" 페이지의 "일반" 탭에서 스레딩 모듈이 "아파트 스레딩"으로 설정되어 있는지 확인하세요.
3. '유형 불일치' 오류에 대해
좋은 제안은 Out 매개변수를 Variant로 선언하는 것입니다. 위의 예에서는 이것이 설정되지 않았습니다.
4. 전역 변수 사용에 대해.
구성 요소에서 전역 변수를 사용하지 마십시오. Visual Basic 용어로 이는 표준 .BAS 모듈에 공용 또는 전역 변수가 없음을 의미합니다. 전역 변수는 실제로 전역 변수가 아니기 때문입니다. 각 스레드에는 자체 복사본이 있으며 동일한 스레드에서 여러 메서드가 실행되는 경우 동일한 변수가 표시됩니다. 그렇지 않으면 이러한 변수의 다른 복사본에 액세스합니다. 이는 스레드 A에서 전역 변수에 값을 할당할 수 있지만 이를 사용하는 다른 사용자(스레드 B에서 실행)는 새 값을 볼 수 없음을 의미합니다. 그 이유는 Visual Basic이 내부적으로 "TLS(Thread Local Storage)"를 사용하여 전역 변수를 참조하기 때문입니다. 즉, 각 스레드에는 Public 변수의 자체 복사본이 있고 복사본이 여러 개 있으므로 전역 데이터는 실제로 "전역"이 아닙니다. 즉, 동일한 스레드에서 실행 중인 사용자는 예상 여부에 관계없이 동일한 변수에 액세스하게 됩니다.
마지막으로 VB6.0에는 새로운 유형의 Visual Basic 응용 프로그램인 IIS 응용 프로그램이 도입되었습니다. ActiveX DLL을 생성하는 것처럼 IIS 애플리케이션을 생성할 수 있습니다. Active Server Pages로 생성된 모든 애플리케이션은 VB 개발 환경에서 생성될 수 있습니다. 모든 Active Server Pages를 단일 VB 애플리케이션으로 완전히 대체할 수 있습니다.