Viele Anwendungsautoren stellen Programmierern Komponenten zur Verfügung, die in anderen Programmen wiederverwendet werden können. Normalerweise führen wir diese Komponenten von Drittanbietern in unsere eigenen Programme ein und rufen vorgefertigte Funktionen auf, um relativ komplexe Funktionen zu implementieren. Tatsächlich können wir über das Netzwerk auch Funktionen in Komponenten von Drittanbietern veröffentlichen, um mehr Benutzern Dienste bequemer bereitzustellen.
Für die .NET-Entwicklung können Komponenten von Drittanbietern über ASP.NET-Technologien (für Menschen) oder Web-Service-Technologien (für Maschinen) verpackt werden. Im Folgenden wird ASP.NET verwendet, um die Execute-Funktion in der Matlab-Komponente als Beispiel zu veröffentlichen. Voraussetzung ist, dass Matlab auf dem Server installiert ist.
Erstellen Sie eine neue ASP.NET-Site in VS2005, klicken Sie mit der rechten Maustaste auf das Site-Verzeichnis im Bereich „Lösungs-Explorer“, wählen Sie „Referenz hinzufügen“ und fügen Sie die COM-Komponente von Matlab hinzu: Matlab Application (Version XX) Type Library.
Fügen Sie der Webseite ein TextBox-, ein Button- und ein Literal-Steuerelement hinzu. TextBox dient zur Eingabe von Ausdrücken, Button bestätigt die Ausführung und Literal gibt Ergebnisse aus. Fügen Sie den folgenden Ereigniscode hinzu, um die Execute-Funktion in der Matlab-Komponente aufzurufen, um die Matlab-Anweisung auszuführen:
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
Führen Sie diese Site in VS2005 aus, geben Sie einen Ausdruck in die angezeigte Webseite ein, z. B. „dsolve('Dx=x^2+5')“, und die Ergebnisse werden angezeigt wird nach Klicken auf die Schaltfläche angezeigt: „ans = 5^(1/2)*tan(5^(1/2)*t+5^(1/2)*C1)“. Wenn Sie diese Site jedoch mit IIS veröffentlichen, tritt zur Laufzeit ein Fehler auf. Der Grund dafür ist, dass ASP.NET nicht über die Berechtigung zum Erstellen von Komponenten verfügt. Gemäß der Fehlermeldung müssen wir der web.config-Datei der Website einen Satz hinzufügen:
<identity impersonate="true" userName="xx" passwort="xx"/>
Der hier angegebene Benutzer sollte ein Benutzer mit entsprechenden Berechtigungen sein auf der Serverseite. Wenn nicht angegeben, wird die Authentifizierung auf der Clientseite durchgeführt. Natürlich ist es nicht sicher, Benutzernamen und Passwörter im Klartext in web.config zu speichern, und in realen Anwendungen müssen sie verschlüsselt werden.
In diesem Zusammenhang haben wir die Online-Veröffentlichung der Matlab-Ausdrucksauswertungsfunktionen abgeschlossen. Sie können Freunde, die Matlab nicht installiert haben, benachrichtigen, sich auf Ihrer Website anzumelden, um die leistungsstarken Computerfunktionen von Matlab zu nutzen. (Hinweis: Dieses Beispiel dient nur zur Demonstration. Die leistungsstarken Anweisungen und die Toolbox von Matlab reichen aus, um Remotebenutzern den Zugriff auf Ihr Dateisystem über diese Webseite zu ermöglichen.)
Aufgrund der Natur des HTTP-Protokolls und der Merkmale der serverseitigen Ausführung ist dies der Fall Art der Verpackung von Drittkomponenten. Im Allgemeinen geeignet für die Veröffentlichung von Datenverarbeitungsfunktionen, jedoch nicht für die Veröffentlichung von Steuerungsfunktionen. Gleichzeitig ist diese Methode nicht für Dienste geeignet, die in hohem Maße in Echtzeit arbeiten oder eine Zustandserhaltung erfordern. Aus Sicherheitsgründen können wir auch Komponenten von Drittanbietern neu kapseln und Datenfilterung und Ausnahmebehandlung hinzufügen.
Das Prinzip ist ganz einfach. Ich hoffe, Sie können mit mir den Wert dieser Lösung in der Praxis besprechen.
Referenz:
1. Li Honggen, Anwendung des MATLAB-Algorithmus in .NET
( http://www.microsoft.com/china/community/Column/25.mspx )
2. Matlab 7.1, Matlab Web Server-bezogene Hilfedokumente