dotnet知识点回顾

合集下载

DotNET性能优化方面的总结

DotNET性能优化方面的总结

1.C#语言方面1.1 垃圾回收垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。

1.1.1 避免不必要的对象创建由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。

以下列举一些常见的情形。

1.1.1.1 避免循环创建对象★如果对象并不会随每次循环而改变状态,那么在循环中反复创建对象将带来性能损耗。

高效的做法是将对象提到循环外面创建。

1.1.1.2 在需要逻辑分支中创建对象如果对象只在某些逻辑分支中才被用到,那么应只在该逻辑分支中创建对象。

1.1.1.3 使用常量避免创建对象程序中不应出现如new Decimal(0) 之类的代码,这会导致小对象频繁创建及回收,正确的做法是使用Decimal.Zero常量。

我们有设计自己的类时,也可以学习这个设计手法,应用到类似的场景中。

1.1.1.4 使用StringBuilder做字符串连接1.1.2 不要使用空析构函数★如果类包含析构函数,由创建对象时会在Finalize 队列中添加对象的引用,以保证当对象无法可达时,仍然可以调用到Fi nalize 方法。

垃圾回收器在运行期间,会启动一个低优先级的线程处理该队列。

相比之下,没有析构函数的对象就没有这些消耗。

如果析构函数为空,这个消耗就毫无意义,只会导致性能降低!因此,不要使用空的析构函数。

在实际情况中,许多曾在析构函数中包含处理代码,但后来因为种种原因被注释掉或者删除掉了,只留下一个空壳,此时应注意把析构函数本身注释掉或删除掉。

1.1.3实现IDisposable 接口垃圾回收事实上只支持托管内在的回收,对于其他的非托管资源,例如Window GDI 句柄或数据库连接,在析构函数中释放这些资源有很大问题。

原因是垃圾回收依赖于内在紧张的情况,虽然数据库连接可能已濒临耗尽,但如果内存还很充足的话,垃圾回收是不会运行的。

C#的IDisposable 接口是一种显式释放资源的机制。

DOTNET 牛 人 应 该 知 道 些 什 么

DOTNET 牛 人 应 该 知 道 些 什 么

.NET牛人应该知道些什么一个真正优秀的(及WinForm)开发人员应该不仅仅会拖放控件到设计器中,也应该掌握更多的东西。

一个优秀的赛车比赛选手很了解他自己的坐驾,他知道哪些可以做?哪些不能做?如果你从来没有深入,你肯定不会知道所有问题的答案。

如果你是一个独立顾问,你可能从来没有遇到过这些概念。

是否全面理解这些问题也许与你是不是一个优秀的开发者没有关系,但在遇到问题时它的确可以帮你节省不少时间。

.NET牛人应该知道些什么?任何一个使用.NET的人•描述线程与进程的区别?线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。

一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。

而同一进程中的不同线程共享代码和数据空间。

用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

•什么是Windows服务,它的生命周期与标准的EXE程序有什么不同Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows 服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。

它支持三种方式:1)自动方式 2)手动方式3)禁用。

自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。

另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。

DotNetBar第三方控件使用笔记知识分享

DotNetBar第三方控件使用笔记知识分享

DotNet第三方控件使用笔记一、ButtonX控件可实现如下效果:(1)在ButtonX上,是否显示图像,取决于“images”属性。

(2)在“ButtomItem”控件中,是否“只是显示图像”,“只是文本”,还是“图像和文本都显示”,取决于。

二、BalloonTip控件(气泡提示)在添加了BalloonTip控件后,其他各个控件会出现对应的“……上的BalloonText”和“……上的BalloonCaption”属性,通过修改这两个属性可设置鼠标移动到控件时弹出的气泡提示的标题和内容,也可通过代码设置这个两个属性,如:balloonTip1.SetBalloonCaption(txtUserName,"提示");balloonTip1.SetBalloonT ext(txtUserName,"输入你的大名吧");balloonTip1.SetBalloonCaption(txtUserPw,"提示;balloonTip1.SetBalloonT ext(txtUserPw,"大名输完了就是你的密码咯");")1. 使用效果1)效果一:在鼠标在控件上面停留时,出现提示信息,如下图:2)效果二:当控件获得焦点时,也出现如上图一样的信息。

