簡體   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