51
AllenLSY allenlsy.com

ASP.Net MVC2 简介

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: ASP.Net MVC2 简介

AllenLSY allenlsy.com

Page 2: ASP.Net MVC2 简介

知道Visual studio 是做什么的 对网站开发有一点了解 对MVC架构有个大概的了解(CSC207) 了解一点Design Pattern的东西会更好

(CSC207) html, javascript有一定了解(CSC302) 编程语言的理论知识有一定了解(CSC301)

Presenter
Presentation Notes
网站开发:起码要知道有什么网站开发语言,比如asp, jsp, php之类的
Page 3: ASP.Net MVC2 简介

1. C# 语言的发展和特性 2. ASP.net WebForm 3. ASP.net MVC2 4. 安全 5. ASP.net网站扩建和优化

Page 4: ASP.Net MVC2 简介

C# 3.0 C# 4.0

Presenter
Presentation Notes
如果对C#不熟悉的话,你就把它想象成Java吧,然后就能发现Java语言的很多弱点。Java语言本身挺不上进的
Page 5: ASP.Net MVC2 简介

2000,为.net framework量身定做 .net framework是2002年随着Visual Studio .NET

出的第一版 与Java相比 运算符重载 代理 强类型和弱类型都支持

Presenter
Presentation Notes
运算符重载 Java中,对于Vector这样的类,只能用index(int)来取元素 C#用[]。索引器
Page 6: ASP.Net MVC2 简介

新特性 Extension Methods Lambda Expression LINQ

I know how it works because I know why it works

Presenter
Presentation Notes
C# 3.0一直在想办法表达式化
Page 7: ASP.Net MVC2 简介

如果要为类添加一些函数,怎么办? Partial class(Java没有这功能)

如果要为基础类添加一些函数,怎么办? C# 1.0, 2.0: Static methods C# 3.0: Extension Methods

ExtensionMethods.cs 输出: YSLnellA

Page 8: ASP.Net MVC2 简介

如何将一个List排序? public virtual void Sort( IComparer comparer ) C# 1.0 如何实现?实现接口 C# 2.0 如何实现?Anonymous Methods C# 3.0 如何实现?Lambda Expression

lambda.cs

Presenter
Presentation Notes
IComparer: Strategy pattern,定义算法家族
Page 9: ASP.Net MVC2 简介

如何从一个数组中找符合某些条件的元素? 比如我想找最便宜的关于LINQ的书

linq.cs

Page 10: ASP.Net MVC2 简介

C# 2.0: Imperative programming 命令式编程 C# 3.0: Declarative Programming 声明式编

Presenter
Presentation Notes
C# 2.0 操作数据库的方式还是和J2EE一样,使用ADO.net先跟数据库建立连接,加入查询字符串,返回结果再关闭连接的方式。LINQ方便太多
Page 11: ASP.Net MVC2 简介

ASP.net 和 ASP.net MVC 的比较 ASP.net 特色功能

Page 12: ASP.Net MVC2 简介

ASP.net WebForm > ASP.net MVC 很多技术细节不一样,后面详述

Presenter
Presentation Notes
asp.net 2002年 mvc 2009年3月第一版,今年1月第三版
Page 13: ASP.Net MVC2 简介

M: Model, V: View, P: Presenter

Page 14: ASP.Net MVC2 简介
Presenter
Presentation Notes
Controller -> Model: 因为要做业务逻辑 View -> Model: 要显示数据
Page 15: ASP.Net MVC2 简介
Presenter
Presentation Notes
View层完全不知道Model Presenter知道View层肯定有什么,由Presenter告诉View去显示什么东西
Page 16: ASP.Net MVC2 简介
Page 17: ASP.Net MVC2 简介
Presenter
Presentation Notes
5分钟 Account\Login.aspx Login.aspx.cs 注意Page_Load()中的 _presenter.Init() LoginPresenter中, 主要是IAccountService
Page 18: ASP.Net MVC2 简介

为什么MVP好一些,微软还是要再做一个MVC框架呢?

