当前位置:  开发笔记 > 编程语言 > 正文

三层Web应用程序

如何解决《三层Web应用程序》经验,为你挑选了2个好方法。

是否可以 - 最好的做法 - 使用第二层重定向用户?

例如:

public static void ForceLogin()
{
    HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];

    if (cookie != null)
    {
        if (Regex.IsMatch(cookie.Value, "^[0-9]+\\.[a-f0-9]+$"))
        {
            using (EibxDataContext db = new EibxDataContext())
            {
                int count = db.Logins.Count(l => l.Password == cookie.Value);

                if (count == 1)
                {
                    return;
                }
            }
        }
    }

    HttpContext.Current.Response.Redirect("~/Login.aspx");
}

在最后一行,我使用业务/服务逻辑层将用户重定向到登录页面.

这应该在Presentation层中完成吗?



1> Robert C. Ba..:

绝对不.业务逻辑层应该做出决定,UI层应该进行重定向.业务层不应该对HttpContext有任何了解,也不应该直接读取cookie.将相关信息传递到业务层,以便业务层可以做出决策,并将决策传递给UI层,以便它可以处理由此产生的决策.

这就是原因......如果从Web服务使用业务层会怎么样?业务层如何在该实例中进行重定向?或者假设它与非Web客户端一起使用?重定向在该上下文中没有意义.如果您更改了UI图层,这不应该影响您的业务逻辑层,并且将重定向和cookie读取混合到业务层中将需要使用所提议的设计.



2> Marc Gravell..:

这取决于您如何定义图层; 例如,我的"业务逻辑"通常与我试图解决的问题有关,并且对UI没有任何了解.因此它无法进行重定向,因为它无法访问请求/响应.

就个人而言,我会在UI层执行此操作; 处理诸如守门人和监护人之类的原始交互是UI层的Web应用工作的一部分.IMO.例如,通过http模块,(根据定义)是UI级组件.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有