ASP.NET架构分析

ASP.NET三层架构(Visual Studio ) 前两天我们了解了数据库的创建以及编写,那么大家会想编写数据库总要用呀,所以今天我就来带大家了解一下asp.net的三层架构,三层架构里就能够很好的运用数据库 一、 三层架构概述 三层结构是一种严格分层方法,即数据访问层(DAL)只能被业务逻辑层(BLL)访问,业 务逻辑层只能被表示层(UI)访问,用户通过表示层将请求传送给业务逻辑层,业务逻辑层完 成相关业务规则和逻辑,并通过数据访问层访问数据库获得数据,然后按照相反的顺序依次 返回将数据显示在表示层。有的三层结构还加了Factory、 Mode... 阅读详情

最近听了微软讲师邵志东的讲座“深入解析ASP.NET架构”的视频讲座,我觉得对ASP.NET架构有一定的认识,现在对讲座做一点总结,以及发表我对ASP.NET架构相关知识的自身理解,如有不妥之处,希望各位同仁不吝指出!
一、ASP.NET工作原理:
首先通过一个图来了解一下ASP.NET工作原理,
  
                                     图一 ASP.NET工作原理
通过该图的顺序我们可以看到ASP.NET是如何工作的,可以看到客户端和服务器端是如何交互的。看到客户端是如何请求服务器,服务器接受到客户端请求后,是如何处理请求的,并将处理结果返回给客户端的。
需要指出的是图中的aspnet_isapi.dll是用来处理.aspx文件的,其实IIS服务器是只能识别.html文件的,当浏览器对服务器进行http请求时,IIS服务器识别到.aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处理,aspnet_isapi.dll将.aspx文件发送给.NET FrameWork中CLR(公共语言运行时)进行编译,编译后将HTML流返回给浏览器。
这在IIS服务器上是可以来配置的,配置中默认.aspx文件是由aspnet_isapi.dll来处理的,其实也可以去添加某种特定类型的文件由特定的可执行文件来处理,如:可以添加一个.apx文件来由aspnet_isapi.dll来处理。
具体配置如下图:

                                图二 IIS配置


趁此说一下IIS服务的一些知识:
IIS本事是不支持动态页面的,也就是说它仅仅支持静态html页面的内容,对于如.aspx,.php,.cs等,IIS并不会处理这些标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题。IIS有一种机制,叫做ISAPI的筛选器,它是一个标准组件(COM组件。)  ASP.NET服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如:*.aspx,*.php等),扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中(如*.aspx由aspnet_isapi.dll来处理)。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的HTML代码中,最后把完整的HTML返回到IIS,IIS再把内容发送给客户端。


通过下图可以看到更具体的ASP.NET页面的执行过程:


                                 图三 ASP.NET页面的执行过程

 


二、ASP.NET请求的处理过程:

上面我们已经了解了ASP.NET的工作原理,知道了客户端是如何和服务器端进行交互的。现在我们可以来看看服务器端到底是怎样来处理客户端的请求。
Web服务器提供了很多处理请求的功能,但是为了满足开发者的需求,开发者需要扩充或扩展Web服务器的功能,就是向Web服务器插入某些组件来增强Web服务器的功能,微软公司提供了ISAPI(Internet服务器API)。就比如说aspnet_isapi.dll可以来处理.aspx等文件,我们也可以开发组件(如xxx.dll)来处理某种类型的文件或者去做一些其他增强服务器能力的事情。

简单的说如何去增强Web服务器的能力呢,我们就可以去开发一些组件,开发组件需要一种技术叫ISAPI。
(ISAPI是一种重要的技术,它允许我们增强与ISAPI兼容的Web服务器的能力,其中IIS就是一种与ISAPI兼容的Web服务器。)