2. 实现上述两种效果的途径1) 将BalloonTip控件的“ShowBalloonOnFacus”属性设置为“False”即可实现效果一。

3. 设置BalloonTip显示的内容2) 将“ShowBalloonOnFacus”属性设置为“True”,即可实现效果二。

1) 在欲设置该属性的控件的“BalloonTipOnFocus上的BalloonCaption”和“BalloonTipOnHover上的BalloonCaption”属性中,分别设置这两种效果的“标题”属性;2) 在“BalloonTipOnFocus上的BalloonT ext”和在“BalloonTipOnHover上的BalloonT ext”属性中,分别设置这两种效果的“显示内容”的属性。

.net 各版本知识点

.net 各版本知识点

.net 各版本知识点.NET 是一个开发平台,它提供了一系列的工具和服务,帮助开发者快速构建应用程序。

以下是 .NET 的几个主要版本及其知识点: Framework:• 1.0版本:这是.NET Framework的初始版本,于2002年发布。

它引入了托管代码、垃圾回收、异常处理、Common Language Runtime (CLR) 等重要概念。

• 1.1版本:在2003年发布,它对1.0版本进行了许多改进,包括对移动设备的支持、对XML Web Services的改进等。

• 2.0版本:于2005年发布,这个版本引入了大量新功能和改进,例如泛型、匿名类型、局部变量类型推断等。

• 3.0版本:这是.NET Framework的第一个Longhorn版本,虽然它在Windows Vista 发布之前被推迟了,但它最终在2006年发布。

这个版本引入了WPF(Windows Presentation Foundation)、WCF(Windows Communication Foundation)和WF(Windows Workflow Foundation)等新框架。

• 3.5版本:于2008年发布,这个版本通过.NET Framework 3.5 Service Pack 1升级至。

它引入了LINQ(Language Integrated Query)和其他许多新功能。

• 4.0版本:在2010年发布,这个版本引入了并行编程、动态语言运行时和改进的垃圾回收器等新功能。

• 4.5/4.6版本:这些版本在2012年和2014年发布,引入了更多新功能和改进,例如支持异步/等待、改进的并发性和性能等。

Core:•.NET Core是跨平台的.NET开发框架,它基于.NET Framework的设计,但可以运行在Windows、Linux和macOS等操作系统上。

它包括.NET Core运行时和.NET Core SDK。

.net 的知识点

.net 的知识点

.net 的知识点
.NET框架是Microsoft的软件开发框架。

它提供了一个受控的编程环境,可以在基于Windows的操作系统上开发,安装和执行软件。

尽管术语写成“.NET”,它不是首字母缩略词。

它的发音为“dot net”,有时写成dotnet 或dot-net。

主要设计特点是:
互操作性:这允许.NET 开发的程序访问.NET 外部开发的程序中的功能。

通用运行时引擎:也称为公共语言运行库,它允许在.NET 中开发的程序在内存使用,异常处理和安全性方面表现出共同的行为。

语言独立性:通用语言基础结构规范(CLI)允许在以不同语言开发的两个程序之间交换数据类型。

基类库:大多数常用函数的代码库- 程序员使用它来避免重复重写代码。

易于部署:有一些工具可以确保安装程序的简便性,而不会干扰以前安装的应用程序。

安全性:使用.NET 开发的程序基于通用安全模型。

.NET 是微软最重要的开发战略的核心,也是该组织与Java 的竞争。

它是Windows 平台上开发的核心,该术语的用法取决于上下文。

例如,通常简单地谈论“.NET 开发人员”作为在Microsoft 开发环境中工作的程序员。

另一方面,在编写代码时,开发人员会引用正在使用的Framework 的特定版本- 2005 年推出的.NET 2.0 与2010 年发布的.NET 4.0 大不相同。

DotNet英文专业词汇

DotNet英文专业词汇

