2010-09-17 34 views
0

我正在使用.net 2010,c#構建一個web應用程序。我想在一個解決方案中創建多個項目。我如何構建我的asp.net web應用程序的類架構

  1. 一個asp.net web應用程序

  2. 類庫持有正常的商業邏輯。

  3. 用於保存業務邏輯以調用第三方API的類庫。

當我打電話第三方API,我需要先登錄,和第三方API將返回一個會話我溝通,直到我退出。我想要的是在asp.net web應用程序中保持相同的登錄會話。這意味着當用戶從web表單登錄時,該程序將登錄第三方API併爲該用戶獲取會話;另一個用戶從web表單登錄後,該程序將登錄第三方API併爲該用戶獲取另一個會話。每當用戶對業務邏輯層進行一些調用時,業務邏輯層中的方法應該能夠知道它正在使用的來自第三方API的哪個會話。

此外,我可能希望稍後將2類庫用於WPF應用程序或控制檯應用程序。

我該如何實現它?

回答

1

只需將從登錄中獲取的第三方API的會話信息保存在ASP.NET應用程序的Session對象中,並將其重用於API的後續請求。 也就是說假設第三方將提供一個名爲會話cookie .ASPXAUTH你可以做到以下幾點:

 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(); 
0

如果可能重用類庫,如果這些圖書館之一是爲了抽象獲得第三-party API,那麼你應該在該庫中有一個類,它是API的入口點。它可能包含該API的所有方法,或者可能會明確表示使用該API的「會話」。

該類應根據需要調用API的「登錄」方法,並且應該保存API返回的會話密鑰的副本。

在您的ASP.NET應用程序中,您應該在ASP.NET會話狀態下保留此類的一個實例。那樣,每個用戶將會有一個。在控制檯或WPF應用程序中,只需將一個實例作爲類成員保存即可,也許是一個靜態成員。

相關問題