增强Web服务器的能力的组件的类型主要有两种:
1、ISAPI过滤器:客户端每次向服务器发出请求的时候,请求要经过过滤器。客户端不需要在请求中指定过滤器,只需要简单地把请求发送给Web服务器,接着Web服务器把请求传递给相关的过滤器。接下来过滤器可能修改请求,执行某些登录操作等。也就是说,客户端每次请求服务器时,必须要经过“过滤”,如需要检查用户名和密码,符合条件时才让通过请求,“检查用户名和密码”的过程就是ISAPI过滤器所要做的操作。过滤器可以有很多(web.config中指定,后面将讲到),并且请求都必须要经过所有的过滤器进行“过滤”。

2、ISAPI扩展:ISAPI扩展是使用Win32动态链接库(xxx.dll)来实现的,也可以把ISAPI扩展看做一个普通的应用程序。它的处理目标是http请求。也就是说Web服务器可以来处理http请求,但是你可以去扩展服务器,去自定义对http的请求,达到更好的效果。

基于上面的内容,我们可以将ASP.NET请求的处理过程总结如下:

ASP.NET请求处理过程是基于“管道模型”的,客户端向服务器发送http请求时,在模型中ASP.NET把http请求传递给管道中的所有模块(ISAPI过滤器),每个模块都接受http请求并且有完全控制权限,模块可以用任何自认为的方式(通过开发人员来开发,如校验用户名密码等)来处理请求。一旦请求经过了所有Http模块(如用户名、密码符合),就最终被Http处理程序(ISAPI扩展)处理,http处理程序对请求进行一些处理,并且结果将再次经过管道中的http模块。

                图四  管道模型


我自己举例来说吧,我建立了一个.apx文件,要求客户端访问该页面,并在客户端返回"我是apx文件,我是被“ISAPI过滤器”过滤过的,并被"ISAPI扩展"处理过的"。在访问页面时必须需要用户名和密码。
此时我就需要开发组件来扩充Web服务器,因为Web服务器没有校验指定的用户名和密码的能力也没有处理.apx文件的能力。我就需要开发“ISAPI过滤器”组件(用来校验用户名和密码)和ISAPI扩展组件(处理.apx文件)。

那我们怎么开发“ISAPI过滤器”组件和“ISAPI扩展”组件呢?

1、开发“ISAPI过滤器”
   HttpModule(Http模块)实现了ISAPI 过滤器的功能,是通过对IhttpModule接口的继承来处理。HttpModule是实现了System.Web.IhttpModule接口的.NET组件,这些组件通过在某些事件中注册自身,把自己插入到ASP.NET请求处理管道中(如上图中的Module1,Module2)。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。

   HttpModule的实现:
   1、编写一个类,实现IhttpModule接口,要添加引用System.Web
   2、实现Init方法,并且要注册需要的方法。如:AuthenticateRequest等
   3、实现注册的方法
   4、实现Dispose方法,如果需要手工为类做一些清除工作,可以添加Dispose方法的实现,但这不是必需的,通常可以
     不为Dispose方法添加任何代码
   5、在Web.config文件中,注册您编写的类。
  
   下面通过一个实例来实现HttpModule(具体见附件代码)