DotNet英文专业词汇DotNet面向对象基础名词opp object-oriented programing 面向对象编程C# C-Sharp 一种编程语言名称namespace 命名空间project 工程solution 解决方案class 类interface 接口web service web服务control 控件console 控制台面向对象object 对象instance 实例method 方法inheritance 继承polymorphy 多态encapsulation 封装property 属性overloading 重载deride 继承于overload 覆盖DotNet程序基础debug 调试compile 编译reference 引用main 主函数string 字符串void 无返回值类型abstract 抽象的base 代表基类bool 布尔类型break 中断switch 条件开关case 条件开关匹配catch 捕获错误do 循环的开始标示double 双精度浮点数else 否则enum 枚举event 事件expicit 显式extern 外部的false 假的,不成立的finally 最后float 单精度浮点数for 循环foreach 循环goto 跳转if 条件判断implicit 隐式in 在...里面int 32位有符号整数internal 内部的is 判断对象是否是某类型lock 锁定long 64位有符号整数new 实例化null 空override 覆盖params 参数readonly 只读ref 引用参数修饰符return 返回this 代表当前实例throw 抛出异常true 真try 开始异常处理typeof 获取对象类型ushort 16位无符号整数decimal 小树类型array 数组delegate 委托while 当...时continue 结束本次循环,继续下一轮循环boxing 装箱unboxing 拆箱const 定义常量sizeof 获取对象大小exception 异常struct 结构类型数据库相关DataSet 数据集,数据表集合Connection 数据库连接对象Command 向数据库发送各种sql语句的命令对象DataReader 数据读取对象DataAdapter 数据适配器。

dotNET入门教程_2编程基础

dotNET入门教程_2编程基础


使用
直接使用:<枚举类型名>.<枚举值>
18
Data Type
常量 - 枚举
类型转换
枚举类型 >> 基本类型:
基本类型 >> 枚举类型:
基本类型 >> 枚举字符串:
19
Data Type
类型转换 - 简单的类型转换
概念
大自然中的“冰”和“水”在特定温度下是可以相互转换的 同理,存储在内存中的数据,也可以更改其数据类型

声明与赋值
变量声明:使用变量类型(数据类型)和变量名称(标识符) 变量赋值:使用“=”运算符 * 变量在使用之前必须经过初始化,即初始赋值
7
Data Type
变量 - 什么是数据类型
概念
string str = “Hello DevilTeam”; 中的“string”即为一个数据类型 计算机内部存储的数据只有 0 和 1 实际应用的数据都是以0、1的形式存放在计算机中 数据类型就是一种约定,告诉程序如何去理解0、1组成的数据串

分类
字面值,如 1.2M,true,”hello” 常变量,如 public const string ABC = "English and Other Language"; 枚举,如 enum SizeType {Small , Large },然后 rge
14
Data Type
分支结构语法,三元运算符、if语句、switch语句等 switch语句中的常量

循环 Looping
循环结构语法、do循环、while循环、for循环 循环中断及跳转break、continue、return、goto

认识DOTNET

认识DOTNET
认识
张波
DOTNET是一个平台


DOT是Distributed Object Technology Microsoft .NET 扩展了通过任何设备随时随地操 作数据和进行通讯的能力。.NET 使用分布式计算 模型并基于开放标准(如 XML)将 PC 与其他智 能设备连接在一起。 借助于 .NET 平台,可以创建和使用基于 XML 的 应用程序、进程和 Web 站点以及服务,它们之间 可以按设计、在任何平台或智能设备上共享和组 合信息与功能,以向单位和个人提供定制好的解 决方案。

Mobile应用
.Net Compact Framework WP WinCE PocketPC

VSTO
扩展增强Office 2007 2010 2012

WinRT/Metro

Win8 Metro界面
如何学习Winform编程
ห้องสมุดไป่ตู้
Winform主要学习内容
事件 winform组控件 报表 安装文件&帮助

推荐参考书
基于DOTNET的应用方向
桌面 Web 移动设备 & 嵌入式

DOTNET主要技术





