在设计应用程序时,最困难的部分是将应用程序与现有应用程序集成。如果幸运的话,目标应用程序也是基于ASP.NET构建的,但大多数情况下,这些应用程序是用不同的语言创建的,并且使用了不同的框架。本文提出了一种解决这个问题的设计。
高级设计包括一个集成层,该层实现了从ASP.NET到RAILS、PHP、ASP的通信。这个集成层还与ASP.NET共享数据,RAILS、PHP、ASP和Java。这个设计也可以通过更改扩展到用其他语言创建的其他应用程序。
集成层的详细设计由两个主要部分组成:
ASPNETIntegrationServer:这是使用ASP.NET页面实现的,它从ASP.NET应用程序获取数据,并通过调用相应的监听器将其传递给目标应用程序,如图中所示。
监听器:
- ASPListener(此块位于ASP Web服务器框中)
- 步骤1:读取ASP.NET页面传递的数据
- 步骤2:在ASP中处理请求和自定义业务逻辑
- 步骤3:将结果返回给ASP.NET页面
- PHPListener(此块位于PHP Web服务器框中)
- 步骤1:读取ASP.NET页面传递的数据
- 步骤2:在PHP中处理请求和自定义业务逻辑
- 步骤3:将结果返回给ASP.NET页面
- RailsListener(此块位于RAILS Web服务器框中)
- 步骤1:读取ASP.NET页面传递的数据
- 步骤2:在Ruby中处理请求和自定义业务逻辑
- 步骤3:将结果返回给ASP.NET页面
- JavaListener(此块位于JavaTomcat Web服务器框中)
- 步骤1:读取ASP.NET页面传递的数据
- 步骤2:在Java中处理请求和自定义业务逻辑
- 步骤3:将结果返回给ASP.NET页面
以下是ASPNETIntegrationServer.aspx.cs中调用监听器的逻辑,通过HTTPGet传递值,然后重定向到页面:
string strRequest;
strRequest = "Value to Pass";
// 调用asplistener的代码
Response.Redirect("http://aspserver/PHPListener.php?aspNetPassedValueByGet=" + strRequest);
// 调用phplistener的代码
Response.Redirect("http://phpserver/ASPListener.asp?aspNetPassedValueByGet=" + strRequest);
// 调用railslistener的代码
Response.Redirect("http://railsserver/RailsListener/integrate?aspPassedValue=" + strRequest);
以下是在代码中调用监听器并读取值的逻辑:
public string TinyEAIPostRequest(string strURL, string strRequest)
{
HttpWebResponse objHttpWebResponse = null;
UTF8Encoding encoding;
string strResponse = "";
HttpWebRequest objHttpWebRequest;
objHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);
objHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
objHttpWebRequest.PreAuthenticate = true;
objHttpWebRequest.Method = "POST";
// 准备请求流
if (strRequest != null && strRequest != string.Empty)
{
encoding = new UTF8Encoding();
Stream objStream = objHttpWebRequest.GetRequestStream();
Byte[] Buffer = encoding.GetBytes(strRequest);
// 发送请求
objStream.Write(Buffer, 0, Buffer.Length);
objStream.Close();
}
objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse();
encoding = new UTF8Encoding();
StreamReader objStreamReader = new StreamReader(objHttpWebResponse.GetResponseStream(), encoding);
strResponse = objStreamReader.ReadToEnd();
objHttpWebResponse.Close();
objHttpWebRequest = null;
return strResponse;
}
这是一个简单的加法示例,使用PHP Listener,其中业务逻辑用PHP编写,将ASP.NET传递的值相加,然后将结果返回给ASP.NET应用程序。以下是执行此操作所执行的内部步骤:
ASP.NET应用程序获取输入
调用TinyEAIPostRequest函数,传递URL和输入
调用PHPListener,传递要添加的值
PHPListener接收请求
这里进行自定义业务逻辑 - 为了简单起见,只是将数字相加
PHPListener返回结果
ASP.NET将结果显示给用户