1、我编写了SecurityModules类实现IHttpModule接口
2、实现了Init方法,并且向Application对象注册事件处理程序(myAuthenticateRequest),当http请求执行到AuthenticateRequest(建立用户标   识时)时,就执行注册的方法myAuthenticateRequest
3、实现注册的方法myAuthenticateRequest,主要来校验userid和password
4、实现Dispose方法


 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Web;
 5using System.Security.Principal;
 6
 7namespace MyModule1
 8{
 9    public class SecurityModules : IHttpModule
10    {
11        public void Init(HttpApplication objApplication)
12        {
13            // 向Application 对象的事件AuthenticateRequest注册处理程序
14            objApplication.AuthenticateRequest += new EventHandler(this.myAuthenticateRequest);
15        }
16
17        private void myAuthenticateRequest(object objSender, EventArgs objEventArgs)
18        {
19            // 鉴别用户的凭证,并找出用户角色
20            HttpApplication objApp = (HttpApplication)objSender;
21            HttpContext objContext = (HttpContext)objApp.Context;
22            if ((objContext.Request["userid"] == null) && (objContext.Request["password"] == null))
23            {
24                objContext.Response.Write("用户名和密码不允许为空!");
25                objContext.Response.End();
26            }
27
28            string sUserId = "";
29            sUserId = objContext.Request["userid"].ToString();
30            string sPassword = "";
31            sPassword = objContext.Request["password"].ToString();
32            string[] strRoles;
33            strRoles = AuthenticateAndGetRoles(sUserId,sPassword);
34            if ((strRoles == null) || (strRoles.GetLength(0) == 0))
35            {
36                objContext.Response.Write("用户名和密码错误!");
37                objApp.CompleteRequest();//终止一个http请求
38            }
39            //GenericIdentity类表示具有指定名称和身份验证类型的用户
40            GenericIdentity objIdentity = new GenericIdentity(sUserId, "CustomAuthentication");
41            objContext.User = new GenericPrincipal(objIdentity,strRoles);
42        }
43
44        /**//// <summary>
45        /// 根据http请求的userid和password来验证和获取角色。
46        /// </summary>
47        private string[] AuthenticateAndGetRoles(string sUserId, string sPassword)
48        {
49            string[] strRoles = null;
50            if ((sUserId.Equals("xieex")) && (sPassword.Equals("111")))
51            {
52                strRoles = new String[1];
53                strRoles[0] = "Administrator";
54            }
55            else if ((sUserId.Equals("zhangsan")) && (sPassword.Equals("222")))
56            {
57                strRoles = new String[1];
58                strRoles[0] = "User";
59            }
60            return strRoles;
61        }
62
63        public void Dispose()
64        {
65
66        }
67    }
68}
5、新建一个项目,在Web.config文件中注册该类,当访问该项目的页面时,都要校验userid和password才能访问,并且在该项目的引用中添加MyModule1.dll

在Web.config文件中添加:


<!--HttpModule通过对HttpApplication对象的一系列事件的处理来对HTTP处理管道施加影响,这些事件在HttpModule的Init方法中进行注册包括BeginRequest等。-->
      <httpModules>
        <add name="myModule1" type="MyModule1.SecurityModules,MyModule1"/>
      </httpModules>
  <!--add将HttpModule类添加到应用程序-->
  <!--add格式:<add name="modulename(随便起)" type="命名空间。类名(该类继承IHttpModule接口), (assemblyname)dll文件名"/>  -->

  <!--remove从应用程序移除HttpModule类-->
  <!--remove格式<remove name="modulename">-->

  <!--clear从应用程序移除所有HttpModule映射-->
  <!--clear/-->
此时访问该项目中的页面时,就要校验用户名和密码了。

此时输入在URL上增加“?userid=xieex@password=111”时就可以进入页面了。

这样我们就开发完了ISAPI过滤器,注意过滤器可以有多个,只要在web.config中的httpModules节点中Add即可,它们都会起作用的不会覆盖的。

HttpModule通过对HttpAplication对象的一系列事件的处理来对HTTP处理管道施加影响,这些事件在HttpModule的Init方法中进行注册。具体的事件发生顺序如下:


                         图五  事件发生顺序

关于事件发生顺序可以参考例子:MultiHttpModule.csproj,这个例子也反应了过滤器可以有多个,只要在web.config中的httpModules节点中Add即可,它们都会起作用的不会覆盖的。

 

2、开发“ISAPI扩展”组件

还是拿下面的例子来说:
“我自己举例来说吧,我建立了一个.apx文件,要求客户端访问该页面,并在客户端返回"我是apx文件,我是被“ISAPI过滤器”过滤过的,并被"ISAPI扩展"处理过的"。在访问页面时必须需要用户名和密码。
此时我就需要开发组件来扩充Web服务器,因为Web服务器没有校验指定的用户名和密码的能力也没有处理.apx文件的能力。我就需要开发“ISAPI过滤器”组件(用来校验用户名和密码)和ISAPI扩展组件(处理.apx文件)。”
上面的ISAPI过滤器可以解决“校验用户名和密码”问题,下面我们利用ISAPI扩展来处理.apx文件。

