C#学习之ASP.NET概述

2023-10-26

ASP.NET的应用:网络应用程序开发

学习ASP.NET的优势:
  1. 易学
  2. 设计人员和后台代码人员专注于自己的工作(原因:ASP.NET将HTML页面代码和脚本代码分离)
  3. 高效地创建大规模的网络应用程序

背景:自从互联网的出现,各种网络开发技术层出不穷。软件行业中,比较著名的技术有Java阵营的Java Web和.NET阵营的ASP.NET。相比于Java Web,ASP.NET的结构不紊乱,具有良好的组织结构。

动态网页

动态网页是针对于静态网页而言的,动态网页是ASP.NET的实现基础。使用Java技术实现动态网页可以通过JSP或者Servlet。

动态网页的优势:提供用户和网络的交互功能。

动态网页的特点:有后台。通过前台用户输入的信息,后台处理代码操作数据库,再返回给前台用户结果。

在这里之所以提及动态网页,是因为后面学习的ASP.NET网页的运行原理和动态网页相似,但是两者并不是完全相同,ASP.NET网页基于.NET Framework框架编译执行。

.NET Framework框架

.NET Framework主要分为两大部分,即公共语言运行时和基础类库。这两个部分让ASP.NET网站在编译模式下执行,而不是像ASP那样执行。.NET Framework框架类似于Java框架,但是.NET Framework的编译执行技术加快了网页浏览的速度。

为什么基于.NET Framework框架的网站比Java Web网站或者ASP网站快呢?

因为ASP.NET网站在.NET Framework中被编译成一种中间语言(Intermediate Language,简称IL)

.NET Framework中的中间语言IL的优势:使用中间语言的执行模式,就可以使用各种.NET平台支持的语言开发ASP.NET网站。

Web服务机制

为什么使用Web服务机制?

只有提供Web服务机制,才能使用各种Web服务器进行访问。

最常见的Web服务平台是微软公司的互联网信息服务(Internet Information System,IIS)和Apache。因为IIS和ASP.NET都是微软进行开发的,所以IIS和ASP.NET配合地非常默契。Apache平台主要为Java提供Web平台,熟悉Java Web开发的一定对Tomcat比较熟悉。Apache其实对ASP.NET也进行了支持,但是选择ASP.NET开发网站的开发人员大部分还是选择IIS做他们的Web服务。

Web服务必须遵循一定的网页交互协议。如比较常见的HTTP(超文本传输协议)和FTP协议(文件交换协议)。只有遵循了HTTP协议,才能使用Web浏览器对Web服务进行访问。

Web浏览器通过HTTP协议与Web服务交互,我们选择IIS作为Web服务,IIS又与ASP.NET应用交互。

如何评价Web服务的好坏?

  1. 标准的调用方式(标准的调用方式可以减少调用错误的次数,从而提高服务器的运行效率)
  2. 简单的协议
  3. 兼容各种平台
  4. 多用户连接时,保持良好、稳定的性能
  5. 具有很强的安全性能

因为IIS和ASP.NET直接交互,所以,用ASP.NET技术开发的Web服务程序是ASP.NET网站稳定运行的保证。

ASP.NET程序结构

目前大多数ASP.NET网站都使用三层B/S架构开发,使用这种开发主要分为3个部分。

  1. 表现层(将业务逻辑层处理的结果显示出来的程序代码)
  2. 业务逻辑层(实现各种业务需求的程序代码)
  3. 数据逻辑层(与数据库交互的程序代码)

以查询为例,用户通过表现层输入查询条件,传输到业务逻辑层统计、分析,再传输到数据操作层取出数据,返回到业务逻辑层,再返回到表现层,显示给用户。

ASP.NET与ASP

ASP.NET的前身是ASP,即Active Server Page,动态服务器网页。ASP.NET相比于ASP,是全面的升级。升级的主要内容是拥有了.NET Framework的加持。

ASP.NET相比于ASP,有更多的优势,具体有以下表现:

  1. 编译执行的效率更高(.NET Framework需要编译成中间语言)
  2. 多种语言加持(.NET Framework需要编译成中间语言)
  3. 丰富的类库和组件(.NET Framework提供了更多的类库和组件)
  4. 页面代码和处理代码分离(三层架构的设计思想)

ASP.NET另一方面,也兼容ASP,所以,可以在ASP.NET网站中,可以随意编写ASP的代码。、

ASP.NET与JSP

JSP在业界受到广泛支持,所以,业界有许多支持的框架,如Java开发工程师熟悉的Structs、SpringMVC等。但使用ASP.NET开发的框架只有.NET Framework。

但ASP.NET相比于JSP,有以下几种特点:

  1. 单一的支持架构
  2. 更快的运行速度。JSP的解释性和Servlet的响应式相比于.NET Framework的编译执行方式和HTTP对象响应模式,速度比较慢。
  3. 较强的数据库对象。ASP.NET的ADO.NET比JDBC具有更强大的功能和可拓展性
  4. 广泛的语言支持
  5. 丰富的类库
  6. 支持服务器集群
  7. 优秀的编程IDE加持
ASP.NET相关的技术

脚本语言、XML语言和一门.NET编程语言、LINQ(语言集成查询,Language INtegrated Query)

常见面试题

  1. ASP.NET和ASP的异同点?
    • 相同点:都是网络技术,而不是开发语言
    • 不同点:ASP.NET是基于.NET框架的网络应用技术,而ASP仅仅是包含VBScript和一些微软ActiveX插件的早期网络技术。ASP.NET可以通过Virtual Studio提供的开发工具和控件,可以快速开发各种类型的网络应用程序
  2. 简述.NET的结构和工作原理?
    • 结构:.NET封装了常见的类库、提供了一个公共语言运行时引擎(类似于Java中的JDK提供的类库和JVM运行环境)
    • 工作原理:.NET支持语言编译成中间语言IL,IL通过JIT编译成机器码由机器执行
  3. ASP.NET开发需要了解哪些网络技术?
    • HTML界面标签组件(界面显示)
    • JavaScript脚本(实现界面动态效果)
环境配置

环境:

  1. Web服务:IIS
  2. 开发IDE:Virtual Studio
  3. 框架环境:.NET Framework

使用Virtual Studio创建第一个网站。

常见面试题

  1. IIS解决不能运行ASP.NET的方法?
  2. 概括SQL Server、IIS和ASP.NET的安全问题?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#学习之ASP.NET概述 的相关文章

  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 枚举扩展方法

    在vs2008中 是否可以编写适用于任何枚举的扩展方法 我知道您可以针对特定枚举编写扩展方法 但我希望能够使用单个扩展方法对每个枚举进行处理 这可能吗 是的 只需针对基础进行编码Enum类型 例如 public static void So
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 物联网LoRa系列-32:LoRaWAN无线智能水表如何进行水量数据采集?脉冲采集、双干簧管、磁性元件、光电转换、霍尔元件

    目录 1 无线远传智能水表概述 2 常用智能水表的发展与类型 3 智能水表数据的采集的基本原理 3 1 光电转换型原理 3 2 双干簧管数据采集的基本原理 3 3 霍尔元件型原理 4 干簧管脉冲检测的基本原理 4 1 干簧管概述 干簧管是一
  • 一种比较省内存的稀疏矩阵Python存储方案

    原文 http www pythontab com html 2014 pythonhexinbiancheng 0522 788 html 推荐系统中经常需要处理类似user id item id rating这样的数据 其实就是数学里面
  • js的数据交互

    JSP 几个内置对象 out request response session 一 application 1 介绍 application 他是代表的整个项目的全局对象 application 所有项目下面的页面共享 所有的浏览器用户 访
  • 【问题解决】VSCode ESLint 保存格式化时不生效

    问题描述 VSCode 中安装了 Prettier 和 ESLint 插件 在项目中使用了 eslintrc js 文件规范项目代码 但是保存代码时格式化并不是按该文件的配置而是按 Prettier 的配置 问题解决 修改 Settings
  • 力扣的题库突然打不开的解决办法

    问题 力扣的题目打开很慢 然后题目那是灰色 解决方案 换个浏览器 清楚浏览器缓存 如果上述方法都不可以 检查一下自己有没有安装 脚本 如果有的话可以停用他 在浏览器右上角 有管理扩展的地方 停用一下油猴这个扩展 我下面的是已经删除之后的图
  • batocera 完整包_Batocera Plus 可能是现如今最强最全最好用的模拟器集成系统!

    Btocera PLUS系统开机界面 相信玩Batocera的圈子里面Batocera Plus 绝对是青出于蓝而胜于蓝的超级强劲改版 我们来细说为什么Batocera Plus如何受众人爱戴 甚至超过了原版的Batocera 自batoc
  • libgcrypt-1.10.2编程-计算摘要

    文章目录 使用libgcrypt计算摘要 一 计算少量数据摘要 二 计算大量数据摘要 在main函数中调用 使用libgcrypt计算摘要 libgcrypt编程计算摘要的方式有2种 一种可用来计算小数据的摘要 如字符串 一种可用来计算大数
  • edl后变暗后的解决方法

    由于edl类似于ssao 会变暗 这时候调整亮度时 可以类似于hdr 高动态范围转LDR 只是不色调映射就可以了 rgb各分量同时提高同一个比例即可 这样既可以变亮且不溢出 也可以不改变颜色 当然 可能会出现类似于深绿变浅绿的现象 但是视觉
  • 基于CH552G主控的开源九键小键盘(资料齐全)

    Content 1 前言 2 CH55X Arduino平台环境搭建 2 1 常规安装 2 2 HFS挂载本地服务器安装 3 例程使用 3 1 工程下载及编译 3 2 程序烧录 1 前言 芯片选型 CH552G 本文主要解决Arduino下
  • JSZIP+StreamSaver下载大文件打包遇到的问题

    背景 公司项目为了节约服务器硬盘 需要从微信企业微盘下载大批量文件 然后 进行客户端打包 问题 根据StreamSaver的代码演示例子 是通过指定Blob类型进行流下载更新 我尝试了这个方法 发现一旦Blob类型大于1G的时候 Chrom
  • DC-DC与电感

    作者 AirCity 2020 2 16 Aircity007 sina com 本文所有权归作者Aircity所有 DC DC即直流 直流转换器 输入是直流电压 输出也是直流电压 DC DC有升压型boost 降压型buck和升降压型bu
  • 基于SSM的海外代购系统设计与实现

    摘 要 近年来 我国的互联网方面发展十分的迅速 短短20年 信息时代就已经展现在了我们的面前 电商 是信息时代中出现的一大产物 电商的发展在很大程度上来说的的确确的方便了我们日常的部分的生活购物行为 从1997年电商的萌芽开始发展直至今日
  • 类的公有类型(public)和私有类型(private)

    数据成员可以为公有 函数成员也可以为私有 如果数据成员为公有 那么在对象的作用域内的任何函数都可以通过对象名使用该数据成员 如果函数成员为公有 那么该函数成员只能被公有的函数通过对象名调用
  • python二元函数图像在线绘制_“绘图,让科学生动起来”:Python-matplotlib绘图(多元函数拟合-3D绘图专题)...

    作者简介 85后一名分析化学工作者及科学爱好者 深爱着北京的老北京人 爱好运动 科学 旅行 个人微信公众号 科学是什么东东 欢迎关注 搭建python matplotlib绘图平台的四个要素是什么 它们是 python软件主体 pip库管理
  • ReentrantLock 源码分析

    ReentrantLock简单使用demo如下 Lock lock new ReentrantLock lock lock try 业务逻辑 finally lock unlock 注 获取的锁代码要放到try块之外 防止获得锁代码异常 抛
  • Chrome开发者工具详解

    Chrome开发者工具详解 1 Elements Console Sources面板 Chrome开发者工具面板 面板上包含了Elements面板 Console面板 Sources面板 Network面板 Timeline面板 Profi
  • adb MacBook Pro上使用adb命令:Command not found或者每次使用前要source .bash_profile文件

    前言 adb MacBook Pro上使用adb命令报错 Command not found 或者每次使用前要source bash profile文件 一 解决问题1 在根路径配置 bash profile文件 如果没有 touch ba
  • python-面向对象基础-类属性&实例属性-构造&析构

    一 类的定义 class 类名 类体 class Person object pass 二 类中成员的定义 class Person object 属性 name tom age 18 height 180 方法 def eat self
  • C++堆和栈的区别和联系

    2017年09月16日 10 39 33 阅读数 1605 参考博客地址 http blog csdn net hairetz article details 4141043 http blog csdn net handsomesunsh
  • C#学习之ASP.NET概述

    ASP NET的应用 网络应用程序开发 学习ASP NET的优势 易学 设计人员和后台代码人员专注于自己的工作 原因 ASP NET将HTML页面代码和脚本代码分离 高效地创建大规模的网络应用程序 背景 自从互联网的出现 各种网络开发技术层