asp.net修行入门讨论
突然想起来大学的一个专业课老师,教C,C#,他的教学特点就是只教简单知识,现在想想真有道理,假如上来就教我们枯燥难以理解的高深知识,我们会恐惧编程的,极大地打击学习的兴趣,所以他C语言的指针从来没教过我们(我是考软考及工作中自学的指针,感觉还不错)。
言归正传:
《HTML》
html是标签解释性语言,浏览器的页面是不是绘图文档?把标签控件元素绘制到这个文档图面上?这个绘制过程是不是用浏览器引擎(一直不太理解引擎在软件中的意思)完成的(还是有游览器内核的功能完成的)?绘图是不是由图层叠加N层(像ps制作图,winform拖一个控件就是一个图层,微观想象成图层很厚)而来?
标准的html是遵守xhtml约定的。
《CSS》
浏览器在绘制渲染(不太理解渲染与绘制的区别)标签元素控件的时候,是不是除了绘制元素本身,再根据(感觉用查找,寻找更准确)样式来进一步绘制?
主要的三种样式:样式找元素(这个范围是N(N>0));元素找样式(.class选择器);一对一的寻找(ID选择器);
样式的位置:元素内联<head中<单独link文件(目的也是为了松耦合)
《JavaScript》
浏览器能执行js程序是不是用了一个解释一行代码就可以执行一个代码的工具(这点我也不懂)?js是解释性弱语言(直接按照正常逻辑思维理解),没有数据类型的概念,好像不是申明一个数据类型,而是直接要一个内存空间(只是个人理解)?这个内存空间可以动态的存各种“类型”的数据?可以模拟面向对象的各种类型,js中的闭包好像调用一个方法,返回结果又是一个方法,这要明白,C语言中的方法名表示一个内存地址,这样这个内存地址一直使用中,就可以保存调用方法的局部变量了。我记得C#中的委托,有个target对象,这个对象就可以取到委托处理函数寄宿的对象。
js引用的方式:元素加载后<script>标签中<页面head标签中<单独的js文件中。(同样是体现隔离松耦合或者是通用提取集中管理)
用var申明一种类型(其实没有类型的概念,如果去掉var相当于页面变量);数组是一种特殊的字典。var arr=[1,2,3,4]; var dic={"name":wwj,"age":30};这是简写初始化对象。
字符串用单引号或双引号都可以。
《DOM》
DOM是把页面上的元素构造成一个树状对象。用JS脚本来操作DOM对象。页面上标签控件的事件是不是也走的消息队列模式?像Winform一样,窗口事件触发后把消息给操作系统,操作系统再把消息给应用程序的消息队列,然后调用相应的处理函数。DOM好像是api类库,js可以调用其中的对象(类库是不是在浏览器进程中或者类库文件在哪里?)
dom中的常用对象是Window对象(我理解成入口对象),dom最常用的操作就是选择器与过滤器,因为要在dom这个对象树上查找要操作的对象。
document.getElementById("元素ID")
事件的处理函数是谁,及事件调用那个方法执行,这是两种写法。
《JQuery》
因为各个浏览器操作dom的方法不是完全相同,所以JQuery把这些差异封装起来提供统一的访问方式,内部应该是把判断不同浏览器的操作封装在JQuery方法内部。
链式编程是建立在隐式迭代的基础上。在此匿名方法表现的淋漓尽致(因为方法只是临时用一次,没必要起名称)
因为需要对界面元素进行操作,所以选择器,过滤器是获取界面元素对象的方式。
《WebForm》
先探讨原理:http通过socket通信,端与端(IPEndPoint)的通信,客户端把数据发到服务器端,IIS等web服务器来监听请求,完成端与端通信。
asp.net是不是一个插件框架?我们的web应用程序跑在这个微软写的插件框架上(比如大型的桌面程序就是采用插件框架osgi或者自己实现)?凡是框架都有很多约束规则
HttpRuntime有个PR方法来处理请求,所以asp.net首先会把请求封装成HttpWorkerRequest。然后继续封装成HttpContext对象,这种对象属于逐步填充对象,它把处理过程中所有需要的参数都组合到一个对象里。参数有了,接下来HttpRuntime创建处理请求对象HttpApplication。这个对象采用处理管道的方法把处理函数抛出来。(具体是采用反射的方法创建IHttpModule来注册我们的事件处理函数【插件框架基本都会用到反射】)而真正处理请求的是在处理管道第八个事件PostMapRequestHandler触发的时候创建(获取)IHttpHandler处理程序。在第11个事件PreRequestHandlerExecute之后,HttpApplication执行处理程序的PR方法。
asp.net都是围绕请求,处理,响应的模型运行的。
只有form中带name的value及cookie才会提交到服务器,当然对webform来说还有viewstate。
webform中的页面aspx是一种模板,(把模板理解成里面有很多占位符,.net程序处理后替换占位符,然后渲染回浏览器)。
浏览器只认识html标记语言,所以.net会把服务器标签渲染成html标签,原生的html当成字符串原样发回浏览器。
《Ajax》
目的是整个页面不刷新,只是局部刷新。对IE来说,JS在浏览器端new一个XMLHttpRequest(如同C#异步new一个WebClient发送请求)向处理程序发请求,然后回调我们写的处理函数。
《MVC》
asp.net这个框架是怎么把webform请求的URL换成请求控制器的方法?(包括框架把请求URL对应成WebForm的页面,这些都是asp.net这个框架所完成的功能)
由于aspx耦合度太高,太臃肿,MVC这个扩展框架把它分成控制器和视图。一个控制器里可以有N个action方法,这样也避免了html+js+ajax+一般处理程序模式中太多的处理程序的问题。
以上只是个人理解,后续会在工作中继续深入理解。
本人目前处于离职状态,有合适的服务器端开发工作,请帮忙介绍一下,先谢谢了。
asp.net修行入门讨论的更多相关文章
- ASP.NET 5 入门 (2) – 自定义配置
ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext ...
- ASP.NET + MVC5 入门完整教程八 -—-- 一个完整的应用程序(上)
https://blog.csdn.net/qq_21419015/article/details/80509513 SportsStore 1.开始创建Visual Studio 解决方案和项目这里 ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- ASP.NET Aries 入门开发教程4:查询区的下拉配置
背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
- 5、ASP.NET MVC入门到精通——NHibernate代码映射
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...
- 6、ASP.NET MVC入门到精通——ASP.Net的两种开发方式
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 目前,ASP.NET中两种主流的开发方式是:ASP.NET Webform和ASP.NET MVC.从下图可以看到ASP.NET WebFo ...
随机推荐
- Hadoop集群搭建(非HA)
1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...
- C#开发移动应用系列(1.环境搭建)
前言 是时候蹭一波热度了..咳咳..我什么都没说.. 其实也是有感而发,昨天看到Jesse写的博文(是时候开始用C#快速开发移动应用了),才幡然醒悟 , 原来我们的Xamarin已经如此的成熟了... ...
- CSS3学习系列之选择器(二)
first-child选择器和last-child选择器 first-child指定第一个元素.last-child指定最后一个子元素. 例如: <!DOCTYPE html> <h ...
- JavaScript中对事件简单的理解(2)
事件(event) event对象 (1)什么是event对象? Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态.事件通常与函数结合使用,函数不会 ...
- Nmap绕过防火墙&脚本的使用
Nmap是用于端口扫描,服务检测,甚至是漏洞扫描等多种功能的强大工具.Nmap从入门到高级覆盖了许多基础的概念和命令,在这篇文章的第二部分,我将提及Nmap一些高级的技术. 防火墙和入侵检测系统(ID ...
- Oracle ORA-39726压缩表删除字段处理方法
今天在往一个压缩表增加一个字段可以增加成功,但在删除的时候报了个ORA-39726 unsupported add/drop column operation on compressed tables ...
- Bash中的数学计算
一.整数计算 1.整数 $delare -i num$num=5+5$echo $num10 $num="5 + 8"$echo $num13注意:算式中如果有空格,需要用引号引起 ...
- C# 禁止ALT+F4(钩子)
1. Windows Forms中禁用窗体的关闭按钮 添加必要的命名空间: using System.Runtime.InteropServices; 添加必要的常数和API函数的引用 priv ...
- noip模拟 市长选举
题目描述 利贝尔王国的卢安市因为前段时间的市长被捕事件,导致没有市长管理城市.他们需要一个新的市长. 竞选的人有两位.一位是诺曼,因支持旅游业而受到支持者的拥护.一位是波尔多斯,代表的是卢安的传统行业 ...
- Python os模块实例之遍历目录及子目录指定扩展名的文件
需求:在该目录下有很多子目录(如下图,截图了部分),现要从该目录和所有子目录下找到所有扩展名为.meta的文件,并获取文件中第二行guid的值(': '后面的),然后将所有guid的值输出到另一文件中 ...