HttpHandler实现了ISAPI扩展的功能,它处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现要继承IHttpHandler接口。
HTTP处理程序是实现了System.Web.IHttpHandler接口的.NET组件,任何实现了IHttpHandler接口的类都可以用于处理输入的HTTP请求。

HttpHandler的实现:
1、编写一个实现IHttpHandler接口的类;
2、在Web.config或machine.config文件中注册这个处理程序;
3、在Internet服务管理器把文件扩展(你想要的文件扩展名)映射到ASP.NET ISAPI扩展DLL(aspnet_isapi.dll)上。(该步也可不用做)

同样通过一个实例来实现HttpHandler(具体见附件代码)
1、编写了HandlerAPX类,该类继承了IHttpHandler接口,该类实现了ProcessRequest方法和IsReusable属性。注意要引用System.Web

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Web;
 5
 6namespace MyHandler
 7{
 8    public class HandlerAPX : IHttpHandler
 9    {
10        Implementation of IHttpHandler#region Implementation of IHttpHandler
11        /**//// <summary>
12        /// http处理程序的核心。我们调用这个方法来处理http请求。
13        /// </summary>
14        /// <param name="context"></param>
15        public void ProcessRequest(HttpContext context)
16        {
17            HttpResponse objResponse = context.Response;
18
19            objResponse.Write("<html><body><h1>你好!我是apx文件!");
20            objResponse.Write("</body></html>");
21        }
22
23        /**//// <summary>
24        /// 我们调用这个属性来决定http处理程序的实例是否可以用于处理相同其它类型的请求。
25        /// HTTP处理程序可以返回true或false来表明它们是否可以重复使用。
26        /// </summary>
27        public bool IsReusable
28        {
29            get
30            {
31                return true;
32            }
33        }
34        #endregion
35    }
36}
 

2、新建一个项目,在Web.config文件中注册该类,并且在该项目的引用中添加MyHandler.dll

在Web.config文件中添加:


      <httpHandlers>
        <add verb="*" path="*.apx"
               type="MyHandler.HandlerAPX,MyHandler" />
      </httpHandlers>
      <!--add格式:<add verb="*" path="要处理文件"  type="命名空间.类名(该类继承IHttpHandler接口), (assemblyname)dll文件名"/>          -->
说明当IIS识别到.apx文件时,就调用HandlerAPX类来处理。

http请求通过httpHandler来处理,本来系统就对其有默认处理,那和自定义的处理是如何协调的呢?看下图就可以明白,其实两者是选择其一的:


                                     图六  HttpHandler之间的关系

 

在“图五 事件发生顺序”中,我们看到HttpHandler建立后,此后Session就可以用了,下面来看看在HttpHandler中如何访问Session.
1、不能直接通过HttpContext访问
2、必须实现IRequiresSessionState接口
3、IRequriresSessionState接口指定目标HTTP处理程序接口具有对会话状态值的读写访问权限,这是一个标记接口,没
   有任何方法。

同样通过一个实例来实现在HttpHandler访问Session(具体见附件代码)
1、编写类HandlerSession,该类实现了接口IHttpHandler,IRequiresSessionState

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;

namespace MyHandlerSession
{
    public class HandlerSession : IHttpHandler,IRequiresSessionState
    {
        Implementation of IHttpHandler#region Implementation of IHttpHandler
        /**//// <summary>
        /// http处理程序的核心。我们调用这个方法来处理http请求。
        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            HttpResponse objResponse = context.Response;
            HttpRequest objRequest = context.Request;

            HttpSessionState objSession = context.Session;
          
            objResponse.Write("<html><body><h1>欢迎使用自定义的HttpHandler!<br>");
            objSession["test"] = "Session测试<br>";
            objResponse.Write("Session的值为:" + objSession["Test"].ToString());
        }