Presenter
Presentation Notes
在windows应用程序中,每个进程,或者控件,的状态时很容易记录的,直接放在内存就行。 在Web程序中,因为http协议是无状态的。所谓无状态就是说,一次http请求完了之后,请求时附带的信息不会被记录下来。如果下一次请求要用到上一次请求的信息,反正http协议中是不提供任何方法把它记录下来了。这导致webform的通信量很大,因为要保存页面所有控件的当前运行状态。
Page 19: ASP.Net MVC2 简介

Security 安全机制 Membership 成员关系 Caching 缓存

Presenter
Presentation Notes
2分钟
Page 20: ASP.Net MVC2 简介

表单认证 Windows认证

Presenter
Presentation Notes
安全机制指的是asp.net提供一种限制用户访问权限的机制。哪些页面在什么情况下对谁可以访问就由安全机制来实现。 表单认证 需要自己编写代码,自己创建数据库。但是至于创建Cookie之类的事情,asp.net会处理这些细节 在配置文件中可以设置一个登陆页面地址。当发现用户没有登陆时会自动跳转到这个登陆页面。 Windows认证 IIS要求每个用户作为Windows用户来登录。这种方式适用于公司的内部网络,对于公共大网站非常不适合。
Page 21: ASP.Net MVC2 简介

自动创建了管理用户的数据库 提供了安全控件,比如登陆控件,找回密

码控件,登录状态控件等等 提供角色管理

Presenter
Presentation Notes
成员管理是辅助表单认证的一个非常重要的功能。 - 自动创建了管理用户的数据库 - 提供了安全控件,比如登陆控件,找回密码控件,登录状态控件等等 - 提供角色管理
Page 22: ASP.Net MVC2 简介
Page 23: ASP.Net MVC2 简介

用于缓存从服务器中检索出来的内容,以提高网站的访问性能。

memcached也实现了相关功能

Presenter
Presentation Notes
缓存用于存储数据库中检索出来的信息,可以提高网站的性能。asp.net的缓存系统会自动在缓存数据库检索信息以及服务器内存大小之间找到一个平衡那个。
Page 24: ASP.Net MVC2 简介

ASP.net 和 ASP.net MVC 的比较 ASP.net 特色功能

Page 25: ASP.Net MVC2 简介

Model的功能 保证数据存取的完整和正确

建立数据库 使用LINQ to SQL,或者Entity framework,

再加上自己的代码,建立Model层 加入各种限制标签,用于数据验证之类的

Page 26: ASP.Net MVC2 简介

View的功能 接受要显示的数据,并把它显示出来

Page 27: ASP.Net MVC2 简介

Controller的功能 保证业务逻辑正确

Page 28: ASP.Net MVC2 简介
Presenter
Presentation Notes
介绍一些文件目录结构
Page 29: ASP.Net MVC2 简介

ASP.net 与 MVC的最大不同 Routing vs URLRewriting ▪ Routing更强大 ▪ 匹配规则 ▪ 约束

Page 30: ASP.Net MVC2 简介

到RouteTable去匹配,找到Controller和Action

检查是否能够调用这个Action get/post ? authenticated ? authorized ?

Page 31: ASP.Net MVC2 简介
Page 32: ASP.Net MVC2 简介

Tweeter 用户可以登录,发微博。没登陆的用户必须先登录 用户先登录,然后进入微博页面。在微博页面能看

到自己的所有微博 Database - Users, Tweets

URL请求 /:显示首页 /User:显示用户首页,里面包含tweet界面,

tweets list

Presenter
Presentation Notes
Model: 建立数据库,设置主键 View: 修改模板页,User\Index Controller: User\Index User\Tweet 强类型,IEnumerable< >
Page 33: ASP.Net MVC2 简介

常见攻击方式 XSS

Page 34: ASP.Net MVC2 简介

用户输入的html标签要过滤掉 不要对任何人不加检查的使用html输入。

比如白名单,因为其身份容易被盗用

Page 35: ASP.Net MVC2 简介

