-
查看全部
-
全部笔记:
start up :项目运行配置 管理依赖注入 中间间(configure-》Middelware) 以及处理请求通道(由IApplicationBuilder类创 建)
Program.cs-》
CreateDefaultDuilder(args)->1.加载主机和应用得配置信息
2.配置日志记录
3.设置web服务器
4.设置asp.net core的应用形式
Asp.net MVC routing系统
1.无需文件真正保存在硬盘上
2.访问文件无需后缀
3.URL结构与服务器文件夹结构无关
4.url将会被映射给Controller控制器来处理请求,不会映射给静态文件
http请求交给服务器-》controller来进行活动 之后再有controller响应http请求
URL:{域名}/Controller/Action
具体信息又分段路由segments(自定义路由)来处理
URL:{域名}/Controller/Action/{id}->action 函数的参数来进行页面处理获得数据输出
如何定义URL和Controller之间的映射规则?
默认路由系统。 app.UseMvcWithDefaultRoute();
{域名}/{Controller=Home}/{Action=index}/{Value?}
自定义默认路由:
使用中间件:
app.UseMvc(routes=>routes.MapRoute(name:"default",template:"{controller=Home}/{Action=index}/{Value?}"))
==app.UseMvcWithDefaultRoute();
在ASP.Net Mvc有两种路由模式
1.传统路由(使用路由表) Concentional routing
2.特性注释路由 Attribute routing
Conventional Routing
1.URl 被分解为Controller和action两个部分
2.使用路由表(routing table )来设置路由规则
例如:rotes.MapRoute(name:"default",templete:"{controller=Home}/{action=index}")
Atrtibute Routing:
1.使用简单,不再需要路由表,只要controller和action代码中直接使用
attribute来定义路由
Example:
[Route("[controller]/[action]")]
public class HomeController:Controller
{
//get :/<controller>/
public Stirng Index()
{
return "Hello From Home";
}
}
路由中间件:帮助我们解析URL,并映射给相对应得controller和action
//
Attribute Routing :
可以帮助我们用AOP 面向面向切面得形式可以为每一个controller甚至action
单独定义路由。Route("[controller]/[index]")
//
app.UseMvc(传入lamda表达式来设定自定义路由)
什么是MVC:
1.软件工程的架构方式
2.模型,视图和控制器
3.分离业务操作,数据显示,逻辑控制
视图:用户交互界面 展示输入,不操作数据,接受用户数据
模型:MVC架构得核心,表示业务模型或者数据模型,程序的业务逻辑。
如:算法的实现,数据的管理,输出对象的封装等等
控制器:接受用户得输入,并调用模型和视图去完成用户的请求处理
本身不处理数据
三层架构:
UI层 BLL 业务逻辑层,处理核心业务以及数据封装
DAL 表示数据访问
三层架构面向结构编程,而三个层级之间的完全解耦,完全可替代
MVC得每个部分都是紧密结合的,它的核心并不是解耦,而是重用。
MVC的优点:
耦合性低
可复用性高
可维护性高
缺点:
定义不明确,学习曲线陡
结构复杂
数据流动效率低
----控制器的工作原理--
Action 函数:
处理请求
返回特殊乐星IActionResult
默认http请求方式为Get
可接受url中的参数
Action:Post
如何处理POST请求:
[HttpPost]
public ActionResult Edit(int id,IFormCollection collection)
{
try
{
return RedirectionToAction(nameof(Index));
}
catch
{
return View();
}
}
什么是模型?
1.其实是一个类 映射数据库,对象化数据。
2.获取数据,更新数据,传递数据,保存数据等
3.处理业务逻辑,被视为BLL层
4.View Model与视图数据绑定
不过,定义不明确,经验很重要
可以是一个简单的poco类 也可以是一复杂的充血性领域模型(rich Domain Model)
模型的业务逻辑:
函数方法等,不会映射数据库,但会对数据进行更新。
举例:
模型属性:
public int Id{get;set;}
public string FirstName{get;set;}
public string UserName{get;set;}
public string ShortDescription{get;set;}
public decimal Phone{get;set;}
public string Email{get;set;}
public bool IsEmailConfirm{get;set;}
业务逻辑:
public void ConfirmEmail(string token)
{
if(isTokenValid)
{
this.IsEmailConfirm=true;//save to database
}
}
数据持久化模式:repository仓库模式
对象化数据,不用管数据是怎么保存的
使用仓库接口
举例:
public interface INoodleRespositoy
{
IEnumerable<Noodle> GetNoodles();
Noodle GetNoodleById(int ID);
}
使用模型和数据仓库的好处:
1.业务逻辑与数据模型紧密耦合,减少分层,降低代码数量
2.完全剥离数据库业务,程序员可以更专注于实现业务逻辑
3.面向对象编程,数据转化为对象,更符合程序员的思考方式
视图模型 ViewModel
ViewModel中的数据会与UI界面双向绑定,一旦ViewModel
中的数据发生任何变化,结果都会立即反应在UI界面中。
特点:
1.依然是模型
2.用视图模型替代数据上下文
3.poco(plain old class object),不包含方法的简单类
MVVM:model-view-view Model
为什么要使用ViewModel
1.减少页面逻辑的复杂度
2.处理页面的数据逻辑,管理页面状态
3.各种组件也可以相对解耦,既有利于团队协作与日后维护
管理前端框架工具:
项目名称(右击)-》client-site Library-》libman
Asp.Net Core Identity
1.Password Hashing
2.Tokenization
3.TwoFacts Authentication
4.Authentication
5.Authorization
6.External Login 第三方验证
查看全部 -
app.UseMvc(routes =>
{
routes.MapRoute(
name: "defalut",
template:"{controller=Home}/{action=Index}/{id?}"
==app.UseMvcWithDefaultRoute();
}
使用中间件或者映射默认路由都可以
查看全部 -
。net core数据验证
查看全部 -
admin管理员路由限制
查看全部 -
阿房宫遗址位于广东省东南部沿海的城市之一?查看全部
-
wwwroot文件夹存放前端静态文件;如js、css、图片、视频
content,images,lib
2.iis只能运行于windows平台
Propertier-.json文件中配置端口信息
查看全部 -
1-2 asp.net core
1.历史:2016asp.net core 1.0,2018asp.net core 2.2
2.跨平台:windows,macos,linux,unix
3.性能:轻量级,适合微服务架构,容器化,不向后兼容(1.0升2.0要重构,.net framwork换成.net core要重写)
4.c#:.net framework的旗舰语言,语言集成查询linq,异步构造await async,支持函数式语
查看全部 -
1-1知识点
基础知识:.net core / 环境设置
asp mvc :mvc架构 / 路由系统 / razor
entity framework:仓库模式 / code first / 映射数据 / crud
身份认证:认证 / 授权
查看全部 -
IEnumerable<T> 是 System.Collections.Generic 命名空间中的集合的基接口,如 List<T>、Dictionary<TKey,TValue>和 Stack<T> 以及其他泛型集合,如 ObservableCollection<T> 和 ConcurrentStack<T>。 可以通过使用
foreach
语句来枚举实现 IEnumerable<T> 的集合。查看全部 -
ps:oop面向对象编程
aop面向切面编程 可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
面向切面编程是面向对象编程的一个强大的补充
通过切面可以把分散在应用各处的行为放入可重用的模块中
通过注解显示的声明在什么地方应用该行为
有效减少冗余代码,让我们的类关注自身的主要功能
动态代理模式和静态代理模式
通过使用@Aspect注解和简单的配置,可以很简单的在Spring中装配advice和pointcut
作者:Jason2Young
链接:https://www.jianshu.com/p/be6cb39dbeb7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。查看全部 -
公用导航栏设置
查看全部 -
ViewModel组合数据
查看全部 -
数据仓库逐个注入
查看全部 -
依赖注入
仓库注册services.AddTransient<INoodleRepository,MockNoodleResposity>();//每次发起请求后创建一个全新的仓库,请求结束后自动注销这个仓库
services.AddSingleton;//系统启动有且仅创建一个仓库,系统每次请求使用同一个仓库实例
services.AddScoped;//将一系列请求或操作整合在一个事务里,这个事务有且仅创建一个实例,事务结束后会自动注销这个实例
查看全部
举报