|
>
Securing a Web-based Microsoft Transaction Server Application(英文)
Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions(英文)
Q217202 PRB: CGI Applications and IIS OOP Applications May Fail(英文)
下文很好地概述了 IIS 如何处理安全性:
Authentication and Security for Internet Developers(英文)
Server.CreateObject 与 CreateObject
建议
使用 Server.CreateObject。如果正在使用 MTS/COM+ 库软件包,请使用 Server.CreateObject 来避免线程阻塞。
为什么
CreateObject 相当于通过脚本引擎调用 CoCreateInstance。如果使用 CreateObject 而不是 Server.CreateObject,将发生下面情况:
ASP 不能识别该对象。
OnStartPage/OnEndPage 页面方法没有调用。
ASP 不知道对象的线程模型。
Server.CreateObject 相当于 GetObjectContext.CreateInstance。这表示 ASP 清楚该对象并知道它的线程模型。另外,如果 ASP 页面是事务性的,则通过调用 Server.CreateObject 可使组件与 ASP 页面在同一事务中。(请注意,事务性的页面可能意味着可避免的业务规则与表达层的耦合。)
常见的陷阱
如果对象处于防火墙后面,可能需要调用 CreateObject。请参阅 Q193230 PRB: Server.CreateObject Fails when Object is Behind Firewall(英文) 以获得详细信息。
详细信息
虽然在 IIS 4.0 下面 CreateObject比 Server.CreateObject 快,但在 IIS 5.0 下性能是相同的。同样,如果正在使用 MTS/COM+ 库软件包/应用程序, Server.CreateObject 可防止线程阻塞。
传递参数
建议
声明 Out 参数为 Variant。在 Visual Basic 术语中,这表示按引用 参数应该为 Variant。按值传递的参数(In 参数)不限于 Variant,但必须与 Variant 兼容。
为什么
脚本客户机使用 Variant。 COM 服务器可使用指定的数据类型。当您将指定的数据类型按值传递给 COM 服务器时, COM 服务器可以毫无问题地接收。但除 Variant 外,其他按引用参数无法“回送”给 ASP 脚本。
常见的陷阱
最常见的错误之一是“类型不匹配”。这通常是因为按引用 传递到 COM 对象的变量不是 Variant。通常的解决方法是按值传递参数或者将参数变为 Variant。
详细信息
如果要在多台计算机上分布组件或在进程外运行它们,可能看到按值 传递参数获得的显著性能。按引用传递将在进程或计算机间造成更多的编组开销,因为数据必须往复发送。如果实际上并不需要按引用传递参数时, 按值传递参数的正确性和有效性也是一个问题。注意,在默认情况下 Visual Basic 按引用传递参数。
下面的 KB 文章讨论将参数从 ASP 传递到 COM 对象:
Q197956 PRB: Passing Parameters By Reference to上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 |
|
|
|
|
|
|
|