많은 응용 프로그램 작성자는 프로그래머에게 다른 프로그램에서 재사용할 수 있는 구성 요소를 제공합니다. 우리는 일반적으로 이러한 타사 구성 요소를 자체 프로그램에 도입하고 기성 함수를 호출하여 비교적 복잡한 기능을 구현합니다. 실제로 더 많은 사용자에게 더 편리하게 서비스를 제공하기 위해 네트워크를 통해 타사 구성 요소에 기능을 게시할 수도 있습니다.
.NET 개발의 경우 타사 구성 요소는 ASP.NET(사람용) 또는 웹 서비스(컴퓨터용) 기술을 통해 래핑될 수 있습니다. 다음은 ASP.NET을 사용하여 Matlab 구성 요소의 Execute 함수를 예로 게시합니다. 전제는 Matlab이 서버에 설치되어 있다는 것입니다.
VS2005에서 새 ASP.NET 사이트를 만들고 솔루션 탐색기 창에서 사이트 디렉터리를 마우스 오른쪽 버튼으로 클릭한 다음 참조 추가를 선택하고 Matlab의 COM 구성 요소인 Matlab 응용 프로그램(버전 XX) 유형 라이브러리를 추가합니다.
웹 페이지에 TextBox, Button 및 Literal 컨트롤을 추가합니다. TextBox는 표현식을 입력하는 데 사용되며 Button은 실행을 확인하고 Literal은 결과를 출력합니다. Matlab 문을 실행하기 위해 Matlab 구성 요소에서 Execute 함수를 호출하는 다음 이벤트 코드를 추가합니다.
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim matlab As New MLApp.MLApp
Dim strMatLab As String
strMatLab = TextBox1.Text
Dim strResult As String = matlab.Execute(strMatLab)
strResult = strResult.Replace(Chr(10), "<br>")
strResult = strResult.Replace(" ", " ")
Me .Literal1. Text = strResult
matlab.Quit()
End Sub
VS2005에서 이 사이트를 실행하고 나타나는 웹 페이지에 "dsolve('Dx=x^2+5')"와 같은 표현식을 입력하면 결과가 나타납니다. 버튼을 클릭하면 "ans = 5^(1/2)*tan(5^(1/2)*t+5^(1/2)*C1)"이 표시됩니다. 그러나 IIS를 사용하여 이 사이트를 게시하면 런타임 중에 오류가 발생합니다. 그 이유는 ASP.NET에 구성 요소를 만들 수 있는 권한이 없기 때문입니다. 오류 메시지에 따르면 웹 사이트의 web.config 파일에 다음 문장을 추가해야 합니다.
<identity impersonate="true" userName="xx" Password="xx"/>
여기에 지정된 사용자는 관련 권한이 있는 사용자여야 합니다. 서버 측에서. 지정하지 않으면 클라이언트 페이지에서 인증이 수행됩니다. 물론 web.config에 사용자 이름과 비밀번호를 일반 텍스트로 저장하는 것은 안전하지 않으며 실제 애플리케이션에서는 암호화해야 합니다.
이와 관련하여 Matlab 표현 평가 기능의 온라인 출시를 완료했습니다. Matlab을 설치하지 않은 친구에게 귀하의 웹사이트에 로그인하여 Matlab의 강력한 컴퓨팅 기능을 사용하도록 알릴 수 있습니다. (참고: 이 예는 단지 데모용입니다. Matlab의 강력한 명령문과 도구 상자는 원격 사용자가 이 웹 페이지를 통해 파일 시스템에 액세스할 수 있도록 하는 데 충분합니다.)
HTTP 프로토콜의 특성과 서버 측 실행의 특성으로 인해 이 예제는 일종의 타사 구성 요소 패키징 일반적으로 데이터 처리 기능을 게시하는 데 적합하지만 제어 기능을 게시하는 데는 적합하지 않습니다. 동시에 이 방법은 실시간성이 높거나 상태 보존이 필요한 서비스에는 적합하지 않습니다. 보안상의 이유로 타사 구성 요소를 다시 캡슐화하고 데이터 필터링 및 예외 처리를 추가할 수도 있습니다.
원리는 매우 간단합니다. 실제 응용 분야에서 이 솔루션의 가치에 대해 저와 함께 논의할 수 있기를 바랍니다.
참고:
1. Li Honggen, .NET에서 MATLAB 알고리즘 적용
( http://www.microsoft.com/china/community/Column/25.mspx )
2. Matlab 7.1, Matlab Web Server 관련 도움말 문서