数据访问 .Net服务 工作流 B/S应用 C/S应用 Mobile应用 VSTO WinRT/Metro
数据访问
, Data Services Framework , Entity Framework , Sync Framework ,LINQ ,SQL Server CLR
Net服务
WCF Web Service

1-dotNet概述

1-dotNet概述
.Net 概述
.Net和.Net Framework
目标
• 了解关于.Net和.Net Framework的基本概念和原理
微软亚洲研究院资助
西安交大软件学院
.Net是什么?
• 将信息、设备和人以一种统一的、个性化的方式联 系起来的构想 • 提供支持这种构想的一个平台 • 使用这种平台创建下一代基于XML的Web Service 模型的软件
• 基于证据的安全解决方案(认证) • 通过检查用户的身份和代码的身份 • 安全策略可以配置
– 哪些代码可以被执行 – 运行的代码有哪些特权
微软亚洲研究院资助
西安交大软件学院
Windows Form
• 是一架构 • 用来建置利用 Common Language Runtime 的 Windows 客户端应用程序 • 可以用 Common Language Runtime 支持的任何语 言来撰写
微软亚洲研究院资助
西安交大软件学院
Web Forms
• 允许将界面设计和业务逻辑进行分离 • 可以使用.NET语言
– 不再仅仅只是脚本
• 可以使用XCOPY/FTP进行部署 • 简单的配置(基于XML)
微软亚洲研究院资助
西安交大软件学院

• 提供对 Microsoft SQL Server 等数据源以及通过 OLE DB 和 XML 公开的数据源的一致访问 • 提供断开连接模型
• Microsoft Intermediate Language (MSIL, IL)
– 所有的语言都会被编译成IL(这种代码称为managed code) – IL在真正被执行之前会被编译成本地代码
• 资源
– 例如:jpg或者bmp等等

.net 知识点

.net 知识点

.NET 是微软的一个庞大的开发平台,它包括了开发、运行、部署、管理等一系列工具和服务。

以下是一些 .NET 知识点详细描述: Framework:这是 .NET 的核心,是一个统一的编程模型,提供了一个跨语言的集成平台,包括了内存管理、线程管理、垃圾回收、安全性、应用程序目录等服务。

Core:这是 .NET 的一个轻量级、跨平台的实现,它提供了原生的云应用开发和部署功能,以及强大的性能和可扩展性。

Standard:这是一个统一的API 集合,为不同的平台和设备提供了共享的功能和行为。

它包括了.NET Framework、.NET Core 和Mono 等多种实现。

Async:这是 .NET 的异步编程模型,它支持异步编程模式,包括async 和await 关键字,可以方便地实现异步编程和异步调用。

LINQ:这是 .NET 的语言集成查询(LINQ)实现,它提供了一种强大的查询语言,可以方便地对数据源进行查询和转换。

Remoting:这是 .NET 的远程过程调用(RPC)框架,它支持多种传输协议和序列化方式,可以实现不同进程、不同计算机之间的通信。

:这是 .NET 的Web 开发框架,它提供了一种统一的编程模型,可以方便地创建Web 应用程序和Web 服务。

8.WPF:这是 .NET 的桌面应用程序开发框架,它提供了一种基于XML 的界面描述语言和事件驱动的编程模型,可以方便地创建Windows 桌面应用程序。

9.Entity Framework:这是.NET 的对象关系映射(ORM)框架,它提供了一种方便的方式来操作数据库中的数据,可以将数据库表映射为实体类,并通过LINQ 进行查询和操作。

以上是 .NET 的一些知识点详细描述,它们是 .NET 开发中经常使用到的技术和工具,开发者需要了解并掌握它们的使用方法和最佳实践。

Dotnet学习笔记

Dotnet学习笔记

学习的基本技能1、要有清晰的思路。

对于自己的学习过程脑子里要有一个清晰的图景。

要清楚要学习的东西的大致框架,自己已经学了哪些,正在学哪些,以后要学哪些;已经学的部分,自己已经学到了一个什么样的深度,还没有学的部分,自己打算学到什么样的深度;所学习的东西,难点在哪,重点在哪;当然,这些认识不是一开始就有的,但是在学的过程中始终要有意识地形成这些概念,而不能越学越浑。

