VS.NET(C#)-5.14_IIS5与ASP.NET关系

本文介绍了IIS5.x如何通过ISAPI接口与ASP.NET进行交互,详细阐述了从HTTP请求到达IIS到最终由ASP.NET处理的全过程,包括W3SVC服务、ISAPI扩展、工作进程aspnet_wp.exe的启动以及CLR环境的加载。

IIS5与ASP.NET关系

IIS5.x运行在IIS进程InetInfo.exe中,在该进程中一个最重要的服务就是名为World Wide Web PublishingService(简称W3SVC)的Windows Service。

W3SVC的主要功能包括HTTP请求的监听、工作进程的管理以及配置管理(通过从Metabase中加载相关配置信息)等。

当检测到某个HTTP Request后,先根据扩展名判断请求的是否是静态资源(比如.html,.img,.txt,.xml等),如果是则直接将文件内容以HTTP Response的形式返回。

如果是动态资源(比如.aspx,asp,php等等),则通过扩展名从IIS的脚本影射(Script Map)找到相应的ISAPI Dll。

ISAPI是Internet服务器API(Internet Server ApplicationProgramming Interface)的缩写是一套本地的Win32 API,具有较高的执行性能,是IIS和Web应用或者平台之间的纽带。

比如ASP ISAPI桥接IIS与ASP,而ASP.NET ISAPI则连接着IIS与ASP.NET

ISPAI定义在一个DllASP.NET ISAPI对应的Dll为Aspnet_isapi.dll,你可以在目录“%windir%\Microsoft.NET\Framework\{versionno}\”中找到该Dll。

ISAPI支持ISAPI扩展和ISAPI筛选,前者是真正处理HTTP请求的接口,后者则可以在HTTP请求真正被处理之前查看、修改、转发或者拒绝请求,比如IIS可以利用ISAPI筛选进行请求的验证(Authentication)。

如果请求ASP.NET的资源类型,Aspnet_isapi.dll会被加载,ASP.NET ISAPI扩展会创建ASP.NET的工作进程(如果该进程尚未启动),对于IIS 5.x来说,该工作进程为aspnet_wp.exe

IIS进程与工作进程之间通过命名管道进程通信,以获得最好的性能

在工作进程初始化过程中,.NET 运行时(CLR)被加载,从而构建了一个托管的环境。对于某个Web应用的初次请求,CLR会为其创建一个AppDomain。在此AppDomain中,HTTP Runtime被加载并用以创建相应的应用。

对于寄宿于IIS 5.x的所有Web 应用都运行在同一个进程(工作进程Aspnet_wp.exe)的不同AppDomain中。

 


分析路由器客户端对路由器上ftp服务器一次ftp读写的perf报告结果,分析如何处理优化USB读写性能。 91.19% 0.00% proftpd [kernel.kallsyms] [k] el0_svc_compat | ---el0_svc_compat el0_svc_compat_handler | --91.10%--el0_svc_common | |--50.27%--__arm64_sys_read | | | --50.22%--ksys_read | | | --50.06%--vfs_read | | | --49.76%--__vfs_read | | | --49.62%--sock_read_iter | | | --49.50%--inet_recvmsg | | | --49.21%--tcp_recvmsg | | | |--22.17%--tcp_cleanup_rbuf | | | | | --22.08%--tcp_send_ack | | | | | --22.02%--__tcp_send_ack.part.0 | | | | | |--20.97%--__tcp_transmit_skb | | | | | | | --20.26%--ip_queue_xmit | | | | | | | --20.15%--__ip_queue_xmit | | | | | | | |--14.61%--ip_output | | | | | | | | | |--13.77%--ip_finish_output | | | | | | | | | | | --13.54%--ip_finish_output2 | | | | | | | | | | | --13.10%--dev_queue_xmit | | | | | | | | | | | --13.04%--__dev_queue_xmit | | | | | | | | | | | --12.42%--dev_hard_start_xmit | | | | | | | | | | | --12.05%--br_dev_xmit | | | | | | | | | | | --10.85%--br_forward | | | | | | | | | | | --10.24%--__br_forward | | | | | | | | | | | |--8.91%--br_forward_finish | | | | | | | | | | | | | |--6.53%--br_dev_queue_push_xmit | | | | | | | | | | | | | | | --6.46%--dev_queue_xmit | | | | | | | | | | | | | | | --6.42%--__dev_queue_xmit | | | | | | | | | | | | | | | --5.87%--dev_hard_start_xmit | | | | | | | | | | | | | | | --5.76%--bcmVlan_devHardStartXmit | | | | | | | | | | | | | | | |--4.22%--dev_queue_xmit | | | | | | | | | | | | | | | | | --4.16%--__dev_queue_xmit | | | | | | | | | | | | | | | | | --3.61%--__qdisc_run | | | | | | | | | | | | | | | | --3.13%--sch_direct_xmit | | | | | | | | | | | | | | | | --2.80%--dev_hard_start_xmit | | | | | | | | | | | | | | | | --2.50%--enet_xmit | | | | | | | | | | | | | | | | --1.59%--dispatch_pkt_sf2_lan | | | | | | | | | | | | | | | | --1.32%--cpu_queues_tx_send | | | | | | | | | | | | | | | | --1.25%--archer_dma_cpu_tx_queue_notifier | | | | | | | | | | | | | | | | --1.13%--archer_task_schedule | | | | | | | | | | | | | | | | --1.10%--archer_thread_wakeup | | | | | | | | | | | | | | | | --1.09%--__wake_up | | | | | | | | | | | | | | | | --1.02%--_raw_spin_unlock_irqrestore | | | | | | | | | | | | | | | --0.97%--bcmVlan_processFrame | | | | | | | | | | | | | --2.19%--nf_hook_slow | | | | | | | | | | | | | --1.93%--br_hook | | | | | | | | | | | | | --1.46%--sprintf | | | | | | | | | | | | | --1.39%--vsnprintf | | | | | | | | | | | --1.09%--nf_hook_slow | | | | | | | | | --0.53%--nf_hook_slow | | | | | | | --4.97%--__ip_local_out | | | | | | | --4.74%--nf_hook_slow | | | | | | | |--2.41%--ipv4_conntrack_local | | | | | | | | | --2.14%--nf_conntrack_in | | | | | | | | | --0.80%--tcp_packet | | | | | | | |--0.69%--iptable_filter_hook | | | | | | | | | --0.64%--ipt_do_table | | | | | | | |--0.59%--iptable_raw_hook | | | | | | | | | --0.57%--ipt_do_table | | | | | | | --0.54%--iptable_mangle_hook | | | | | --0.56%--__alloc_skb | | | |--16.16%--skb_copy_datagram_iter | | | | | |--12.56%--_copy_to_iter | | | | | | | --12.20%--__arch_copy_to_user | | | | | --3.05%--__check_object_size | | | |--5.14%--__kfree_skb | | | | | |--2.72%--skb_release_data | | | | | | | --2.44%--bcm_skb_free_head | | | | | | | --2.33%--enet_recycle_handler | | | | | | | --2.02%--_raw_spin_unlock_irqrestore | | | | | |--1.05%--kfree_skbmem.part.0 | | | | | | | --0.96%--kmem_cache_free | | | | | --0.90%--skb_release_head_state | | | |--3.64%--release_sock | | | | | --3.45%--__release_sock | | | | | --3.18%--tcp_v4_do_rcv | | | | | --2.88%--tcp_rcv_established | | | | | |--0.60%--tcp_queue_rcv | | | | | --0.53%--__tcp_ack_snd_check | | | --0.66%--tcp_rcv_space_adjust | |--27.87%--__arm64_sys_write | | | --27.84%--ksys_write | | | --27.59%--vfs_write | | | --27.19%--__vfs_write | | | --26.98%--generic_file_write_iter | | | --26.63%--__generic_file_write_iter | | | |--25.00%--generic_perform_write | | | | | |--16.76%--exfat_write_begin | | | | | | | --16.49%--tp_cont_write_begin | | | | | | | --16.15%--tp_block_write_begin | | | | | | | |--8.53%--__tp_block_write_begin_int.constprop.0 | | | | | | | | | |--5.06%--tp_exfat_get_block | | | | | | | | | | | --4.47%--exfat_map_cluster | | | | | | | | | | | |--1.84%--exfat_get_cluster | | | | | | | | | | | | | --0.84%--exfat_ent_get | | | | | | | | | | | --1.32%--exfat_alloc_cluster | | | | | | | | | | | --0.57%--exfat_ent_set | | | | | | | | | |--1.57%--create_empty_buffers | | | | | | | | | | | --1.15%--alloc_page_buffers | | | | | | | | | | | --1.05%--alloc_buffer_head | | | | | | | | | | | --0.59%--kmem_cache_alloc | | | | | | | | | --0.97%--clean_bdev_aliases | | | | | | | | | --0.77%--pagevec_lookup_range | | | | | | | | | --0.52%--radix_tree_next_chunk | | | | | | | |--6.83%--grab_cache_page_write_begin | | | | | | | | | --6.54%--pagecache_get_page | | | | | | | | | |--2.88%--add_to_page_cache_lru | | | | | | | | | | | |--1.37%--_raw_spin_unlock_irq | | | | | | | | | | | --1.15%--lru_cache_add | | | | | | | | | | | --0.77%--_raw_spin_unlock_irqrestore | | | | | | | | | |--2.43%--__alloc_pages_nodemask | | | | | | | | | | | --1.90%--get_page_from_freelist | | | | | | | | | --0.69%--find_get_entry | | | | | | | --0.53%--memset | | | | | |--3.96%--iov_iter_copy_from_user_atomic | | | | | | | --3.63%--__arch_copy_from_user | | | | | --3.15%--exfat_write_end | | | | | --3.02%--generic_write_end | | | | | --2.46%--block_write_end | | | | | --2.12%--__block_commit_write.constprop.0.isra.0 | | | | | --1.68%--mark_buffer_dirty | | | | | --1.48%--_raw_spin_unlock_irqrestore | | | --0.94%--iov_iter_fault_in_readable | |--4.84%--__arm64_compat_sys_select | | | --4.50%--do_compat_select | | | --3.24%--compat_core_sys_select | | | --2.25%--do_select | | | --0.81%--sock_poll | | | --0.61%--tcp_poll | |--3.85%--__arm64_compat_sys_setitimer | | | --2.53%--_raw_spin_unlock_irq | |--0.74%--__arm64_compat_sys_aarch32_pwrite64 | | | --0.73%--ksys_pwrite64 | vfs_write | | | --0.62%--__vfs_write | | | --0.58%--generic_file_write_iter | | | --0.51%--__generic_file_write_iter | --0.66%--__arm64_compat_sys_clock_gettime
最新发布
10-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值