在系统演进过程中,往往会遇到技术栈不兼容的问题。
比如公司一直用的.net技术栈,而你是Java技术栈或其他,为了做兼容,自主开发了以下中转服务,该服务已上线,目前稳定。
虽然可以使用Nginx的路由负载机制,来实现多技术栈的兼容,但考虑到要降低对现有业务的影响。所以采取了保守的解决方案。
实现原理
1、在iis上创建一个站点,通过该站点接收http请求
2、A服务根据Content-type和请求方法路由访问不同的B服务接口
3、A服务只做请求和响应数据的透传
代码实战
A服务代码(.net)
主要是将访问B服务的接口路由放到了Header中
public class ApiController : Controller
{
static string url = "http://localhost:8949";
[System.Web.Mvc.HttpGet]
public ActionResult Index()
{
string route = Request.Headers["proxyRoute"];
string requestUrl = $"{
url}/{
route}?{
Request.QueryString}";
Task<string> task = getRequest(requestUrl);
return result(task.Result);
}
[System.Web.Mvc.HttpPost]
public ActionResult Index(string xx)
{
string requestInfo = null;
Request.InputStream.Position = 0;
using (var reader = new StreamReader(Request.InputStream, Encoding.UTF8))
{
var requestBody = reader.ReadToEnd();
try