        /**//// <summary>
        /// 我们调用这个属性来决定http处理程序的实例是否可以用于处理相同其它类型的请求。
        /// HTTP处理程序可以返回true或false来表明它们是否可以重复使用。
        /// </summary>
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
        #endregion
    }
}
 

2、新建一个项目,在Web.config文件中注册该类,并且在该项目的引用中添加MyHandlerSession.dll

在Web.config文件中添加:

      <httpHandlers>
        <add verb="*" path="*.apx"
               type="MyHandler.HandlerAPX,MyHandler" />

        <add verb="*" path="HttpModule.aspx"
       type="MyHandlerSession.HandlerSession,MyHandlerSession" />


      </httpHandlers>
 

说明当IIS识别到HttpModule.aspx文件时,就调用HandlerSession类来处理。但是如果是.apx文件时,就会调用HandlerAPX类来处理。

也就是说注册多个HttpHandler会覆盖的,这与HttpModule是不一样的。如果是对同一类文件注册了不同的HttpHandler,会执行最后一个。

即:如果Web.config配置为

      <httpHandlers>
        <add verb="*" path="*.apx"
               type="MyHandler.HandlerAPX,MyHandler" />

        <add verb="*" path="*.apx"
       type="MyHandlerSession.HandlerSession,MyHandlerSession" />


      </httpHandlers>
说明当IIS识别到*.apx文件时,就调用HandlerSession类来处理,而不是调用HandlerAPX类来处理。


三、ASP.NET事件模型机制
1、ASP.NET之所以对于以前的ASP是一个革命性的巨变,在很大程度上是由于ASP.NET技术是一种基于事件驱动的全新技术。
2、在ASP.NET中时间的触发和处理是在客户端和服务端进行的。
3、ASP.NET中,如果频繁和服务器进行事件信息传递,会大大降低服务器的处理效率和性能,因而有些事件如OnMouseOver没有提供;
4、但提供了Change事件,为了提高效率它们被缓存在客户端,等到再一次事件信息被发送到服务器端时一同发送回去。
如文本框的change事件,下拉框的change事件,
如两个控件的change事件中:

 

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Response.Write("DropDownList控件选择改变!<br>");
        }

        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {
            Response.Write("TextBox文本改变!<br>");
        }
如果控件本身的AutoPostBack设置为false(默认是false)时,文本框和下拉框发生改变时,不会执行change事件的,而是将事件信息缓存在客户端,当在页面上点击一个服务器端控件Button,

        protected void Button1_Click(object sender, System.EventArgs e)
        {
           Response.Write("点击了Button按钮!<br>");
        }
此时将客户端中的事件信息发送到服务器端,执行所有的事件,返回到客户端的信息为:
TextBox文本改变!
DropDownList控件选择改变!
点击了Button按钮!

 

掌握ASP.NET三层架构:增删改查操作实例分析 三层架构是一种常见的软件设计模式,它将应用程序分为三个逻辑层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data Access Layer)。每层都有其特定的功能和职责,彼此之间通过定义良好的接口进行交互。表现层:位于用户界面与应用系统之间,负责展示数据和接收用户的输入,是用户与系统交互的前端部分。业务逻辑层:位于表现层和数据访问层之间,是应用系统的核心部分,负责处理业务逻辑。数据访问层。 阅读详情

相关推荐

ASP.NET框架简要图解

此文档是本人在学习ASP.NET框架时总结的,希望对同道中人有所帮助。

ASP.NET 管道模型简析

你知道http请求是如何被我们应用程序处理? 你是否好奇在你使用的web框架中一个请求是如何到达你所指定的控制器? 那么好奇的你和好奇的我一起来学习探究吧! 什么是管道模型        首先有没有小伙伴思考过在.NET中WebForm、Mvc、Webapi 之类的框架做应用程序的开发部署之后,用户在浏览器或是利用HttpClient 输入URL地址请求之后是怎么到达我们的应用程序呢?中间又经