2、宏观和微观认识相结合。

初学一种技术,一开始可能被一大堆函数,参数,命令,类等搞得晕头转向,这时要及时撤出来,先搞清楚类的结构、关系、主要功能是什么。

大致框架心中有数了,再逐步地深入细节,这样才能做到精通。

3、要有较强的分析能力。

有人说过,程序不是写出来的,是调试出来的。

这充分说明了调试的重要。

而调试的过程正是分析能力的体现。

4、要有较强的查找资料的能力。

学习中遇到问题,有人问当然很方便,没人问时就要善于自己找资料解决。

首选的参考资料是联机帮助,对于Visual C#.Net 和来说就是MSDN,因为这是厂商提供的资料,最具有权威性,往往也比较详尽,有些信息是其他资料上找不到的。

5、要有较强的阅读代码的能力。

有时候学习别人的程序会让自己少走很多弯路,少花很多时间。

计算机语言:低级语言和高级语言低级语言:机器语言和汇编语言高级语言:C、C++、VB、Java、C#等等其中,C、C++在高级语言中又属于偏硬件,VB、Java、C#比较更偏向网页;语言等级越低,越容易对硬件进行操作,功能越强大,但等级越高的语言却越越形象具体,容易理解和学习。

机器语言用指令代码编写程序,符号语言用指令助记符来编写程序。

机器语言和汇编语言都依赖于硬件体系,且汇编助记符量大难记,要求程序员非常熟悉硬件的结构和原理。

计算机工作原理:事先编制好程序(由若干条指令组成)和数据会存入计算机的存储器中,计算机在运行时自动、连续的从存储器中逐条取出指令并执行,因此,计算机的工作过程就是运行程序的过程,也就是执行指令的过程。

DOTNET人应该知道的

DOTNET人应该知道的

任何一个使用.NET的人∙描述线程与进程的区别?∙线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。

除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。

所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。

进程的作用和定义:进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费而提出来的。

进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。

∙线程和进程的区别:1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。

2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。

3、系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。

那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。

4、与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。

5、进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

进程与程序的区别:程序是一组指令的集合,它是静态的实体,没有执行的含义。

而进程是一个动态的实体,有自己的生命周期。

一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有也可以只有一个进程。

dotNET技术_第01章

dotNET技术_第01章

.NET技术课程组 技术课程组
12
1.3.1 公共语言运行时
.NET Framework核心组件就是公共语言运行时, 它管理内存、线程执行、代码执行、代码安全验证、 编译和其他系统服务等。这些功能是公共语言运行时 上运行的托管代码所固有的。下面列举出公共语言运 行时提供的重要服务: 1.公共类型系统 . 2.公共语言规范 . 3.中间语言和 .中间语言和Just-In-Time编译器 编译器 4.执行管理 . 5.垃圾回收机制 .
.NET技术课程组 技术课程组
2
1.1 Visual 与C#.NET 与
Visual 为我们提供了一种编写 Windows应用程序的良好环境。很早之前要编写 Windows应用程序时需要用到C++,对于初学者 来说不但难学,而且在创建应用Windows应用程 序时既复杂又费时,之后推出的Visual Basic简 化了Windows应用程序的开发,简单易学但缺少 一些C++拥有的复杂功能。但随着Visual 和C#的推出变革了Windows的软件 开发,不仅如此对其他类型程序的开发也有独到 之处。
.NET技术课程组 技术课程组
8
1.1.2 C#简介 简介
使用C#可以创建下面列出几种常见的 使用 可以创建下面列出几种常见的 应用程序的类型 Windows应用程序 Web应用程序 Web服务
.NET技术课程组 技术课程组
9
1.2 .NET Framework与Visual 与 的关系 的关系
.NET技术课程组 技术课程组
10
1.2 .NET Framework与Visual 与 的关系 的关系
.NET Framework旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码在本地 存储和执行,还是在本地执行但在Internet上发布,或者在远 程执行。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括未知的或不完全受任的第三方创建 的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境性能问题的代码执行环境 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows的应用程序和基于Web的应用程序)时保持一致。 按照工业标准生成所有通信,以确保基于.NET Framework的代 码可与任何其他代码集成。

