2018.7.30
一.ASP.Net 两种开发模式:
1.ASP.Net WebForm的开发模式
(1)处理流程
在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的URL,那么我们的WebForm程序
会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,
其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。
综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。
(2)开发方式
• 服务器端控件
• 一般处理程序+Html静态页+Ajax
• 一般处理程序+Html模板引擎
2. ASP.Net MVC的开发模式
(1)处理流程
在ASP.Net MVC中,客户端所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要
从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问
的http://www.aspnetmvc.com/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action。
(2)显著特点
• 不会取代WebForm
• 底层跟WebForm都是一样的,只是管道上不同的处理而已
二.解读MVC
Model:主要存储或处理数据的组件,实现业务逻辑对实体类相应数据库操作
View: 用户接口组件,主要将Model中的数据展示给用户,aspx和ascx文件被用来处理视图
Controller:处理用户交互,从Model中获取数据并传给指定的View
三.
1.MVC作为架构模式:
作为架构模式时,View的职责就是负责展示数据,而Controller则负责获取View传递来的数据,然后调用业务逻辑层处理
完成的数据传递给View进行展示。而Model则处理业务逻辑,并把结果返回给Controller。从传统三层架构上来看,View和
Controller都属于UI层,而Model则横跨BLL与DAL层。
=====================================================================================================================================
C#中 override 和 overload 的区别
override:重写 , 在子类中重写父类中的方法
overload:重载 , 在同一个类或父子关系类中皆可重载某个方法
1.override: 父类:public virtual string ToString()
{
return "a";
}
子类:public override string ToString()
{
return "b";
}
2.overload: 同一类中或父子关系类中皆可.
public string ToString()
{
return "a";
}
public string ToString(int id)
{
return id.ToString();
}
重写(override)是用于重写基类的虚方法,这样在派生类中提供一个新的方法;
重载(overload)是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制
Override 是在继承的时候,加上Override关键字,在使用这个子类的这个函数的时候就覆盖掉父类(或超类)的函数了
例如: Base里有方法void A(int a)
Base:Derived 觉得A写得不好,则可以重写这个方法:
override void A(int a)即可以覆盖掉原来的方法
本质区别:重写(Override)的两个函数的函数特征相同,
重载(Overload)的两个函数的函数名虽然相同,但函数特征不同
函数特征包括函数名、参数的类型和个数。
1.重写(override)
使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现
由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。
不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。也就是说,
??***用 override 修饰符重写的基类中的方法必须是 virtual, abstract 或 override 方法。****
2.重载(overload)
当类包含两个名称相同但签名不同的方法时发生方法重载
==================================================================================================
C#中 抽象方法 和 虚方法 的区别
1.抽象方法(用关键字 abstract):
只能声明在抽象类中,方法修饰符不能使用private,virtual,static.
例:
Public abstract class People //声明一个抽象类People
{
public abstract void study(); //抽象方法(stydy)只能定义在抽象类(People)中
}
Public class Student:People //基类继承父类People抽象类
{
public override void study() //重写抽象类的抽象方法
{
Console.WriteLine("最爱龙猫~~")
}
}
Public class Program
{
static void Main(string[] args)
{
Student t=new Student(); //实例化派生类(即子类)
People p=t ; //使用派生类对象t 实例化 抽象类p
####以上等价于 People p=Student t();####
p.study(); //使用抽象类对象调用抽象类中的抽象方法study
}
}
1)没有方法体,子类必须重写方法体!!,因此抽象方法可以看成是一个没有方法体的虚方法
2)抽象类中的抽象方法必须被子类重写。