公司项目存在一些古老框架,跟不上时代潮流,也无法支持新的特性。在需要对于这样项目进行维护时,恨不得直接重构。一直也没有什么好的办法面对这些古老的项目。
今天想到一种思路,并进行实践取得了初步成功。这里做个人方案的记录,如果有其他的好方案也欢迎和我交流。
第一步、创建新的项目,在新的项目中实现目前维护需要修改的地方。将新的项目作为微服务暴露接口供原项目使用。
第二步、在原来项目登录方法下加入代码
由随机生成的GUID保存到cookie,并将用户信息存入redis服务。
第三步、在前端调用API的时候,每次请求都加上GUID
第四步、在新的项目中添加验证并将Filter写在ApiController上
public class MyAuthiorAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
HttpRequest request = context.HttpContext.Request;
var token = request.Query["token"].ToString();
var user = RedisUtils.getData<String>(token);
if (String.IsNullOrEmpty(user))
{
context.Result = new ContentResult()
{
Content = "Resource unavailable - token should be set.资源不可用 - 必须存在Token"
};
}
}
}
第五步、将新项目发布包并部署至原项目的子目录中
在vs中点击 生成》发布
配置以现在使用的框架为准,不需要关心原项目使用什么框架。
站点名称填写服务器iis中的站点名称加上我们想要部署的子目录“/Back”
保存后发布。
复制发布文件到服务器,在cmd中执行*.deploy.cmd /T进行测试,如果提示权限问题使用管理员运行cmd。
测试成功后执行*.deploy.cmd /Y正式发布。
大功告成。
这种模式在前后端分离项目中相当于将原项目作为前端,新建项目去完成后端。能够在不影响原来正确且无需改动的方法的前提下进行对于需要改动的部分进行重构。