当前位置: 首页 > 编程日记 > 正文

避免单线程单元 (STA) COM 组件

默认情况下,ASP.NET 不允许任何 STA COM 组件在页面内运行。若要运行它们,必须在 .aspx 文件内将 ASPCompat=true 属性包含在 @ Page 指令中。这样就将执行用的线程池切换到 STA 线程池,而且使 HttpContext 和其他内置对象可用于 COM 对象。前者也是一种性能优化,因为它避免了将多线程单元 (MTA) 封送到 STA 线程的任何调用。
使用 STA COM 组件可能大大损害性能,应尽量避免。若必须使用 STA COM 组件,如在任何 interop 方案中,则应在执行期间进行大量调用并在每次调用期间发送尽可能多的信息。另外,小心不要在构造页面期间创建任何 STA COM 组件。例如下面的代码中,在页面构造时将实例化由某个线程创建的 MySTAComponent,而该线程并不是将运行页面的 STA 线程。这可能对性能有不利影响,因为要构造页面就必须完成 MTA 和 STA 线程之间的封送处理。

<%@ Page Language="VB" ASPCompat="true" %>
<script runat=server>
Dim myComp as new MySTAComponent()
Public Sub Page_Load()
myComp.Name = "Bob"
End Sub
</script>
<html>
<%
Response.Write(myComp.SayHello)
%>
</html>

首选机制是推迟对象的创建,直到以后在 STA 线程下执行上述代码,如下面的例子所示。

<%@ Page Language="VB" ASPCompat="true" %>
<script runat=server>
Dim myComp
Public Sub Page_Load()
myComp = new MySTAComponent()
myComp.Name = "Bob"
End Sub
</script>
<html>
<%
Response.Write(myComp.SayHello)
%>
</html>

推荐的做法是在需要时或者在 Page_Load 方法中构造任何 COM 组件和外部资源。

永远不要将任何 STA COM 组件存储在可以由构造它的线程以外的其他线程访问的共享资源里。这类资源包括像缓存和会话状态这样的资源。即使 STA 线程调用 STA COM 组件,也只有构造此 STA COM 组件的线程能够实际为该调用服务,而这要求封送处理对创建者线程的调用。此封送处理可能产生重大的性能损失和可伸缩性问题。在这种情况下,请研究一下使 COM 组件成为 MTA COM 组件的可能性,或者更好的办法是迁移代码以使对象成为托管对象。

相关文章:

将 SQL Server 存储过程用于数据访问

在 .NET Framework 提供的所有数据访问方法中&#xff0c;基于 SQL Server 的数据访问是生成高性能、可缩放 Web 应用程序的推荐选择。使用托管 SQL Server 提供程序时&#xff0c;可通过使用编译的存储过程而不是特殊查询获得额外的性能提高。

centos下安装apache + subversion(转)

目录&#xff1a; 一.安装apr跟apr-util 二.安装apache服务器 三. 安装subversion 四. 配置subversion 五. 配置apache的httpd.conf 六. 验证安装 七.导入数据到资料库八.版本库服务器的同步&#xff08;新加入的&#xff09; 附&#xff1a;安装过程中遇到的问题 一.安装apr、…

真香!3个月0基础转型大厂数据分析师,他做对了什么?

年初的黑天鹅打乱了我的求职阵脚&#xff0c;专业不对口&#xff0c;无实习经验&#xff0c;在求职路上的竞争优势几乎为0&#xff0c;然而&#xff0c;开启自救模式后&#xff0c;我顺利成为了头条数据分析师&#xff0c;下面我就讲讲人生是怎么开挂的。随着人工智能普及&…

OpenStack快速入门

OpenStack云计算快速入门&#xff08;1&#xff09;该教程基于Ubuntu12.04版&#xff0c;它将帮助读者建立起一份OpenStack最小化安装。我是五岳之巅&#xff0c;翻译中多采用意译法&#xff0c;所以个别词与原版有出入&#xff0c;请大家谅解。我不是英语专业&#xff0c;我觉…

将 SqlDataReader 类用于快速只进数据游标

SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。如果当创建 ASP.NET 应用程序时出现允许您使用它的情况&#xff0c;则 SqlDataReader 类提供比 DataSet 类更高的性能。情况之所以这样&#xff0c;是因为 SqlDataReader 使用 SQL Server 的本机网…

微软小冰从上海音乐学院音工系毕业,师从于阳、陈世哲