SQL注入攻击 Cookie窃取 分布式拒绝服务攻击 DDOS 跨站脚本攻击 XSS

Page 36: ASP.Net MVC2 简介

跨站脚本攻击有两个类型 被动攻击 ▪ 用户输入中有恶意脚本,将这一信息保存到服务器数

据库。别的用户看着段信息时就被攻击了

主动攻击 ▪ 直接把信息推到用户端

Page 37: ASP.Net MVC2 简介

No blog! Sorry :<

Page 38: ASP.Net MVC2 简介

<a href=“No Blog! Sorry :<“>Rob Conery</a>

“><iframe src=“http://haha.juvenilelamepranks.example.com” height=“400” width=“500”/>

Page 39: ASP.Net MVC2 简介

<a href=““> <iframe src=“http://haha.juvenilelamepranks.example.com” height=“400” width=“500”/> “>Rob Conery</a>

Page 40: ASP.Net MVC2 简介

“></a><script src=“…”></script><a href=“

Page 41: ASP.Net MVC2 简介

Database Optimization Web farming Caching SEO Email

Presenter
Presentation Notes
这部分知识只是提一提,没办法讲清楚的
Page 42: ASP.Net MVC2 简介

扩建之前可能用到的工具 依赖注入工具 Dependency injection,也叫做控

制反转 Inversion of Control ▪ StructureMap

日志工具 ▪ Log4net

测试工具 ▪ NUnit, RhinoMocks

Presenter
Presentation Notes
依赖注入: 类之间不再通过隐式依赖,而是通过调用方的构造函数显示传递依赖关系。如果依赖关系通过接口来定义,我们在做单元测试的时候,就可以灵活的传入虚假的依赖实现。
Page 43: ASP.Net MVC2 简介

小型网站扩建到中型网站时需要做的工作 Database Optimization Web farming Caching SEO Email

Page 44: ASP.Net MVC2 简介

Flagging rather than deleting Indexing

Presenter
Presentation Notes
删除数据是数据库中最昂贵的操作之一,因为涉及到多表之间的联系,而且删除过程中数据库处于锁定状态,操作也需要log。 合理的方式是,定时检索出表中有效数据,创建新表,删除原表,再给新表改名 Partitionining: 只有当感觉数据库跑的变慢了的时候才需要这样做 partition之后,LINQ to SQL 可能会工作出错
Page 45: ASP.Net MVC2 简介
Presenter
Presentation Notes
每台子服务器的配置一摸一样,用户请求会被自动分配到最闲的一台服务器 Asp.net使用web farming需要每台服务器都安装Windows Server Linux下使用HaProxy
Page 46: ASP.Net MVC2 简介

把常用的东西放在服务器的RAM中,而不是数据库

Memcached支持asp.net

Page 47: ASP.Net MVC2 简介

缓存和Indexing的不足 SQL Server有全文索引技术 Lucene.net

Presenter
Presentation Notes
缓存的一大问题:容易出现过时的数据 Indexing不一定总能index到人们想搜索的东西,效率也有限
Page 48: ASP.Net MVC2 简介

从网站发送邮件很慢,对于每封邮件都需要链接smtp服务器,并且等待。

建立一套独立的系统,系统中实现了一个Queue。系统会在网站较为空闲时发这封邮件。

Page 49: ASP.Net MVC2 简介

C# 部分 CSharp 4 Nutshell

ASP.net 部分 Wrox. Professional ASP.NET.3.5.SP1 ASP.NET.3.5.Social Networking Beginning ASP.net 3.5 in C# 2008 from novice to

professional ASP.net MVC 部分 Professional ASP NET MVC2 Web开发新体验ASP.NET.3.5.MVC架构与实战 Programming.Microsoft.ASP.NET.MVC

Page 50: ASP.Net MVC2 简介

软件工程思想 部分 设计模式:可复用面向对象软件的基础 Agile Software Development Code Complete 重构:改善既有代码的设计

Page 51: ASP.Net MVC2 简介