DotNetty学习笔记

DotNetty学习笔记

DotNetty学习笔记 DotNetty项⽬本⾝的⽰例很容易运⾏起来,但是具体到真实的应⽤场景,还是需要进⼀步理解DotNetty的通道处理细节,这样才能够在实际项⽬应⽤中处理具体的问题。

简单的场景下会有以下⼏个问题,第⼀,客户端如何向服务器主动发送消息;第⼆,服务器如何向指定客户端发送消息;第三,在哪⾥做报⽂的拆包和组包。

我是带着以上⼏个问题进⾏分析的。

以上⼏个问题,在下⾯的代码中会有详细的注释,也许不是标准⽅案,但也是应对上述问题的⼀种解决途径。

看代码:public partial class FrmMain : Form{public static object synobj = new object();public static Int64 count = 0;public static DateTime dt1 = DateTime.Now;public static DateTime dt2 = DateTime.Now.AddSeconds(1);private Timer t = new Timer();private List<IChannel> listClients = new List<IChannel>();public FrmMain(){InitializeComponent();t.Interval = 1000;t.Tick += T_Tick;t.Start();}private void T_Tick(object sender, EventArgs e){this.Text = (count / (FrmMain.dt2 - FrmMain.dt1).TotalSeconds).ToString();}/// <summary>/// 启动服务器/// </summary>private async void btnStartServer_Click(object sender, EventArgs e){IEventLoopGroup mainGroup;IEventLoopGroup workerGroup;mainGroup = new MultithreadEventLoopGroup(1);workerGroup = new MultithreadEventLoopGroup();var bootstrap = new ServerBootstrap();bootstrap.Group(mainGroup, workerGroup);bootstrap.Channel<TcpServerSocketChannel>();bootstrap.Option(ChannelOption.SoBacklog, 100).Handler(new LoggingHandler("SRV-LSTN")).ChildHandler(new ActionChannelInitializer<IChannel>(channel =>{//每个客户端的连接创建,都会执⾏,channel代表了具体的连接客户端,以下过程为每个客户端连接创建编解码器。

01-《DotNet框架、WinForm基础》

01-《DotNet框架、WinForm基础》

16
谢谢大家!
17
Data and XML Base Class Library CLR CLI
6
2.1.2 .Net框架基础---从开发到执行
VB C# C++
编译器
编译器
编译器
MSIL
开发 执行
JIT
机器代码 7
2.1.3 .Net框架基础---名词解释
MSIL – Microsoft Intermediate Language – 它是第一次编译后的代码,包括托管代码和元数据 等 – 不能直接运行 托管代码(可操控代码) – 依靠一种以运行时为目标的编译器编译产生的代码 元数据 – 携带源代码中类型等信息的描述,解决不同语言的 类型问题和版本问题
14
本次课பைடு நூலகம்程总结
DotNET概述 DotNet程序运行的基本原理 Visual Studio 2010 开发环境 创建WinForm应用程序
15
下次课内容
C#基础
变量、常量 数据类型(值类型、引用类型)、类型转换 运算符、表达式 分支程序结构(if语句、switch语句) 循环程序结构(while语句、do语句、for语句、 foreach语句) 异常处理(try…catch语句、throw语句)
using System.Windows.Forms; …… private void BTok_Click(object sender, EventArgs e) { LblHello.Text = TxtName.Text + “,思远欢迎您!"; } ……
13
举例
Demo:WinFormDemo :
8
2.1.4 .Net框架基础---名词解释

c#.dotNET概述1

c#.dotNET概述1

Inspur Education第1章.NET概述©2012 Inspur Group本章目标◆了解什么是.NET, 理解.NET Framework原理◆掌握FCL/BCL、CTS、CLS常用术语的含义◆掌握C#语言与.NET的关系、了解C#语言的优点◆了解Visual Studio集成开发环境IDE本节教学内容◆.NET概述及.NET Framework简介◆常用术语简介(CTS、CLS)◆C#语言简介◆Visual Studio集成开发环境IDE介绍什么是.NET?Microsoft® .NET 是一系列连接信息、使用者、应用系统和设备的软件技术任何时候任何工具网络上的信息任何地方Microsoft .NET 分布式系统平台XML Web Services 设备服务器组件用户体验开发工具面向设备-智能客户端智能客户端包括PC、笔记本电脑、智能电话、平板电脑、XBOX等智能设备历史◆2000年微软公司向全球宣布其革命性的软件和服务平台:Microsoft .NET◆2001年发布了.NET Framework1.0版◆经历6个正式版本1.0、1.1、2.0、3.0、3.5 、4.0◆Visual Studio 11即将发布,其版本为4.5 介绍.NET 战略对微软的影响50100150200250300营业额亿美元1999年2000年2001年2002年企业核心应用.NET 46%其它54%.NET其它2003~2004年间,全球100强和《财富》100强加起来的共166个公司微软发布.NET 前后的营业额为什么需要.NET框架◆不同平台(PDA、PC、游戏机)的程序如何在.NET环境下运行?◆使用C#开发的程序可以调用开发的程序吗?◆.NET Framework到底是什么?框架体系结构操作系统公共语言运行时(CLR)VC++.NETC#VJ#….NET Framework 类库(FCL)硬件NET 框架的设计保证了整个框架对于硬件平台和编程语言都是独立的.NET Framework公共语言运行库(CLR)◆CLR : (Common Language Runtime )全称是公共语言运行时或公共语言运行库◆CLR是.NET框架的基础,所谓.NET框架,指的就是公共语言运行库和类库。

DotNet程序设计备课笔记

DotNet程序设计备课笔记

4、类型转换(1)隐式转换与显示转换隐式转换指不需要额外声明就可以进行的类型转换;显示转换也叫强制转换,必须明确指出转换的目标类型。

通常由“低精度、小范围”类型向“高精度、大范围”类型的类型转换是安全的,可以隐式进行,而反向则不安全,必须显式进行。

举例int i = 20;float j = i; //隐式转换i=(int)j; //显式转换可以利用checked()函数检测强制转换是否发生溢出错误,当转换溢出时checked()函数将抛出OverflowException异常。

(2)装箱(boxing)与拆箱(unboxing)Object类型是C#中所有数据类型的基类,因而根据里氏替换原则,Object类型可以引用绑定一切其他类型,具体数据类型向Object类型的泛化将减弱某一操作对特定数据类型的限制,实现对任意数据类型的多态支持。

装箱操作是通过值类型数据生成Object类型对象的泛化过程;拆箱操作是装箱操作的逆过程,即通过Object类型对象具体化为某种值类型数据。

举例:int i=123;Object box=i; //装箱操作,根据值类型变量i生成对象类型变量boxint j=(int)box; //拆箱操作,由对象类型变量box生成值类型变量j2.4 C#运算符与优先级C#运算符与优先级可通过下表总结(优先级由上至下)括号运算()一元运算+(取正),-(取负),!(非)算术运算*,/,%(取余)+,-移位运算<<,>>关系运算<,>,<=,>=,is==,!=二进制运算&(与)^(异或)|(或)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任何一个使用.NET的人1) 描述线程与进程的区别?线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。

一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。

而同一进程中的不同线程共享代码和数据空间。

用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

2) 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。

它支持三种方式:1)自动方式 2)手动方式3)禁用。

