DDD的单Controller实战-解决技术栈兼容问题


在系统演进过程中,往往会遇到技术栈不兼容的问题。

比如公司一直用的.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
                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值