6月29日&#xff0c;经上海音乐学院音乐工程系评定&#xff0c;人工智能微软小冰和她的人类同学——上音音乐工程系音乐科技专业毕业生一起毕业&#xff0c;并授予微软小冰上海音乐学院音乐工程系2020届“荣誉毕业生”称号。微软小冰和上海音乐学院的毕业生们一起参加了于6月29…

Typedef用法学习

不管实在C还是C代码中&#xff0c;typedef这个词都不少见&#xff0c;当然出现频率较高的还是在C代码中。typedef与#define有些相似&#xff0c;但更多的是不同&#xff0c;特别是在一些复杂的用法上&#xff0c;就完全不同了&#xff0c;看了网上一些C/C的学习者的博客&#x…

开发板tftp:timeout问题

想要从PC上面tftp文件的时候遇到了tftp:timeout的问题&#xff1a; >: tftp -gr gprsapp 192.168.1.38tftp: timeout 检查了网络&#xff0c;可以ping的通PC。PC的tftp服务器也已经打开了&#xff0c;测试从开发板上面向PC上tftp传送数据也是可以的&#xff1a;说明开发板上…

选择适合页面或应用程序的数据查看机制

根据您选择在 Web 窗体页显示数据的方式&#xff0c;在便利和性能之间常常存在着重要的权衡。例如&#xff0c;DataGrid Web 服务器控件可能是一种显示数据的方便快捷的方法&#xff0c;但就性能而言它的开销常常是最大的。在某些简单的情况下&#xff0c;您通过生成适当的 HTM…

Android强制设置横屏或竖屏

全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏 横屏 …

免费直播:1小时带你体验Python车牌识别实战

Python基础学会了&#xff0c;实战又是爬虫&#xff1f;太枯燥&#xff1f;别无聊&#xff0c;CSDN学院邀请章秀淞老师开设技术直播课&#xff1a;1小时带你体验车牌识别实战。让你从众多车中&#xff0c;能用Python技术找到夏树上的那辆叔叔的奔驰车牌&#xff08;玩笑&#x…

centos上tensorflow一键安装脚本

鉴于tensorflow在centos上安装相当麻烦,特地制作了一个脚本方便以后移植到其它机器上,脚本含有其它python常用包: #! /bin/bash sudo yum install -y gcc g gtk-devel libjpeg-devel libtiff-devel jasper-devel libpng-devel zlib-devel cmake unzip sqlite-devel readline-…

谷歌AI专家爆料:90%的人都不知道,写不出好代码,是输在了这点上!

工作压力大、大牛实力碾压&#xff0c;、外行人的偏见......2020年&#xff0c;程序员的心很累&#xff01;而Python和AI的初学者&#xff0c;心更累&#xff01;最近几年&#xff0c;我看过市面上很多 Python和人工智能的教程和书籍&#xff0c;它们大都这样讲&#xff1a;先从…

只要可能,就缓存数据和页输出

ASP.NET 提供了一些简单的机制&#xff0c;它们会在不需要为每个页请求动态计算页输出或数据时缓存这些页输出或数据。另外&#xff0c;通过设计要进行缓存的页和数据请求&#xff08;特别是在站点中预期将有较大通讯量的区域&#xff09;&#xff0c;可以优化这些页的性能。与…

系统基本安全优化

1、删除系统特殊的的用户帐号和组帐号&#xff1a; userdel adm userdel lp userdel sync userdel shutdown userdel halt userdel news userdel uucp userdel operator userdel games userdel gopher groupdel adm groupdel lp groupdel news groupdel uucp groupdel games gr…

VMware12中安装CentOS7.2的详细过程

标签&#xff1a;Linux 虚拟机 CentOS1.什么是虚拟机虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。流行的虚拟机软件有VMware(VMWare ACE&#xff09;、Virtual Box和Virtual PC&#xf…

对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园艺

ASP.NET 进程模型帮助启用多处理器计算机上的可缩放性&#xff0c;将工作分发给多个进程&#xff08;每个 CPU 一个&#xff09;&#xff0c;并且每个进程都将处理器关系设置为其 CPU。此技术称为网络园艺。如果应用程序使用较慢的数据库服务器或调用具有外部依赖项的 COM 对象…

深耕智能制造和超高清视频领域,思谋科技获数千万美元融资

6月29日&#xff0c;思谋科技对外宣布完成数千万美元Pre-A轮融资&#xff0c;由IDG资本领投&#xff0c;真格基金和联想创投跟投。据悉&#xff0c;本轮融资主要用于基于AI技术的智能制造、超高清视频等系统产品研发、人才招聘和市场拓展。 思谋科技成立于2019年12月&#xff…

[转] JavaScript仿淘宝智能浮动

