비주얼베이직의 미래
WebForms(웹 양식), 웹 서비스(웹 서비스) 및 버전에 나타날 언어 개선 사항
이 문서의 독자는 이미 Visual Basic에 익숙한 사용자입니다.
개요: Microsoft Visual Basic의 다음 버전에는 WebForms, Webservices 및 개체 지향 구문의 개선이라는 세 가지 주요 개선 사항이 포함되어 있습니다. WebForms를 사용하면 숙련된 Visual Basic 사용자가 오늘날 독립 실행형 프로그램을 작성하는 것처럼 간단하게 네트워크 응용 프로그램을 개발할 수 있습니다. SOAP 인터페이스를 통해 웹 서비스를 사용하면 인터넷에 액세스할 수 있는 모든 위치에 설계한 구성 요소를 배포할 수 있습니다. 또한 객체 지향 언어의 몇 가지 주요 개선 사항으로 인해 상속, 다형성 및 오버로딩을 포함하여 Visual Basic 코드가 C만큼 유연해졌습니다. 이 측면에 대한 자세한 내용은 Steve Ballmer의 "차세대 Visual Basic에 대한 VBITS keynote"를 참조하세요.
isualBasic은 많은 개선을 거쳤습니다. 하지만 처음부터 제가 좋아했던 한 가지 점은 핵심적으로 1991년과 동일한 방식으로 프로그램을 작성할 수 있다는 것입니다. 물론 그 소프트웨어 패키지는 당시에 비해 크게 향상되었지만 이러한 개선은 일반적으로 보완적인 것이며 프로그래밍 도구 자체의 목적을 모호하게 만들지는 않습니다. 이 목적은 Visual Basic을 더 쉽고 빠르게 만드는 데 사용됩니다. 뛰어난 객체 지향 애플리케이션을 디버깅합니다.
현재 버전의 Visual Basic 6.0에는 강력한 네트워크 지향 응용 프로그램을 구성하기 위한 단순화된 수단으로 WebClasses가 도입되었습니다. 실제로 WebClasses는 일반 도구를 통해 프로그램을 인터넷으로 포팅하는 다양한 방법을 제공합니다. (네트워크에서 Visual Basic 6.0의 확장성에 대한 자세한 내용은 Ted Pattison의 "Advanced Basics Column"(Microsoft Internet Developer에서 1999년 10월 게시)을 참조하세요.
저는 최근 Visual Basic의 다음 버전에 계획된 새로운 개선 사항 중 일부에 대해 배울 기회가 있었습니다. 주요 개선 사항은 개발자가 사용할 수 있는 저장 용량이 3배 증가한 저장 용량입니다. Visual Basic의 다음 버전에는 WebForms라는 Visual Studio® 환경 기능이 포함될 예정입니다. WebForms는 새로운 구성 요소 기반 네트워크 솔루션을 나타냅니다. 웹 서비스는 표준 네트워크 프로토콜을 통해 중간 계층 이벤트 처리 기능을 게시하는 새로운 XML 기반 솔루션이 될 것입니다. 동시에 Visual Basic 언어에는 개발자가 오랫동안 요청해 온 일부 구성이 포함되어 Visual Basic이 C 및 Java 사용자에게 친숙한 객체 지향 프로그래밍 습관과 일관되게 됩니다.
이러한 개선 사항은 Visual Basic의 다음 베타 버전에서 발표될 예정입니다. 여기서는 몇 가지 코드 조각을 제공하지만 완전한 솔루션은 아닙니다. 그렇다면 이제 걱정할 것이 무엇입니까? 간단합니다. 이러한 새로운 기능을 활용하기로 결정했다면 이제 이러한 특정 방법을 통해 프로그램을 디자인하고 Visual Basic의 다음 버전으로 원활하게 전환하는 데 도움이 되는 최고의 실용적인 연습을 얻을 수 있습니다. 그렇지 않더라도 이 글의 마지막 부분에 제시된 원칙에 따라 향후 프로그램을 구성한다면 잃을 것이 없습니다.
VisualStudioWebForms
Visual Basic의 다음 버전은 Visual Studio 개발 환경의 일부가 될 것이며 웹 개발자에게 WebForm의 새로운 개념을 소개할 가능성이 높습니다. WebForm 개념을 도입한 목적은 Visual Basic의 랜덤 액세스 기능을 확장하여 점점 더 광범위한 영향을 미치는 네트워크 프로그램 작성에 Visual Basic을 적용할 수 있도록 하는 것입니다. Visual Studio에서 모든 언어를 사용하는 개발자는 이 Visual Studio WebForms를 공유할 수 있습니다.
WebForms 페이지는 WebForms 페이지의 시각적 인터페이스를 구현하는 HTML 파일과 WebForms 페이지 이벤트를 처리하는 소스 파일의 두 부분으로 구성됩니다. 현재 Visual Basic 환경을 기반으로 하는 개발의 1/3이 네트워크 지향적이므로 Microsoft는 이 분야의 기능을 더욱 강화할 계획입니다. Visual Basic의 다음 버전에서는 현재 Visual Basic을 사용하여 양식을 생성하는 것과 동일한 방식으로 WebForms를 디자인할 수 있습니다. 웹 컨트롤 도구 상자가 제공됩니다. 컨트롤을 HTML 편집기에 직접 끌어다 놓아 속성을 설정하고 적절한 코드를 작성하기만 하면 됩니다. (그림 1 참조) 요약하면 Visual Basic을 사용하여 양식을 생성하는 것처럼 이러한 작업을 수행할 수 있습니다. IntelliSense®, WYSIWYG 형식을 완벽하게 준수하는 양식 디자인과 컴파일된 코드를 갖게 됩니다. 따라서 Visual Basic을 사용하여 애플리케이션을 작성하는 방법을 알고 있는 한 WebForms를 사용하면 작업 방식을 전혀 바꾸지 않고도 웹 개발자가 될 수 있습니다.
그림1BuildingaWebFormin4단계
WebForms는 서버에서 실행되며 HTML 형식의 양식만 사용자에게 전송합니다. ActiveServerPage(asp)와 마찬가지로 특정 브라우저도 아니고 WebForm 기반 애플리케이션도 아니지만 전체 프로세스도 서버에서 실행됩니다. 실제로 원격 사용자를 위해 HTML 3.2 형식의 인터페이스를 생성하는 프로그램을 실행하고 있습니다. ASP 웹 페이지와 달리 이러한 코드는 해석되지 않고 컴파일되어 실행되므로 실행 속도가 크게 향상됩니다.
WebForms를 디자인하는 목적은 ASP와 WebClass의 최상의 기능을 모두 얻는 것입니다. Visual Studio 제품군의 모든 언어를 사용하여 WebForms를 생성할 수 있습니다. 따라서 여러분이 알고 있는 지식을 활용하여 효율적인 서버 지향 웹 애플리케이션을 작성할 수 있습니다.
웹서비스
웹 서비스는 Visual Studio 개발 도구 시스템의 두 번째 주요 개선 사항입니다. 기본적으로 웹 서비스는 표준 네트워크 프로토콜을 통해 게시되는 중간 계층 이벤트 처리기입니다. 전송 메커니즘으로 HTTP를 사용하므로(그림 2 참조) 방화벽을 통해 통신할 수 있습니다. URL이 적절하게 할당되기만 하면 웹 애플리케이션에서 여러 웹 서비스를 간단하게 구성할 수 있습니다. 프로그램이 실행 중일 때 이러한 모든 내부 구성 요소 간의 호출은 자동으로 패키지화되어 XML 인터페이스를 통해 호출됩니다. 개발자는 모든 플랫폼과 언어로 웹 서비스를 작성하고 사용할 수 있습니다. 기밀성이 필요한 경우 SSL(SecureSocketLayer) 또는 표준 검사 기술을 사용할 수 있습니다.
그림2웹서비스아키텍처
이 중 어떤 것이든 친숙하게 들리기 시작하면 시작하기 좋은 곳입니다. 구성 요소 간에 데이터를 전송하는 데 사용되는 메커니즘은 SOAP(Simple Object License Protocol)입니다. DonBox는 2000년 3월에 발행된 MSDN™ Magazine에 SOAP를 자세히 소개했습니다.
이러한 새로운 기능은 모두 웹 응용 프로그램 개발자가 기존의 재사용 가능한 웹 서비스를 구성하여 매번 다시 작성할 필요 없이 응용 프로그램을 더 빠르게 작성할 수 있도록 설계되었습니다. 이는 프로그램 코드 제공자와 프로그램 개발자의 새로운 시대를 열 것입니다.
Visual Basic의 다음 버전을 사용하면 곧 특정 프로젝트의 기능을 웹 서비스 형식으로 게시하고 구현할 수 있게 됩니다. Visual Basic 클래스를 공개로 만드는 프로세스에 익숙할 것입니다. 다음 버전의 Visual Basic에는 일시적으로 webpublic이라는 새로운 로고가 포함될 예정입니다. 이는 프로그램이 웹 서비스로 게시된다는 의미입니다. COM 인터페이스를 통해 이를 필요로 하는 로컬 프로젝트에서 사용할 수 있을 뿐만 아니라 해당 URL 주소를 참조하는 모든 네트워크 프로그램을 제공할 수도 있습니다. 새 프로젝트의 공용 개체에 대한 참조를 추가할 수 있는 것처럼 네트워크 프로그램에 대한 참조를 추가하고 이를 로컬 프로그램인 것처럼 사용할 수 있습니다.
물론 작동 메커니즘은 다소 다릅니다. Visual Basic은 COM 인터페이스를 통해 로컬 개체에 대한 참조를 확인할 수 있습니다. 애플리케이션에 네트워크 서비스에 대한 참조를 추가하면 원격 개체는 자동으로 인터페이스 정의를 생성하고 이를 SOAP 프로토콜을 사용하여 Visual Studio 개발 환경으로 보냅니다. 이는 XML 형식으로 생성되지만 연결 작업을 직접 수행할 필요는 없습니다. VisualBasic이 이를 자동으로 처리합니다. 인터페이스 정의를 받은 후에는 개체를 참조하는 코드를 작성한 것처럼 IntelliSense를 사용할 수 있습니다.
다음은 간단한 예입니다. 경우에 따라 Seahawks라는 이 함수를 작성해야 할 수도 있습니다. 이는 다음 코드와 유사할 수 있습니다.
PublicFunctionSeahawks(ByValoppontAsString)AsString
시호크스="패배"
EndFunction
구성하는 프로젝트에 이 함수가 포함되어 있으면 Visual Basic은 이 함수에 대한 XML 형식 설명을 자동으로 생성하여 인터넷에 게시합니다.
<?xmlversion='1.0'?>
<methodshref='http://julian/Football/Teams'>
<methodname='Seahawks'href='Seahawks'>
<요청>
<paramdt='string'>상대</param>
</request>
<responsedt='문자열'/>
</방법>
</메서드>
이 XML 파일은 Seahawks 기능을 설명하는 데 사용됩니다. Visual Studio 개발 환경을 사용하는 경우 게시된 웹 서비스를 애플리케이션에 직접 끌어서 놓아 새 클래스를 만들 수 있습니다. 인터넷 어디에서나 웹 서비스를 호출하려면 웹 서비스가 포함된 클래스의 인스턴스를 만든 다음 게시된 메서드를 호출하기만 하면 됩니다.
Seahawks 기능이 호출되면 자동으로 XML 패킷을 통해 통신합니다. Microsoft® Internet Explorer 5.0(XML 지원 포함)을 사용하는 경우 브라우저에서 이 기능을 실행해 볼 수 있습니다. 다음과 같이 URL 주소를 사용하여 이 함수를 호출할 수도 있습니다.
http://julian/webservice1/comComponent1.methods/Seahawks?oppont=Miami
다음과 같이 XML 형식으로 데이터를 반환합니다.
<?xmlversion="1.0"?>
<Response>패배</Response>
웹 서비스 개발을 용이하게 하기 위해 Visual Basic에서는 WebService라는 새로운 개체 유형을 도입합니다. 이제 로컬 DLL 파일을 생성하는 것처럼 간단하게 WebService를 원격 서비스에 설계하고 배포할 수 있습니다.
언어 개선
Visual Basic을 선호하는 프로그래머와 보다 "정교한" 다른 언어를 선호하는 프로그래머 사이에는 오랫동안 긴장된 관계가 있어 왔습니다. 나는 내가 가장 좋아하는 프로그래밍 언어가 "장난감 언어"이고 Visual Basic에 OOP 기능이 부족하다는 비난에 대해 여러 번 옹호했습니다.
알았어, 무슨 일이 일어났는지 알아? Visual Basic의 다음 버전에서는 마침내 이러한 불만이 종식될 것입니다. Microsoft는 객체 지향 프로그래밍의 세 가지 주요 기능인 상속, 다형성 및 오버로딩을 추가할 계획입니다. 그게 다가 아니다! 구조적 오류 처리 및 검색을 포함한 추가 구성도 Visual Basic 언어에 도입됩니다.
상속 기능을 사용하면 기본 클래스를 디자인한 다음 기본 클래스의 기능을 상속하는 일부 파생 클래스를 작성할 수 있습니다. 이렇게 하면 시간을 절약하고 프로그램의 재사용성을 향상시킬 수 있습니다. 예를 들어, 다음과 같은 함수가 있는 BaseClass라는 기본 클래스를 작성합니다.
함수GetCustomerName()
'도썸스터프
EndFunction
이제 기본 클래스의 GetCustomerName 함수를 자체 함수처럼 호출할 수 있는 다른 클래스를 작성하려고 합니다. 기존 방식은 무엇이었나요? 과거에는 이것이 불가능했습니다. 그러나 이제 새 메서드에서는 새 클래스 위에 간단한 줄만 삽입하면 됩니다.
InheritsBaseClass
함수GetCustomerID()
'도썸스터프
EndFunction
이름은 같지만 식별자가 다른 두 개 이상의 함수를 작성하는 것을 오버로딩이라고 합니다. 어느 정도 Visual Basic에서는 함수 호출 시 내부 유형 변환 및 속성 설정에 오버로드를 구현했습니다. 유효한 Visual Basic 코드의 다음 두 줄을 비교해 보세요.
텍스트1.텍스트="7"
텍스트1.텍스트=7
두 호출 모두에서 Text1의 텍스트는 문자열 "7"로 설정됩니다. Visual Basic은 입력의 다양한 데이터 형식을 처리하는 방법을 알고 있기 때문에 이는 오버로드된 호출입니다. 이를 변수로 처리하여 자동으로 변환합니다. 명확하게 정의된 매개 변수 유형을 사용하여 일부 함수를 호출하면 Visual Basic도 동일한 변환을 수행합니다. 다음 두 가지 함수 호출:
a=SetVal("이것")
a=SetVal(7)
다음 함수는 올바르게 호출할 수 있습니다.
함수SetVal(xAsString)
Form1.Text1.Text=x
EndFunction
Visual Basic은 이미 다양한 변수 유형을 전송할 수 있는데 오버로딩 함수가 필요한 이유는 무엇입니까? 이는 단일 함수가 현재 여러 데이터 유형을 처리할 수 있지만 전달된 다양한 데이터 유형을 기반으로 다양한 작업을 생성할 수 없기 때문입니다. 대신 다음 두 함수를 비교해 보세요.
함수GetCustomerID(custnameasstring)AsInteger
'고객 이름을 기준으로 고객 ID 조회
EndFunction
함수GetCustomerID(purchaslong)AsInteger
'구매SE주문을 기준으로 고객ID 조회
EndFunction
오버로딩을 통해 입력 데이터 유형에 따라 함수를 구현할 수 있습니다. Visual Basic의 다음 버전에는 기본 데이터 형식 보호라는 새로운 기능이 있으므로 이는 매우 중요합니다. 일반적으로 변수의 자동 변환은 유익하지만 때로는 문제를 일으킬 수 있다고 상상할 수 있습니다. 예를 들어 SetVal의 이전 예에서 문자열 "7" 대신 문자 7을 전송하려는 경우 어떻게 될까요? Visual Basic의 다음 버전에서는 자동으로 이 오류를 포착합니다. (코드가 Visual Basic의 이전 비형식 인식 기능을 기반으로 하는 경우 이 기능은 비활성화됩니다.)
마지막으로 다형성은 이미 정의된 클래스를 재정의하는 과정입니다. 예를 들어 BaseClass의 파생 클래스를 작성하려고 하지만 GetCustomerName 함수를 다시 작성하려고 합니다. Visual Basic의 다음 버전에서는 다음과 유사한 새 메서드를 사용하여 이 클래스 정의를 구현할 수 있습니다. (참고: 최종 구문은 공식 버전에 따라 다릅니다.)
InheritsBaseClass
함수GetOrders()
OverridesFunctionGetOrders()
•••
EndFunction
더 많은 구문 기능
Visual Basic의 다음 버전에는 위에서 언급한 개체 지향 개선 사항 이상의 기능이 포함될 수 있습니다. 또한 스레드 생성, 오류 처리 및 오랫동안 기다려온 확장성과 재사용성을 위한 많은 새로운 개선 사항이 있습니다.
현재 Visual Basic은 아파트 스레드 모델을 지원합니다. 이 모델은 애플리케이션 개발에 실질적인 효율성을 제공하지만 이상적이지는 않습니다. Visual Basic의 다음 버전에서는 이 영역이 개선될 것입니다. 이는 확장 가능한 네트워크 애플리케이션을 작성할 때 유용할 프리스레드 모델을 채택합니다. Visual Basic에는 여러 스레드를 생성하는 데 사용할 수 있는 몇 가지 구문 구성도 포함됩니다. 일반적인 스레드 발생 작업은 다음과 같습니다.
sett=NewThread(NewThreadstart
(AddressOf(BaseClass.Function1))
이 예제에서 Visual Basic의 다음 버전에는 함수의 주소를 반환하는 데 사용되는 AddressOf 구조가 있음을 알 수 있습니다. 더 이상 함수 포인터가 필요한 API 함수를 건너뛰도록 강요받지 않습니다! 회신 전화가 필요한 경우 이를 활용하면 됩니다.
또 다른 개선 계획은 구조화된 오류 처리입니다. 얼마 전까지만 해도 Visual Basic에서는 코드에 수많은 OnError 문을 삽입해야 했습니다. 수년 동안 나는 너무 많은 GOTO 문을 삽입하는 것이 불편했습니다. 이 진술은 다시는 사용하지 말라고 반복적으로 경고했습니다! 이제 문제를 직시해 보겠습니다. 오류 처리 메커니즘이 필요합니다.
Visual Basic의 다음 버전에서는 오류 처리가 중앙 집중화됩니다. VisualBasic은 "고귀한" 언어와 같은 try...catch...finally 구성을 지원합니다. 코드 상단에 오류 처리가 포함된 서브루틴을 배치할 수 있습니다. 다음은 오류 처리 구현의 예입니다.
서브세이프라이트()
노력하다
"테스트파일" 열기
•••
쓰기#1
잡다
"테스트파일"을 죽여라
마지막으로
닫기#1
시도 종료
EndSub
현재 Visual Basic 사용자가 익숙해질 수 있는 다른 흥미로운 개선 사항도 있습니다. 다음 버전의 Visual Basic에서는 변수를 선언하는 동시에 초기화할 수 있습니다.
디마신트수=10
표현식에서 새 객체를 생성하고 초기화할 수도 있습니다. 클래스를 통해 변수를 공유할 수도 있습니다. 마지막으로 상속 개념은 프로젝트 사용자 인터페이스의 기초까지 확장됩니다. Visual Basic에 대한 일반적인 비판은 동일한 기반을 기반으로 다양한 양식을 만드는 것이 어렵다는 것입니다. (이것은 공동 개발 환경의 요구 사항인 경우가 많습니다.) Visual Basic의 다음 버전에서는 템플릿 유형을 통해 이 작업을 수행할 수 있습니다.
이러한 개선이 수년간 예상되어 왔습니다. 이유는 무엇입니까? 보자. Visual Basic의 커뮤니케이션(내가 거의 12년 동안 수행해옴)은 1991년의 첫 번째 버전보다 훨씬 더 복잡해졌습니다. Visual Basic은 원래 초기에 작고 휴대 가능한 도구 프로토타입을 신속하게 디자인하고 개발하는 데 사용되었습니다. 그 결과 Visual Basic은 (내 생각에는 예상치 못한) "장난감 언어"라는 평판을 얻었습니다. 이제는 더 이상 장난감이 아닌 것이 분명하므로, 그런 말을 하는 사람은 누구나 맹목적인 편견에서 행동하는 것입니다. 현재 다양한 분야에서 Visual Basic 기반 소프트웨어 패키지가 많이 있습니다. VisualBasic은 진화하고 있습니다. 작년에 나는 Center for Research에서 일주일에 수백만 건의 조회수를 받는 Web-Class를 사용하여 프로그램을 작성하는 소프트웨어 개발자와 이야기를 나눴습니다.
Visual Basic의 다음 버전에서는 놀라운 변화가 이루어졌습니다. 그들이 제공하는 이점을 얻고 싶다면 그것을 사용하십시오. 원하지 않는 경우에는 현재 사용하고 있는 것을 안심하고 사용해도 됩니다. 그러나 C와 Java가 수행하는 기능은 C 및 Java보다 훨씬 사용하기 쉬운 Visual Basic과 같은 언어로 구현될 수 있다는 것을 아는 것이 좋습니다.
향후 개발 동향
이번 프리뷰 프레젠테이션이 당신에게 어떤 인상을 주었나요? 좋은 질문이지만 이에 대한 답을 찾을 수 있습니다. 지난 해 ASP 개발의 변화를 확연히 볼 수 있습니다. 이러한 개발 프로그램은 읽기 쉬운 ASP 스크립트로 구성되는 경우가 많으며 전체 프로그램은 이러한 스크립트를 기반으로 실행됩니다. ASP는 전체 스크립트 코드를 해석하고 실행하기 때문에 사람들은 각 구성 요소를 조립할 때 점차 이 기술의 고유한 한계를 발견하게 됩니다. 점점 더 많은 개발자들이 이벤트 핸들러를 스크립트 코드에서 완전히 분리하고 어셈블리용 COM 인터페이스를 통해 C++ 또는 Visual Basic으로 작성된 더 빠른 컴파일 모델에서 구현하고 싶다고 말하는 것을 들었습니다.
여러분이 생각할 수 있는 모든 이유에서 Visual Basic이 이를 만족시킬 수 있습니다. Visual Basic으로 구성 요소를 디자인하는 것은 실제로 VBScript나 JScript®를 사용하는 것보다 어렵지 않습니다. 더 빠르게 실행되고 요구 사항을 쉽게 충족하는 코드를 작성할 수 있습니다. Visual Basic의 다음 버전이 출시되면 Visual Basic을 사용하여 ASP와 호환되는 네트워크 지향 개체를 생성할 수 있습니다. 요컨대, 부품 조합의 길을 택하는 것이 현재는 물론 미래에도 최선의 선택으로 간주될 것입니다.
앞서 언급했듯이 Visual Basic(및 WebClasses)을 사용하여 작성된 광범위한 인터넷 기반 응용 프로그램이 있습니다. 문제는 WebClasses를 기반으로 하는 대부분의 애플리케이션이 제대로 설계되지 않았다는 것입니다. 애플리케이션의 여러 계층을 잘 구분하지 못하여 중간 계층 프로세스와 DHTML 기반 사용자 인터페이스를 혼동합니다.
Visual Basic의 다음 버전에서는 웹 개발을 위해 신중하게 선택된 도구인 WebClasses를 도입합니다. 더 확장성이 뛰어나고 더 강력하며 언어에 구애받지 않기 때문입니다. Visual Studio의 모든 도구에서 작동합니다. 다중 계층 개발의 몇 가지 기본 규칙에 주의를 기울이면 이러한 전환을 쉽게 수행할 수 있습니다. 중간층 공정과 디스플레이층 공정을 분리하는 데 특별한 주의가 필요하다. 이러한 작업을 수행할 때 Windows® DNA2000 아키텍처를 참조하는 것이 좋습니다. 핵심 이벤트 처리 기능은 중간 계층에서 완료되어야 하며, 선호하는 컴파일 언어로 작성된 다양한 구성 요소를 사용하여 이러한 기능을 구현할 수 있습니다. 그런 다음 이러한 구성 요소는 ASP 스크립트 파일에 어셈블되어 구성 요소가 함께 작동할 수 있습니다. 대부분의 로직을 스크립트가 아닌 이벤트 객체에 넣는 것이 이상적입니다. 이는 향후 웹 서비스로의 전환을 위한 좋은 아이디어일 뿐만 아니라 모방할 가치가 있는 관행이기도 합니다. ->