这些概念都是我在学习中曾经迷糊和困扰的,现在写出来供一些像我当初一样的新手参考。有时候概念明确了可以少走一点弯路。
1.和数据库互交其实就是进程间的通信,比较常用的是TCP/IP和命名管道。进程间的互交有运行在同一台机器上的互交,和运行在不同机器上的互交。
2.数据库实例是操作数据库的一种手段,简单来说数据库并不是用记事本打开就能修改的,要通过数据库实例来进行相应的查询和修改等操作。数据库和文件系统的重要区别之一就是事务。
3.数据库的索引和B+树。很少见超过3层的B+树。分区有时性能未必就好。分区(比如横向分割)有时候会导致因搜索的字段并非分区条件,而引起的在多个分区搜索数据,造成多次IO读取。不如不分区靠B+树索引反而能有更好的性能。比如说以pk作为分区的依据,如果select pk的话,通过搜索分区的确可以起到性能提高的效果。但是当搜索是其他字段的时候,就有可能产生 搜索多个分区的结果。比如原来搜索产生3次IO,现在分5个分区,可能产生15次IO。
4.IIS和ASP.NET的关系。在IIS通过ISAPI扩展是可以用C语言来写网页的,只要你觉得爽的话。但往往一个网络应用程序的性能瓶颈不在于这一层,因此用托管代码来产生请求的返回结果所带来的“开发效率”的提升相比用非托管代码的“程序运行效率”更有价值。引出非托管代码调用托管代码的好处。再次谈进程间互相通信,以及.NET中的appdomain和序列化反序列化来通过应用程序的边界。
5.Asp.net就是通过事件的机制把从请求到返回的过程一步步拆分并公开出来。这一步步可以称为“管道“。顺便再谈下Sturts2中的过滤器和拦截器,反射。
6.Asp.net MVC和Asp.net webform的异同。由理念上的区分引出的处理程序查找的区分(router或是通过文件名的扩展来查找)。