繁体   English   中英

我如何为asp.net Web应用程序构建类体系结构

[英]How can i build my class architecture for my asp.net web application

我正在使用.net 2010 c#构建Web应用程序。 我想在一个解决方案中创建多个项目。

  1. 一个asp.net Web应用程序

  2. 用于保存常规业务逻辑的类库。

  3. 一个类库,用于保存业务逻辑以调用第三方API。

当我调用第三方API时,我需要先登录,并且第三方API将返回一个会话供我通信,直到我注销为止。 我想要的是在asp.net Web应用程序中保留相同的登录会话。 这意味着当用户从Web表单登录时,程序将登录第三方API并为该用户获取会话; 从Web表单登录的另一个用户,程序将登录第三方API并为该用户获取另一个会话。 每当用户对业务逻辑层进行一些调用时,业务逻辑层中的方法应该能够知道它正在使用第三方API中的哪个会话。

另外,我以后可能想为WPF应用程序或控制台应用程序重用2类库。

我该如何实施?

只需将从登录名获取的第三方API的会话信息保存在ASP.NET应用程序的Session对象中,然后将其用于后续对API的请求即可。 也就是说,假设第三方正在提供名称为.ASPXAUTH的会话cookie,则可以执行以下操作:

        api.CookieContainer = new System.Net.CookieContainer();
        api.Login(user_name, password);
        Session["APIAuthenticationCookie"] = api.CookieContainer.GetCookies(new Uri(api.Url))[".ASPXAUTH"];


    //later request: reuse session cookie before using API
    api.CookieContainer = new CookieContainer(); 
    Cookie sessionCookie = (Cookie)Session["APIAuthenticationCookie"];
    if (sessionCookie != null)
        api.CookieContainer.Add(sessionCookie);
    api.RandomRequest();

如果您可能会重用类库,并且如果其中一个库旨在抽象化对第三方API的访问,那么您应该在该库中有一个类作为API的入口点。 它可能包含该API的所有方法,或者可能显式表示该API的“会话”。

此类应根据需要调用API的“登录”方法,并应保存API返回的会话密钥的副本。

在ASP.NET应用程序中,应将此类的实例保持在ASP.NET会话状态。 这样,每个用户将只有一个。 在控制台或WPF应用程序中,只需将一个实例作为类成员(也许作为静态成员)保留在周围即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM