你有認識在美攻讀博士學位的同學嗎?Facebook 成立了一個產學互助計畫 (Facebook Fellowship Program)提供獎助學金,資助與Internet economics, cloud computing, social computing, data mining, machine learning, and systems以及information retrieval等相關主題的研究計畫。有興趣的同學快來看看,也可以推薦給你的朋友。
Understanding Connection Pooling in .NET
Understanding Connection Pooling in .NET: ASP Alliance
Abstract
Connection Pooling can increase the database performance to a huge extent. This article discusses what Connection Pooling actually is, how it can boost the performance of database access and how we can create a Connection Pool in .NET and add and remove connections to it.
Tuning Up ADO.NET Connection Pooling in ASP.NET Applications
15 Seconds : Tuning Up ADO.NET Connection Pooling in ASP.NET Applications
Connection Pooling BasicsIntel Atom Developer – CEP Premium
Enter your netbook app into the Intel® Atom™ Developer Challenge by 6/ 14.
appdeveloper.intel.com/challenge
AutoCAD® Trial Download
Free 30 Day Trial Of AutoCAD 2011. Save Time And Increase Productivity
Autodesk.com/AutoCAD
Microsoft SQL Server® 2008 – Free Trial
Download the Free 180-day Trial of SQL Server® 2008 Enterprise Edition!
Microsoft.com/EverybodysBusinessOpening a database connection is a resource intensive and time consuming operation. Connection pooling increases the performance of Web applications by reusing active database connections instead of creating a new connection with every request. Connection pool manager maintains a pool of open database connections. When a new connection requests come in, the pool manager checks if the pool contains any unused connections and returns one if available. If all connections currently in the pool are busy and the maximum pool size has not been reached, the new connection is created and added to the pool. When the pool reaches its maximum size all new connection requests are being queued up until a connection in the pool becomes available or the connection attempt times out.
用其他身份執行程式
unit Unit1;interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;const
LOGON_WITH_PROFILE = 1;
LOGON_NETCREDENTIALS_ONLY = 2;function CreateProcessWithLogon(
lpUsername: PWChar;
lpDomain: PWChar;
lpPassword: PWChar;
dwLogonFlags: DWORD;
lpApplicationName: PWChar;
lpCommandLine: PWChar;
dwCreationFlags: DWORD;
lpEnvironment: Pointer;
lpCurrentDirectory: PWChar;
const lpStartupInfo: TStartupInfo;
var lpProcessInfo: TProcessInformation
): BOOL; stdcall;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}
function CreateProcessWithLogon; external advapi32 name ‘CreateProcessWithLogonW’;
procedure TForm1.Button1Click(Sender: TObject);
var
wUsername, wDomain, wPassword, wApplicationName: WideString;
pwUsername, pwDomain, pwPassword, pwApplicationName: PWideChar;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
wUsername := ‘administrator’;
wDomain := “;
wPassword := ‘123456’;
wApplicationName := ‘cmd.exe’;
pwUsername := Addr(wUsername[1]);
pwDomain := Addr(wDomain[1]);
pwPassword := Addr(wPassword[1]);
pwApplicationName := Addr(wApplicationName[1]);FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
StartupInfo.cb := SizeOf(TStartupInfo);
if not CreateProcessWithLogon(pwUsername,pwDomain,pwPassword,LOGON_WITH_PROFILE,
pwApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,
nil,nil,StartupInfo,ProcessInfo) then
RaiseLastOSError;
end;end.
可帶入其他使用者的Profile,使用上比LogonUser、CreateProcessAsUser簡單,省去設定SE_TCB_NAME privilege
如何從動態伺服器網頁 (Active Server Page) 模擬使用者
如何從動態伺服器網頁 (Active Server Page) 模擬使用者
本文將告訴您動態伺服器網頁 (ASP) 的模擬和安全性內容。文中內容會提供可從 ASP 網頁產生實體的 Microsoft Visual Basic ActiveX 動態連結程式庫 (DLL) 程式碼範例,以便模擬使用者並變更目前執行緒的安全性內容。根據預設,ASP 會在模擬使用者的安全性內容中執行。Web 伺服器會在收到對 ASP 檔案的要求時使用工作執行緒,並將該執行緒的安全性內容設定為模擬使用者。Internet Information Server (IIS) 驗證方法 (匿名、基本、NT 整合等) 會決定模擬使用者為何。接著,ASP 程式碼就會在該使用者的內容中執行。
您可以在模擬使用者時,解決下列出現在應用程式中的安全性衝突:
* 使用「NT 整合」(NTLM) 安全性或是 Kerberos 來驗證,而且必須通過「具名管道」通訊協定來存取網路資源 (例如,檔案、Access 資料庫或是 SQL Server) 的應用程式。
* 從 Session_OnEnd 或 Application_OnEnd 事件來存取網路資源的應用程式。使用處理程序的識別碼來執行 Session_OnEnd 和 Application_OnEnd 事件。如果是同處理序或「低」應用程式保護的應用程式,這個識別碼就會是 SYSTEM 使用者 ID,而處理程序就會是 Inetinfo.exe 檔案。相對於模擬,您也可以執行不同的記憶體處理程序、或是使用「高」(獨立的) 應用程式保護,並將 Microsoft Transaction Server (MTS) 套件或 COM+ 應用程式的識別碼設定為想要的使用者 ID。
* 支援多位使用者透過「Microsoft Active Directory 服務介面」(Microsoft Active Directory Services Interface,ADSI) 連線到 WinNT:// 命名空間的應用程式。這些連線會與第一個開啟連線的使用者安全性憑證,一起存入快取。 執行模擬可以確保只有單一使用者開啟該連線;因此,該使用者的憑證就會與快取的憑證相符。
在 Reporting Services 中使用 Forms 驗證
在 Reporting Services 中使用 Forms 驗證 (Microsoft SQL Server 2000 技術文件)
Microsoft Corporation2004 年 3 月
適用於:
Microsoft®SQL Server™2000 Reporting Services摘要:學習主要著重在 Forms 驗證的 Reporting Services 安全性擴充性能。此外,下載及部署 Reporting Services 的 Forms 驗證擴充功能範例。
(請注意:範例程式碼中的註解均為英文,此文章中所顯示的中文化註解,僅供參考)
(列印共 23 頁)
若要安裝範例程式碼,請下載 Forms 驗證範例安裝程式並在您的電腦上執行。
目錄簡介
關於本指南
Reporting Services 平台
Forms 驗證範例
結論
其他資源
簡介部署安全的分散式企業報表解決方案是一項深具挑戰性的過程。從報表存取、到提供重要及機密資料的資料來源,有關在您的報表環境中如何安全地驗證及授權使用者,您必須作出若干決策。而且您報表的安全性僅如在報表連鎖中最脆弱的一個連結。
您需要的安全性類型取決於您的報表環境和已有的安全性系統類型。Microsoft®Windows®驗證是保護 Microsoft®SQL Server™2000 Reporting Services 中報表的主要系統。Windows 驗證提供與其他 Microsoft 伺服器產品緊密的整合;因為 Reporting Services 是在 Windows 驗證上設計和測試的,所以在這個環境中最為安全。
在有些例子中,您可能需要擴充 Reporting Services 安全性系統來適應您企業中的自訂安全性。您可以經由豐富的 Reporting Services API 開發平台來完成這項工作。本指南會呈現在 Reporting Services 中的擴充功能概觀,以及特別是安全性擴充功能。您也可以下載並瀏覽設計來 Reporting Services 並用的 Forms 驗證擴充功能範例。然後,您應該就能夠從 Reporting Services 安全性擴充功能獲益,新增自訂安全性到您的企業報表解決方案。
關於本指南本指南中的資訊是設計用來:
* 為您介紹 Reporting Services 安全性擴充功能。
* 識別在 Reporting Services 的何處和如何您需要自訂驗證和授權。
* 說明在 Reporting Services 中驗證和授權如何運作。
* 討論 Forms 驗證和如何實作。
* 提供您可以下載和瀏覽的 Forms 驗證範例。須知事項
本指南並非 ASP.NET 安全性或 Forms 驗證的簡介。它並不會提供您程式設計或應用程式安全性的深入知識。做為一個企圖要實作 Reporting Services 安全性擴充功能的開發人員,您應該已經有下列其中之一或以上的深入經驗:
* Microsoft Reporting Services 功能,特別是驗證、授權和角色架構安全性。
* Microsoft .NET Framework。
* ASP.NET 和 ASP.NET 安全性。
* Forms 驗證。
* 在 .NET 語言的開發經驗。此範例目前只適用於 C#。如果您要直接探究程式碼的話,可以向前跳到<Forms 驗證範例>一節。不過,您會發現開頭的幾節所介紹的一些您會使用到的技術以及它們如何配合在一起是很有用的。
LogonUser problem
Directory Programming .NET – LogonUser problem
I hate ‘logonuser’. Hopefully the below code will help someone…CreateProcessAsUser from System Service (VB.NET)
The following code has been tested on Windows 2003 SP2. The calling user account must have ‘Assign Primary Token’ and ‘Increase Quota’ permissions to properly execute CreateProcessAsUser; see MS KB285879.
Public Function RunProc(ByVal CMD As String, ByVal ARG As String) As String
Dim er As Int16
Dim exitCode As System.UInt32 = Convert.ToUInt32(123)Dim saThreadAttributes As SECURITY_ATTRIBUTES = New SECURITY_ATTRIBUTES
saThreadAttributes.nLength = Marshal.SizeOf(saThreadAttributes)Dim impToken As System.IntPtr = IntPtr.Zero
Dim priToken As System.IntPtr = IntPtr.ZeroIf LogonUser(“DomainUser", “Domain", “Passwd", LogonType.LOGON32_LOGON_INTERACTIVE, _
LogonProvider.LOGON32_PROVIDER_DEFAULT, impToken) Then
If DuplicateTokenEx(impToken, &H2000000, Nothing, SecurityImpersonationLevel.SecurityDelegation, TOKEN_TYPE.TokenPrimary, priToken) ThenDim pi As PROCESS_INFORMATION = New PROCESS_INFORMATION
Dim si As STARTUPINFO = New STARTUPINFO
si.cb = Marshal.SizeOf(si)
si.lpDesktop = IntPtr.ZeroDim saProcessAttributes As SECURITY_ATTRIBUTES = New SECURITY_ATTRIBUTES
saProcessAttributes.nLength = Marshal.SizeOf(saProcessAttributes)If Not CreateProcessAsUser(priToken, CMD, CMD & " " & ARG, saProcessAttributes, _
saThreadAttributes, False, 0, IntPtr.Zero, “c:\", si, pi) Thener = Marshal.GetLastWin32Error
RunProc = (“err runas " & er)Else
WaitForSingleObject(pi.hProcess, Infinite)
GetExitCodeProcess(pi.hProcess, exitCode)
End If
CloseHandle(priToken)
CloseHandle(impToken)
CloseHandle(pi.hProcess)
CloseHandle(pi.hThread)
End If
End If
End Function
如何從 Visual Basic 的其他使用者身分啟動處理序
如何從 Visual Basic 的其他使用者身分啟動處理序
本文將告訴您如何以程式設計的方式以另一個使用者從 Microsoft Visual Basic 啟動處理序。如果要執行這項操作,您可以使用 LogonUser 和 CreateProcessAsUser Win32 API,正在執行 Microsoft Windows NT 4.0 的電腦上或您可以使用 CreateProcessWithLogonW Win32 API,正在執行 Microsoft Windows 2000 的電腦上或更新版本。無法從處理序在 LocalSystem 帳戶下呼叫 CreateProcessWithLogonW。
回此頁最上方
如何從 Visual Basic 的其他使用者身分啟動處理序
如何從 Visual Basic 的其他使用者身分啟動處理序
本文將告訴您如何以程式設計的方式以另一個使用者從 Microsoft Visual Basic 啟動處理序。如果要執行這項操作,您可以使用 LogonUser 和 CreateProcessAsUser Win32 API,正在執行 Microsoft Windows NT 4.0 的電腦上或您可以使用 CreateProcessWithLogonW Win32 API,正在執行 Microsoft Windows 2000 的電腦上或更新版本。無法從處理序在 LocalSystem 帳戶下呼叫 CreateProcessWithLogonW。
回此頁最上方
LogonUser problem
Directory Programming .NET – LogonUser problem
I hate ‘logonuser’. Hopefully the below code will help someone…CreateProcessAsUser from System Service (VB.NET)
The following code has been tested on Windows 2003 SP2. The calling user account must have ‘Assign Primary Token’ and ‘Increase Quota’ permissions to properly execute CreateProcessAsUser; see MS KB285879.
Public Function RunProc(ByVal CMD As String, ByVal ARG As String) As String
Dim er As Int16
Dim exitCode As System.UInt32 = Convert.ToUInt32(123)Dim saThreadAttributes As SECURITY_ATTRIBUTES = New SECURITY_ATTRIBUTES
saThreadAttributes.nLength = Marshal.SizeOf(saThreadAttributes)Dim impToken As System.IntPtr = IntPtr.Zero
Dim priToken As System.IntPtr = IntPtr.ZeroIf LogonUser(“DomainUser", “Domain", “Passwd", LogonType.LOGON32_LOGON_INTERACTIVE, _
LogonProvider.LOGON32_PROVIDER_DEFAULT, impToken) Then
If DuplicateTokenEx(impToken, &H2000000, Nothing, SecurityImpersonationLevel.SecurityDelegation, TOKEN_TYPE.TokenPrimary, priToken) ThenDim pi As PROCESS_INFORMATION = New PROCESS_INFORMATION
Dim si As STARTUPINFO = New STARTUPINFO
si.cb = Marshal.SizeOf(si)
si.lpDesktop = IntPtr.ZeroDim saProcessAttributes As SECURITY_ATTRIBUTES = New SECURITY_ATTRIBUTES
saProcessAttributes.nLength = Marshal.SizeOf(saProcessAttributes)If Not CreateProcessAsUser(priToken, CMD, CMD & " " & ARG, saProcessAttributes, _
saThreadAttributes, False, 0, IntPtr.Zero, “c:\", si, pi) Thener = Marshal.GetLastWin32Error
RunProc = (“err runas " & er)Else
WaitForSingleObject(pi.hProcess, Infinite)
GetExitCodeProcess(pi.hProcess, exitCode)
End If
CloseHandle(priToken)
CloseHandle(impToken)
CloseHandle(pi.hProcess)
CloseHandle(pi.hThread)
End If
End If
End Function