转载自: http://www.williamlong.info/archives/2864.html 我们经常在淘宝网看到这样的特效&#xff0c;商品列表特别长&#xff0c;而商品列名称始终保持在最顶端。如果你把滚动条滚动至最上边了&#xff0c;那么它会自动判断是否到顶端了&#xff0c;然后一直置顶从而不怕遮挡…

《高效团队开发工具与方法》

一直以来都在用所谓的敏捷开发&#xff0c;但是也只是简单的说&#xff0c;用什么用什么&#xff0c;从开始感觉不方便&#xff0c;到后来感觉习惯了&#xff0c;可没有考虑过到底能带来什么改变&#xff0c;所以最近在上下班的地铁上在看完了《高效团队开发工具与方法》&#…

java image filters[02]-过滤器初探

图片缩放应用比较多&#xff0c;我们看看imageFilters提供的ScaleFilter怎么完成这项工作。 首先了解怎么调用过滤器&#xff0c;实例代码如下&#xff1a; public void imageScale(String fromPath, String toPath, int width, int height)throws IOException {// 定义“缩放过…

一定要禁用调试模式

在部署生产应用程序或进行任何性能测量之前&#xff0c;始终记住禁用调试模式。如果启用了调试模式&#xff0c;应用程序的性能可能受到非常大的影响。

Java“拍了拍”你,面试其实没那么难...

后疫情时代&#xff0c;连程序员这个多金的职业也遭受到了一定程度的打击。从各大招聘网站和多次面试经历中&#xff0c;相信大家已经意识到&#xff0c;面试官对程序员技能体系和项目经验考核似乎更严苛了。你在面试中常常为什么苦恼呢&#xff1f;简历撰写&#xff1f;数据算…

单据自动转换并审核的方法示例

需求要点&#xff1a;在单据A的界面点击“自动转换”&#xff0c;则自动产生审核态的单据B&#xff1b;若单据B不满足审核条件&#xff0c;则维持“提交”态&#xff1b;若单据B不满足保存校验&#xff0c;则维持“暂存”态&#xff1b;若转换失败&#xff0c;给出界面提示。实…

优化 Web 服务器计算机和特定应用程序的配置文件以符合您的特定需要

默认情况下&#xff0c;ASP.NET 配置被设置成启用最广泛的功能并尽量适应最常见的方案。因此&#xff0c;应用程序开发人员可以根据应用程序所使用的功能&#xff0c;优化和更改其中的某些配置&#xff0c;以提高应用程序的性能。下面的列表是您应该考虑的一些选项。 仅对需要的…

3年编程经验无名校背景,全栈小哥是如何拿下Twitter Offer的?

作者 | zhiachong责编 | Aholiab头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;外国小哥zhia是个有面试绝技的人&#xff0c;他只有三年的编程经验&#xff0c;并且没有任何名牌大学的光环&#xff0c;两年多以前&#xff0c;他同时获得…

Sco Unixware 7.1.3企业版服务器安装视频教程

Sco Unixware 7.1.3企业版服务器安装视频教程 UnixWare 7.1.3是最先进的工业标准Intel和AMD处理器系统运行平台。UnixWare 7.1.3是关键业务解决方案的可靠基础&#xff0c;具备可伸缩性、可靠性、安全性突出和物美价廉的特点。其中UnixWare 7.1.3企业版为中高端数据库服务器及应…

牛!Python 也能实现图像姿态识别溺水行为了!

作者 | 李秋键责编 | Carol封图 | CSDN 下载自视觉中国众所周知随着人工智能智能的发展&#xff0c;人工智能的落地项目也在变得越来越多&#xff0c;尤其是计算机视觉方面。所以今天我们也是做一个计算机视觉方面的训练&#xff0c;用python来判断用户溺水行为&#xff0c;结合…

Asp.net中多项目共享Session

1. 建立一个空白解决方案blank solution&#xff0c;如&#xff1a;d:/MyProject/MyProject.sln 2. 在d:/MyProject下建一个Web Application的根目录d:/MyProject/WebMis并设为http://localhost/WebMis的虚拟目录 3. 在WebMis目录下根据模块分别新建目录&#xff0c;如&#xf…

JQuery模板插件jquery.tmpl-动态ajax扩展

在上一篇JQuery模板插件-jquery.tmpl中介绍了这款插件。有时我们需要去动态的ajax去加载模板&#xff0c;或者数据&#xff0c;根据url参数或者其他信息加载不同的模板&#xff0c;数据。在我的某个项目中有这个需求&#xff0c;所以特地写成jquery工具函数&#xff0c;加入了本…