1
3
免责声明 我从来没有这么做过,这可能会让我大吃一惊: 经过初步审查,我认为你们有三个候补者讨论如下:
1) Merge into 1应用程序给您带来了以下好处,相对简单的说,您需要修改global.asax—设置MVC路由、IOC等—httpapplication、session和security(假设基于表单)就可以了。 有一个稍微有点小的问题,那就是共享tempdata,如果您可以在页面上实例化sessionstatetempdataprovider(init to load,unload to save类似于view state),那么您应该能够创建这个,我似乎找不到blog,但我认为它是 Steve Sanderson 几个月前。 您的单元测试/代码覆盖率将很难跟踪,您可能需要考虑如何管理它,这是一个完全不同的讨论。 2) 使用此选项,您将完全分离具有新继承问题集的应用程序。httpapplication.*如果您的应用程序使用它,可能会导致一个问题,因为它们会引用不同的文件夹、上下文等,但忽略了这一点,即您很高兴它们是不同的应用程序 下一个大问题是让会话工作,现在这可能会证明是非常棘手的,如果会话是inproc,那么每个应用程序将看不到其他应用程序会话,但是如果您使用sql或自定义缓存服务器作为会话状态,那么您应该能够过程或引用/配置并在应用程序之间共享会话状态-最坏的情况是您需要编写自己的会话提供程序(我从未编写过会话提供程序,因此不知道这有多困难,或者它是否实用)。 下一个问题是表单身份验证,您可以执行标准的单点登录,并确保配置中的machinekey验证和解密密钥相同。临时数据将与选项1相同。对我来说,这听起来太多的事情要改变,要可行… 3) 假设您使用您的asp.net站点并添加对mvc的引用,并添加默认的全局asax路由等,则应用程序仍应干净地构建,但在查找/controller/action/id类型的路由时会抛出路由错误,因此您可能需要对此进行检查。 如果可以,您可以对这两个应用程序进行xcopy合并(即将mvc应用程序中的所有文件复制到asp.net应用程序预部署中)。我知道您可以通过创建一个大型项目来实现这一点,这两个应用程序已经合并,但是这样代码就可以在构建过程的后期进行合并。(签名的程序集,让人觉得很麻烦)。再一次你需要处理临时数据问题… 我没有接触过URL重写和许多其他方面你可能需要考虑的,请注意,每种方法都有明显的缺点,你可能需要考虑。 综上所述,我认为您最大的问题将是来自mvc端的httpapplication、session和tempdata,以及来自asp.net端的view state。URL重写,认证应该更容易。 正如阿甘所说,“这是我的想法”。 |
2
4
经过大量研究,我发现从IIS的角度来看,保持这些项目合并的一个好方法是在Visual Studio中的单独项目中,在同一文件夹中创建项目,但将每个项目的文件保存在各自的.csproj文件中。
通过这种方式,可以单独发布它们,也可以将它们作为解决方案发布,通过查看解决方案资源管理器可以很容易地知道哪些文件属于每个项目。当项目从经典的asp(同样,不是.net)移动到mvc中时,我重命名了asp项目中的旧文件夹
到目前为止效果还不错。唯一的其他更改是在global.asx.cs文件中添加了路由忽略规则以忽略.asp文件:
到目前为止,一切似乎都很顺利。 |