16.1 内置对于ASP.NET AJAX的支持 ,js感知,
微软Silverlight是一个跨浏览器、跨平台的.NET实现技术,适用于在下一代Web应用构建支持各种媒体并进而支持更为丰富的用户交互
17.访问限制
Internal 同一程序集内部的类来访问。。 internal 的基类成员,只能被同一个程序集中的派生类来访问
protected 继承时子类可以对基类有完全访问权
private 只许同一个类中的成员访问
18.抽象类,接口区别
相似:都包含有派生类继承的成员,都不能实例化
不同:派生类只能继承一个基类(抽象类),但可以使用多个接口
抽象类有抽象成员(无代码体,须在派生类中实现,否刚派生类也必须抽象,)protected abstrat string getShoutSound();
,非抽象成员(有代码体,虚拟,要在派生类中实现)public virtual double Area() { return x * y; }
接口,须在使用接口的类上实现,没有方法体,
接口方法 public ,抽象类,可以为private,protected,internal
19.泛型定义
public class Stack<T>{} 里面把原有的类型,比如object换成T
调用 Stack<int> stack=new Stack<int>();
20.传值
20.1 视图状态(viewState) 经过哈希计算和压缩,针对unicode实现进行编码,安全性高于隐藏域,存较大值,会影响页显示和发送速度,通过查看源码可篡改隐藏域信息,导致潜在安全性问题
隐藏域(HiddenField),不可见,经过哈希计算和压缩,针对unicode实现进行编码,安全性高于隐藏域,可被篡改,不支持复杂数据类型(只提供字符串值域存放),视图状态内置序列化,可存复杂数据类型,
如果数据量过大,某些代理和防火墙将阻止对包含这些数据页的访问
Cookie,少量的数据,存储在客户端文件系统的文本文件中,或存在客户端浏览器会话的内存中,,cookie包含特定于站点的信息,这些信息是随页输出一起由服务器发送到客户端的,
cookie可以是临时的(过期时间,日期)和永久的
大多数浏览器支持4096字节的cookie,可关闭支持,可被篡改,虽然cookie只被将它们发送到客户羰的域访问 ,用户可操作其它计算机上的cookie
查询字符串,?id=xxx,在URL的结尾附加的信息。
最大长度2083字符,风险:可看到
Application
存:Application["Name"]="张三"; 取 string struserName=Application["Name"];
同时也锁 Application.Lock();Application.Unlock();
该变量仅对该应用程序正在其中运行特定进程而言是全局的,每一应用程序进程可能具有不同的值,
Session 每个用户对网站的一次访问 ,超时后结束自自会话。
数据持久性,可经受IIS重新启动或辅助进程重启,而不丢失会话数据,因为这些数据存在另一进程空间中,会话进程数据可跨多进程保持。无需cookie支持
存储在web.config中。
<SessionState mode="InProc" cookieless="false" timeout="20">
mode设为Inproc(默认值)表明,会话状态要由Asp.Net存储到内存中,不用Cookie来传替会话ID
如果某页不需要访问session对象,可设该页预编译指令EnableSessionState=false;
进程外保存会话状态1.mode=StateServer,将会话数据存储到单独的内存缓冲区中,再由单独一台机器上运行的windows服务来控制这个缓冲区[aspnet_state.exe]
2.mode=SqlServer 将会话数据存储到数据库中[SapState表]
21.Server.ClearError()
22.日志记录工具 Log4net.dll Enterprise Library Logging Application Block
企业库是一组可重用的应用程序块(Application Block),用来解决企业级应用开发过程中所面临的共性问题
23.XML
XMLDocument.可读写,将文档一次载入内存,类似dataset
XMLReader只读只进,类似datareader
XMLTextReader类从xmlReader类继承,使用Encodeing属性提供编码信息,并可用以创建XPathDocument(只读,随机读取).或xmldocument.对象
24.异步处理
大量数据插入,更新,异步可以不用等所有更新完毕才操作,
System.data.SqlClient
其它提供程序也可以通过实现异步API实现异步处理
IAsyncResult接口包含可异步操作的方法的类实现
Begin前缀的方法传入输入参数,End前缀的方法返回输出参数和返回值
IAsyncResult ar=command.BeginExecuteReader();
//do some thing
SqlDataReader dr=command.EndExecuteReader();
25.大批量数据操作
可利用SqlBulkCopy类快速写入大批数据。
可写入DataRow数组,DataTable,DataReader1
26.事物处理方法
Com+事务(分布式事物)-用于多数据库,
用强名称标记程序集(assembly)确保程序集包含唯一密钥对
在COM+ catalog中注册包含你的类的程序集
27.并发处理[数据库]
独占锁,不接受其它任务对它的操作
共享锁。其它用户无法修改,如在select时会加共享锁
更新锁,不被其它修改,可读取,
行锁RowLock,
页锁PageLock
表锁 HOLDLOCK共享锁,可读不可更新删除
tablockx排它锁,其它事物不读取表,更新,删除
nolock可以忽略锁,可读到未提交读的数据
updlock读取表时使用更新锁,将锁保留到语句或事务结束
28.临时表
select identity(int ,1,1) FID,* into #temp from 表
29.重构,清理,扩展,维护,新那家
30.SOA 4特征明确边界,自治服务,服务之间交互的消息格式有正规的xml schema定义,而不是class,服务兼容由策略决定
soa反模式:crud型接口 loosey Goosey
31.web service优缺点
优:跨平台程序最高的分布式应用程序开发技术,
使用xml/soap做为message表达方式,
使用HTTP做为交换Message的channel
使用WSE陆续提供新一代的ws支持
缺点:代码难写,分布式技术很难互通
32.AOP,ORMaping MVC
AOP:而向方面的编程 ,对横切关注点或横切典型的职责分界线的行为进行模块化,将影响多个类的行为封装到可重用的模块中
ORMaping 对象关系映射
MVC 模式-视图-控制器
spring.net,NHibernate,微软企业库 LINQ,ASP.net MVC
33.提升安全性方式
网络防御[Spoofed packets]{port blocking,过滤,加密}
主机防御[Buffer overflows,illicit paths]{修正程序更新,IIS强化,ACLs,CAS,Logging,Lease,privilege,Account,management}
应用程序防御[SQL injection,XSS,input tampering.]{validation,hashing,encryption,secrets,management,cookie,session,error,handling}
数据库防御[sql injection,password cracking]{停用通用协议,停用服务,强化安全性}
应用程序防御
不要信任使用者输入[验证输入,避免跨站攻击,使用htmlEncode编码]
避免forms验证的弱点
使用ssl/tls//?保护账号密码,存放加密过的密码或密码hashesg来增加安全性,隐藏域可以篡改
cookies安全
使用ssl限制cookies避免cookie窃取,缩短cookie寿命,减缓replay attacks的机会,猜测sessionid、偷取sessioid cookie,冒用受害人的身份
使用安全方式存取数据库,
不用sa,查询功能使用只有select权限的账号,使用ssl/tls或IPSec加密数据联接
防止注入式攻击
使用stored procedures 或参数化的commands并且设定只允许execute权限在stored procedure上,用or 1=1 攻击
异步处理
不要揭露太多信息在错误讯息网页中,注意mode=off,debug=true ,使用<customerror>来显示自订错误讯息