自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。

另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。

3) Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访问的最大内存量为:232 /2= 2G 。

单个进程能访问的最大内存量是最大虚拟内存的1/2,因为要分配给操作系统一半虚拟内存。

4) 什么是强类型,什么是弱类型?哪种更好些?为什么?强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。

没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。

一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等5) PID是什么?在做系统的故障排除时如何使用它?PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual 等ide将故障进程附加到进程中进行调试(debug)6) 什么是GAC?它解决了什么问题?Gloal Assembly Cache,全局应用程序集缓存。

它解决了几个程序共享某一个程序集的问题。

不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。

中级.NET开发人员1) 阐述面向接口、面向对象、面向方面编程的区别面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是依赖倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。

面向对象是对复杂问题的分解。

面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。

而面向方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。

2) 什么是Interface?它与Abstract Class有什么区别?接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类4) 使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?Web服务使用的消息机制,而Remoting采用的RPC.Web Service能用于不同平台,不同语言,Remoting只适用于.Net。

效率上Remoting高于Xml Web Service5) 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。

所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生7) 调用Assembly.Load算静态引用还是动态引用?动态8) 何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile?呵呵,这个比较有意思,相比LoadFile,LoadFrom则显得不地道,因为它娶媳妇的时候,是让人家穿上嫁妆,坐上马车,还得带着人家的妹妹来,:)用它加载的是程序集,这就要求同时将此程序集所依赖的程序集加载进来。