有梦想的鱼的博客 657

群晖存储空间损毁不等于硬盘损坏:排查与修复实战

NAS存储系统中,物理硬盘、存储池与文件系统空间构成层级结构,任何一层出现异常都可能在管理界面汇总为“存储空间损毁”。事实上,异常断电、卷未正常挂载等软性问题也会触发这一红色告警,而存储池和硬盘SMART状态往往完全正常。理解这一机制后,用户无需急于格式化重建,通过事件日志审查、SSH确认挂载状态,再借助btrfs scrub等文件系统自愈工具,即可在数据不丢失的前提下恢复存储空间正常。该方案对家庭及小型办公环境中的群晖NAS尤其适用,特别是在供电不稳或硬盘休眠频繁的场景下,能有效规避误判风险。本文完整记录

weixin_30843121的博客 260

asp.net 三层架构

今天学习了asp.net 标准的三层架构,觉得与平时的设计思路类似,但是有一些借鉴的地方。 首先,看程序的框架图: 上图是我自己项目中,其实没有什么框架的东西,主要是将通用的类放在common文件夹中,实体类中实现属性的设置,get,set等以及数据库的sql语句的编写,例如: public string Url { get { return _...

weixin_33916256的博客 142

LTE 中设置voice/data centric的差异

1. 什么是voice centric和data centric Voice centric和data centric的差别在于以语音为中心还是以数据为中心。这里的以某某为中心可不是说说而已。举个栗子,UE一般搜网注册都会按照LUG(LTE->UMTS->GSM)或者LC(LTE->CDMA)的顺序进行,如果UE(未开通VOLTE)注册到LTE时,网络提示不支持语音,比如CSFB。UE就必须disable LTE后回到GU或者CDMA,否则留在不能语音的网络下,UE就会...

alimingh的博客 5234

基于Spring Boot在线远程考试系统的设计与实现

结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。目前的信息时代,对信息的管理趋于高效化,便捷化,这也是计算机大力普及所带来的便利,此程序软件在设备选用上,依靠的是比较大众的电脑设备,对电脑的配置没有过多要求,一般学校的计算机机房的电脑都可以满足程序开发需求,另外,开发出此款程序,让信息处理变得高效率,其所带来的高效益是远超程序开发的低成本的,因此程序开发的资金投入是可以忽略不计的。

ITbiyesheji的博客 1214

有关ASP.NET MVC框架的一些基础知识

长时间以来,MVC是一种为众多开发人员所熟悉的标准设计模式。本文介绍有关ASP.NET MVC框架的一些基础知识,针对ASP.NET 3.5。 MVC(模型—视图—控制器)结构模式把一个应用程序拆分成三个主要组件:模型、视图和控制器。在创建基于MVC框架的Web应用程序时,你可以把ASP.NET MVC框架作为ASP.NET Web表单模式方案的一种重要候选。较之于基于Web表单的应用程序,AS...

weixin_30319153的博客 394

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

算法大师! 524

告别表格管理客户:低代码搭建CRM系统实战指南

客户关系管理(CRM)的核心在于通过结构化数据模型与自动化流程,解决表格管理带来的数据冗余、权限失控与跟进遗漏问题。其原理是借助低代码平台的多表关联、行级权限和自动化引擎,构建以客户为中心的数据闭环。技术价值在于将被动记录转为主动驱动,提升销售过程量与转化率。典型应用场景包括中小销售团队的线索分配、商机推进与回款提醒。本文围绕客户表、商机表、跟进记录表的设计,以及五个必配自动化流程与三张核心报表,提供了一套可快速落地的低成本方案。

weixin_33910137的博客 268

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linuxschedule()函数的原理和调用的时机 schedule()函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令) 多级反馈队列调度 时间片轮转 使用nice命令 聊内存分配,进程内存分配,段页式存

大模型大数据攻城狮的专栏 4163

【硬件】LT3763中文手册

1)精确控制输入和输出电流;2) 3000:1真彩色PWM™调光;3) ±1.5%电压调节精度;4) ±6%电流调节精度;5)6V至60 V输入电压范围;6)宽输出范围最高可达55V;7)<2µA关断电流;8)用于负载电流热控制的控制引脚;9)输入和输出电流监控和限制;10)开路、短路和C/10故障检测;11)适用于LED应用的PWM驱动器输出;12)热增强型28引脚FE封装。

