用ASP.NET包装第三方组件以提供服务的尝试

asp.net

    不少应用程序的作者为编程人员提供了可以在其它程序中复用的组件。我们通常会在自己的程序中引入这些第三方组件,调用其中现成的函数来实现相对复杂的功能。事实上,我们也可以通过网络发布第三方组件中的函数,以便为更多用户更为方便地提供服务。
  对于.NET开发,可以通过ASP.NET(对人)或Web Service(对机器)技术包装第三方组件。下面以用ASP.NET发布Matlab组件中的Execute函数为例说明。前提是服务器上已安装Matlab。

  在VS2005中新建一个ASP.NET站点,在Solution Explorer窗格的站点目录上点击右键选择Add Reference,加入Matlab的COM组件:Matlab Application(version X.X) Type Library。

  在网页上分别添加一个TextBox、一个Button和一个Literal控件。TextBox用以输入表达式,Button确定执行,Literal输出结果。添加以下事件代码,以便调用Matlab组件中的Execute函数执行Matlab语句:

    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、李洪根,在.NET中应用MATLAB算法

http://www.microsoft.com/china/community/Column/25.mspx

2、Matlab 7.1,Matlab Web Server 相关帮助文档

时间: 2024-10-29 05:59:30

用ASP.NET包装第三方组件以提供服务的尝试的相关文章

ASP无须第三方组件真正实现任意类型文件的文件上传

上传 一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件.可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息.还有的就是组件的兼容问题. 在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中. 作者这段时间在研究ASP,发现可以不用第三方组件上传任意类型的文件.就写了这个类,给大家一个方便,整个类放在一个文件中: upload_5xsoft.inc 在 Example

ASP编程之ActiveX组件

active|activex|编程 从今天开始我们将正式学习 ASP 的精华部分 --ActiveX 组件.事实上,当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作或者对 WEB 服务器上的文件系统进行操作,亦或你需要一个 WEB 广告交换程序,所有这一切你都必须通过调用 ASP 内建的 ActiveX 组件或自己编写所需的组件来完成. 那么,究竟什么是 ActiveX 组件呢?它又是如何运作的呢?

ASP编程之ActiveX 组件

从今天开始我们将正式学习 ASP 的精华部分 --ActiveX 组件.事实上,当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作或者对 WEB 服务器上的文件系统进行操作,亦或你需要一个 WEB 广告交换程序,所有这一切你都必须通过调用 ASP 内建的 ActiveX 组件或自己编写所需的组件来完成. 那么,究竟什么是 ActiveX 组件呢?它又是如何运作的呢?其实 ActiveX 组件是一个存在

C#使用第三方组件生成二维码汇总_C#教程

用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1.通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示: 1.2):具体生成二维码方法如下 private void GenerateQRByQrCodeNet() { QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); Qr

C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)_C#教程

用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法: 1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现 1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示: 1.2):具体生成二维码方法如下 private void GenerateQRByQrCodeNet() { QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); Q

ASP.NET的WebFrom组件LinkButton编程

asp.net|web|编程 在ASP.NET的WebForm组件中的LinkButton组件也是一个服务器端的组件,这个组件有点类似于HTML中的<A>标识符.它的主要作用是就是在ASP.NET页面中显示一个超链接.当这个链接被按动的时候,页面就会往服务器端传递信息,并且在服务器端来处理相应的事件. 一. LinkButton组件的重要的组成内容: 我们通过下面这张表来说明一下LinkButton组件的一些常用属性.事件. LinkButton组件的常用属性.事件 代表的意思 Text 这是

在ASP中调用DCOM组件的应用技巧

在ASP中调用DCOM组件的应用技巧 1.编写DCOM组件: 假设我们想通过ASP页面来远程启动DNS服务,并且DNS服务器与Web服务器不为同一台机器.我们可以编写一个ActiveX DLL 来实现这个功能. 首先我们建立一个批处理文件StartDNS.bat,文件中写入:Net Start DNS.将文件保存在DNS服务器的一个目录下,例如C:\ManDNS\: 其次我们编写 Dll 程序如下(VB编写): Public Function StartDNS() As Boolean On E

如何调试ASP服务端的组件技术

如何调试ASP服务端的组件技术 本文主要介绍如何调试ASP服务端组件技术,包括这个复杂的出错信息: 一.ASP 0115 Error. 二.代码在单独的EXE文件里面运行良好,但是一旦放入ASP中产生调用失败的信息 本文背景: 第一种情况:你在你的浏览器中可否看见过这种信息呢? Error \'ASP 0115\' Unexpected error file://.asp A trappable error occurred in an external object. The script c

以前收集的一些资料---如何调试ASP服务端的组件技术

        如何调试ASP服务端的组件技术    本文主要介绍如何调试ASP服务端组件技术,包括这个复杂的出错信息:    一.ASP 0115 Error.    二.代码在单独的EXE文件里面运行良好,但是一旦放入ASP中        产生调用失败的信息本文背景:    第一种情况:你在你的浏览器中可否看见过这种信息呢?Error 'ASP 0115'Unexpected error/<Web Name>/<ASP file name>.aspA trappable er