而LoadFile 就地道的多,它是加载程序集文件的内容,只将传入参数的文件加载,不考虑程序集依赖,但如果有相同实现,但位置不同的文件用LoadFrom是不能同时加载进来的,而LoadFile却可以。

由于LoadFile加载的是文件,所以调用它之后,可能因为缺少必要的依赖造成无法被执行。

9) 什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同?它不是一个文件名,相比文件名,Assembly Qualified Name(程序集限定名称),更能确定一个程序集,它包含文件名,但同时包含版本,公钥,和区域。

因为同样一个名称的文件可能有不同的版本和区域,此时单独靠文件名称,可能会造成不能确定程序集的正确性。

10) Assembly.Load("foo.dll"); 这句话是否正确?错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");11) 做强签名的assembly与不做强签名的assembly有什么不同?强签名的程序集可以做成com,而不做强签名的就不行,同样强签名程序集可以安装到GAC中,而不做强签名的确不能。

13) 什么叫JIT?什么是NGEN?它们分别有什么限制和好处?Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN 是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动态生成它们。

感觉和缓存的道理大同小异。

14) Finalize()和Dispose()之间的区别?Finalize()用于隐式释放资源,Dispose()用于显示释放资源(Finalize()的确相当于C++中的析构函数(多谢Jeffrey Zhao提示更正)15) using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。

有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。

不明白什么是确定性终结16) tasklist /m "mscor*" 这句命令是干嘛的?列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息17) in-proc和out-of-proc的区别in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。

18) .NET里的哪一项技术能够实现out-of-proc通讯?.Net Remoting技术或者WCF技术19) 在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?Xp : aspnet_Wp.exeWindows 2000 : aspnet_Wp.exe (多谢Tristan提示更正)Windows 2003 : w3wp.exe高级开发人员/架构师5)什么叫FullTrust?放入GAC的assembly是否是FullTrust的?FullTrust完全信任。

放入GAC中的Assembly是否FullTrust我的理解不是。

我理解FullTrust是可以通过代码设定的6)代码加上需要安全权限的特性有什么好处?可以更加灵活的设置对代码的访问权限,实现代码级保护。

?这点不是特清楚,有明白的给讲解下7) gacutil /l | find /i "Corillian" 这句命令的作用是什么?全局程序集缓存中如果有Corillian就更新该程序集,没有就安装8) sn -t foo.dll 这句命令是干嘛的?显示程序集foo.dll的公钥标记9) DCOM需要防火墙打开哪些端口?端口135是干嘛用的?135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。

因为根本不晓得开哪个端口。

但有解决办法可以使DCOM分配的端口号固定,有关内容我在/jillzhang/archive/2008/02/20/1075057.ht ml有过一些描述。

135是远程过程调用(RPC)的默认端口10)对比OOP和SOA,它们的目的分别是什么?我想OOP和SOA应该没有对比性吧。

OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。

而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。

11) XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。

应该至少需要ACL权限中的读权限.12)为什么不提倡catch(Exception)?原因可能有两点:1)try..catch在出现异常的时候影响性能2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等13)Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?Debug.Write是调试的时候向跟踪窗口输出信息。

相关文档
最新文档