qq_39200110的博客 489

asp.net mvc如何通过原理分析优化大文件传输架构?

永远不要在需求评审时说"这个简单"信创浏览器是检验真爱的新标准10G文件上传前记得清理C盘QQ群红包可能是新型庞氏骗局(但我还是想要)(真诚求工作推荐,会修打印机,能装Windows 7那种)

2501_90646763的博客 1022

Arduino开发实例-EMG 肌肉信号传感器

在医学研究中,测量肌肉的活动、收缩和扩张非常重要。 EMG 肌肉传感器测量肌肉活动并产生信号以显示扩张和收缩量。 因此,输出取决于所选肌肉的活动量。 3 绿色、红色和黄色电极连接到模块,用于传输来自肌肉运动的电信号。

视觉与物联智能 1693

转载 ASP.NET架构分析

一、ASP.NET工作原理: 首先通过一个图来了解一下ASP.NET工作原理, 图一 ASP.NET工作原理 通过该图的顺序我们可以看到ASP.NET是如何工作的,可以看到客户端和服务器端是如何交互的。看到客户端是如何请求服务器,服务器接受到客户端请求后,是如何处理请求的,并将处理结果返回给客户端的。 需要...

weixin_30684743的博客 98

CAPL控制程控电源

汽车电子测试过程中,除了实车测试,还有台架测试,在进行台架测试时,都需要通过电源来模拟汽车电瓶给ECU供电,如果要进一步进行比较高效的压力测试或自动化测试,就需要用到程控电源,所以本章主要介绍CAPL是如何来控制程控电源的。

测试领域技术分享 4387

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ASP.NET三层架构的分析

BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Layer ASP.NET的三层架构(DAL,BLL,UI) 图形表示三层结构.其中web即为USL层 web –> bll –> dal| |...

weixin_30462049的博客 115

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

微软Asp.Net架构与项目团队管理建设模型分析

Microsoft Visual Studio 2008 RTM版本已经发布好久了,最近的项目准备用最新的微软技术Microsoft Visual Studio 2008 RTM +Microsoft SQL Server Compact 3.5+Microsoft SQL Server 2005模型来实现;好的Team应该有学习新技术的探 索精神, 一个好的管理者,作用和能力不

687

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

(转)ASP.NET架构分析

最近听了微软讲师邵志东的讲座“深入解析ASP.NET架构”的视频讲座,我觉得对ASP.NET架构有一定的认识,现在对讲座做一点总结,以及发表我对ASP.NET架构相关知识的自身理解,如有不妥之处,希望各位同仁不吝指出! 一、ASP.NET工作原理: 首先通过一个图来了解一下ASP.NET工作原理, 图一 ...

weixin_30878361的博客 69

北京上市公司招聘.net架构师及开发人员

 架构分析师:(1人)要求:6年以上工作经验,3年以上架构师经验,精通UML,精通设计模式,具有非常强的面向对象功力,深厚的数据库设计功底,有一定的业务分析能力,有一定的文档书写能力,熟悉.net开发,熟悉ASP.NET,熟悉SQLServer,较强的沟通能力,有团队精神,有一定的管理经验,能适应敏捷开发,了解msf,xp等开发过程,对新技术敏感,有较强的学习能力,拥有产品开发经验,拥有千

方明的专栏 2125
上一篇: asp.net状态管理
下一篇: ASP.NET架构分析
jackeyabc
博客等级 码龄20年 71粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值