-
2020-06-22 13:56:40
各种编程语言的适用范围
自1956年第一门高级语言Fortran诞生至今,历史上出现过的各类计算机编程语言总和已超过1500种,但今天还流行的并不多。相当一部分人在初学编程时都会问:我该学什么语言?
我认为:某种程度上,语言没有明显优劣,只有适合还是不适合,擅长与否。有的语言就是要比其他语言更适合某个领域,更能作出产品来。本文主要梳理一些类语言工具和TIOBE榜上一部分语言的适用场景,希望能成为一份粗略的编程语言选择指南。(排名没有先后)
类语言工具
下面四个不算编程语言,但又有些类似高级语言的用法,是非常好的工具。
Tex
(1) 高德纳开发,排版工具,追求高质量必不可少,漂亮的ConTeXt也很好。
(2) 适用于书籍,报刊,杂志,论文,报告等等文档的排版。
(3) 详细内容请看另一篇博文Tex排版系统及其衍生系列产品的简介Awk
(1) Unix/Linux系统工具,字节流数据处理,按列处理数据Sed
(1) Unix/Linux系统工具,字节流数据处理,按行处理数据Grep
(1) Unix/Linux系统工具,文档搜索,以文档为单位TIOBE Index收录编程语言的适用范围
下面是其中的44种语言。
Assembly
(1) 木马,病毒
(2) 底层,硬件控制
(3) 优点:快,能控制底层;缺点:学习难度大,不直观C
(1) 木马,病毒
(2) 编译器,调试器
(3) 工程控制领域,机器人
(4) 驱动程序,航空飞行器
(5) 类Unix操作系统,嵌入式
(6) 交换机,路由器,防火墙
(7) 优点:快,能控制底层;缺点:学习难度大,内存泄漏C++
(1) 木马,病毒
(2) 编译器,调试器
(3) 游戏引擎,服务器
(4) 数据库,安全协议
(5) 图像处理,虚拟现实
(6) 图形用户界面,网络
(7) 科学计算,人工智能
(8) 音视频处理,压缩技术
(9) 优点:面向对象,可扩展;缺点:学习难度极大,内存泄漏Rust
(1) 系统,网络
(2) 游戏,嵌入式
(3) Web开发,桌面GUI
(4) 优点:安全;缺点:学习难度大Go
(1) 服务器,数据库,容器
(2) 分布式大型系统,云平台
(3) 优点:并发,分布式,Web时代的C;缺点:括号不能换行,缺少库Dart
(1) 物联网
(2) Web,服务器
(3) 优点:移动开发,Fuchsia系统钦定语言;缺点:运行时环境大Java
(1) 大数据和科学应用
(2) 桌面应用,Web应用
(3) 软件工具,交易程序
(4) 企业级应用,安卓应用
(5) 优点:跨平台可移植,高性能;缺点:复杂臃肿Python
(1) 木马,病毒
(2) 大数据,云计算
(3) 量化金融,运维
(5) 图像,音视频处理
(4) 科学计算,Web开发
(6) 网络爬虫,人工智能
(7) 优点:简单易学,各种库多,缺点:速度慢,老是重构JavaScript
(1) 网站前端,Web应用
(2) 网站后端,浏览器插件
(3) 前后端(Node.js/Deno)
(4) 优点:功能强大,简单;缺点:依赖浏览器WebAssembly
(1) 浏览器使用
(2) 优点:高性能,支持多种语言;缺点:类型检验严格TypeScript
(1) 应用级的JavaScript开发语言
(2) 优点:支持js,兼容第三方库;缺点:学习有难度HTML
(1) 网页生成
(2) 电子书制作
(3) 优点:跨平台;缺点:浏览器兼容麻烦Kotlin
(1) 安卓官方开发语言
(2) 优点:兼容Java,节省代码;缺点:编译慢Swift
(1) IOS及OS X开发
(2) 优点:安全,快;缺点:版本不稳定Objective-C
(1) IOS平台软件开发
(2) 优点:库丰富;缺点:不支持重载,多重继承PHP
(1) 网站开发,电子商务
(2) Web应用,企业级应用
(3) 微信开发,客户端界面
(4) 优点:上手快,框架成熟;缺点:慢,应用单一Shell
(1) 类Unix系统中,自动化脚本
(2) 优点:简单,高效;缺点:IO性能,效率不高PowerShell
(1) 自动化脚本,可调用.Net和COM对象
(2) 优点:功能强大;缺点:不兼容老版Ruby
(1) Web开发
(2) 优点:简单,正则;缺点:慢Perl
(1) Unix系统维护,CGI脚本
(2) 邮件文本处理和FTP自动化
(3) 数据库通信,Web站点维护自动化
(4) 优点:简单,正则;缺点:写大程序很麻烦R
(1) 自动化报告
(2) 生物医学领域
(3) 数据挖掘,统计分析
(4) 优点:简单,本身小;缺点:大文件处理差Julia
(1) 科学计算,数据处理,仿真
(2) 优点:支持python库和R库;缺点:启动需预热Lua
(1) 游戏脚本,内嵌脚本
(2) 优点:小,快;缺点:重复造轮子,nil值问题MATLAB
(1) 人工智能
(2) 数值计算,仿真模拟
(3) 优点:矩阵,仿真强;缺点:慢,软件太大Fortran
(1) 科学研究,物理
(2) 优点:快;缺点:太老,生态不好SQL
(1) 数据库
(2) 优点:安全;缺点:慢,可移植性差C#
(1) Windows桌面应用,Web应用
(2) 优点:分布式,面向对象;缺点:复杂Visual Basic
(1) 木马,病毒
(2) 可视化程序设计
(3) 优点:小;缺点:无继承COBOL
(1) 银行,保险,金融
(2) 优点:数据处理高效;缺点:老Delphi
(1) 木马,病毒
(2) 桌面开发,数据库开发
(3) Web服务,游戏控制软件
(4) 优点:简单,控件丰富;缺点:死了Pascal
(1) 编程竞赛,算法研究
(2) 优点:语法严谨;缺点:语法严谨D
(1) Web开发
(2) 优点:效率高,和C/C++交互容易;缺点:缺乏企业支持Scala
(1) 大数据,Web服务
(2) 优点:生态丰富,扩展性强;缺点:学习曲线陡峭Clojure
(1) 游戏后端
(2) 自动化测试,黑盒测试
(3) 优点:简单,实用;缺点:要懂JavaGroovy
(1) Java的替代品
(3) 优点:比Java灵活;缺点:性能损失Lisp
(1) 人工智能
(2) 优点:符号推演;缺点:能教学用Scheme
(1) 科学计算
(2) 优点:简单,移植性好,理解语言本质Haskell
(1) 函数式编程
(2) 优点:惰性求值;缺点:复杂Prolog
(1) 不用于开发软件
(2) 逻辑编程,用于挖掘关系
(3) 优点:培养逻辑;缺点:慢Erlang
(1) 游戏网页,高并发
(2) 优点:灵活;缺点:数据抽象弱PostScript
(1) 印刷机,打印机使用
(2) 优点:设备无关;缺点:贵Scratch
(1) 儿童编程语言
(2) 优点:简单;缺点:简单VHDL
(1) 电路设计LabVIEW
(1) 图形化编程语言,产生框图程序
(2) 测量,控制系统,快速工程化实践结语
一般人用得到的语言估计就这些,每门语言的适用领域不一定写全了,但是大体不会错。个人感觉 Go,Rust,WebAssembly,Dart在未来可能会火起来。
更多相关内容 -
要求不高的场合定位程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例
2022-04-25 00:29:46要求不高的场合定位程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例要求不高的场合定位程序.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例要求不高的场合定位程序.zip三菱PLC... -
基于可编程数字电位器在AVR单片机中的应用
2021-01-20 05:09:41AVR嵌入式单片机具有丰富的硬件、软件资源,其中的串行I2C接口能满足很多应用场合的要求,两个AVR单片机通过I2C总线直接连接就可实现单片机相互通信;AVR单片机还可以和任何具有I2C总线接口的外设直接连接而无须... -
电子测量中的基于可编程数字电位器在AVR单片机中的应用
2020-11-09 21:17:16AVR嵌入式单片机具有丰富的硬件、软件资源,其中的串行I2C接口能满足很多应用场合的要求,两个AVR单片机通过I2C总线直接连接就可实现单片机相互通信;AVR单片机还可以和任何具有I2C总线接口的外设直接连接而无须... -
元器件应用中的可编程定时/计数器8253在扬声器中的应用
2020-12-01 03:26:48定时/计数器都有定时或对外部事件计数的功能。通常,定时/计数器归纳起来... 可编程定时/计数器8253通过软件设定,可以产生各种时间延迟信号,他的使用非常广泛,通常被用于定时控制、延时、计数等场合,如定时刷新RAM -
伺服电机选型流程计算及各种场合应用.pdf
2021-08-28 08:30:52伺服电机选型流程计算及各种场合应用.pdf -
传感技术中的能温度传感器Dsl8b20在多路测温中的应用
2020-12-13 19:55:42本文给出的设计通用性好,可以方便地移植到其他应用场合。 1 Dsl8b20编程简介 每一片单总线芯片内部都有一个全球惟一的64b编码,在多路测温时就是通过匹配每个芯片的ROM编码(1D),来搜寻该路的温度。Dsl8b20有... -
AB-Logix5000处理器-SFC顺序功能图编程应用.doc
2020-07-20 11:30:39详细介绍罗克韦尔AB的SFC顺序控制程序的使用方法及实例讲解介绍,方便工控人员在方便、快捷的解决需要用到顺序控制的场合。 -
可编程控制器PLC应用于广播发射机自动控制
2020-10-23 14:13:031969年第一台可编程控制器产生后,经过30多年的发展,现在可编程控制器已经成为最重要、最可靠、应用场合最广泛的工业控制微型计算机。可编程控制器应用于广播发射机可实现广播发射机的自动开关机及采集并监控发射机... -
面向切面编程在spring中的应用
2008-09-13 10:47:37对于在spring中面向切面编程的深度剖析。 有无经验者都可做参考和学习使用 -
可编程控制器PLC在广播发射机自动控制中的成功应用
2020-10-23 07:43:391969年第一台可编程控制器产生后,经过30多年的发展,现在可编程控制器已经成为最重要、最可靠、应用场合最广泛的工业控制微型计算机。可编程控制器应用于广播发射机可实现广播发射机的自动开关机及采集并监控发射机... -
USB 3.0编程宝典.pdf
2017-06-05 08:17:09本书分为4部分,共26章,全面详细地讲述了USB接口的编程原理及应用...第4部分为USB开发实战,通过11个例子,详细介绍了在不同的应用场合下USB接口设备的设计,包括完整的电路图、固件程序、驱动程序和上位机程序设计。 -
基于可编程数字电位器在avr单片机中的应用.docx
2020-11-22 00:13:14基于可编程数字电位器在AVR单片机 中的应用 文章出处 发布时间2009/11/03 | ...每天新产品时刻新体验完整的15A开关 I2C接口能满足很多应用场合的要求两 AVR单片机还可以和任何具有 I2C总线 1引言 AVR嵌入式单片机具有丰 -
主动式I/O模块在高速工控场合的应用 (2009年)
2021-05-31 21:54:05另外,其编程方法中对ISR的应用有一些局限,而其中断延迟在一些超高速的工控场合仍然无法满足要求。针对传统I/O板卡的局限性,提出“主动式”I/O模块的概念。描述其系统结构,讲解提高系统实时性能的机制。 -
EDA/PLD中的精简的FPGA编程方法
2020-12-09 13:54:54在许多应用场合,如大型设备中的板卡,比较适合采用标准的FPGA编程电路。但是对于便携式设备的应用场合,采用标准电路联系FPGA与CPU需要消耗的资源太多。许多DSP芯片只有2个通用I/O引脚,所以如果能只使用1~2个引脚... -
不同编程语言语言的适用场景
2021-07-23 17:37:292、二十五岁零基础转行做软件测试怎么样? ...6、常见编程语言的适用场合 (1)嵌入式,操作系统:C (2)网页开发:javaScript,CSS,HTML、PHP(小型web快速开发) (3)统计分析:R (41、如何通俗地解释 C、C++、C#、Java、JavaScript、HTML、Python的用处?
2、二十五岁零基础转行做软件测试怎么样?
3、软件测试中的自动化测试一般要会什么编程语言?
4、Which Programming Language Should I Learn First?
5、编程语言搜索排行榜
6、常见编程语言的适用场合
(1)嵌入式,操作系统:C
(2)网页开发:javaScript,CSS,HTML、PHP(小型web快速开发)
(3)统计分析:R
(4)android应用开发
(4)数据分析、大数据、机器学习、深度学习、量化交易、爬虫:Python
(5)
:c++
(6)桌面软件、上位机、unity游戏开发:C#
(7)桌面软件、单位的信息系统:VB、delphi
(8)数据库:SQL
(9)Mac、iOS应用:objective-c、swift
(10)go:互联网大流量高并发后端
(11)ruby: ROR框架中小型web开发
(12)MATLAB:科学计算
(13)typescript:未来web前端王者
-
工业电子中的基于可编程控制器工业机械手无线遥控系统
2020-11-19 04:44:39可编程序逻辑控制器(ProgrammableLogicController,PLC)是一种适用性强的工业用控制器,广泛应用于各类工业生产线,移动机械设备的控制等环境较... 在一些环境复杂的应用场合,尤其是对于移动机械设备,控制系统的布 -
显示/光电技术中的用可编程器件实现LED显示屏的硬件扫描控制
2020-10-21 08:42:14LED 大屏幕显示屏可广泛应用于商场、车站、机场、银行、证券市场、工业控制等许多场合,作为广告宣传和信息传递之用。 设计上一般采用单片机控制,但其设计的关键在于是否能够实现显示部分的硬件扫描控制,从而能... -
功率移位寄存器TPIC68595及其在可编程控制器输出端口扩展中的应用 (2002年)
2021-05-14 00:28:12在某些使用场合,控制系统需要较多的可编程控制器输出点数而对控制功能要求不高。针对这个实际,文中提出了一种用功率移位寄存器TPIC68595扩展可编程控制器输出端口的简易方法。 -
用可编程器件实现LED显示屏的硬件扫描控制
2021-01-19 19:37:15LED 大屏幕显示屏可广泛应用于商场、车站、机场、银行、证券市场、工业控制等许多场合,作为广告宣传和信息传递之用。 设计上一般采用单片机控制,但其设计的关键在于是否能够实现显示部分的硬件扫描控制,从而能... -
C#网络编程_课后习题答案
2021-06-20 21:25:10此为《C#网络应用编程》第三版 马骏 部分课后习题答案。 二、目录 第一章-网络应用编程入门知识 第三章-进程、线程与应用程序域 第四章-数据流与数据的加密和解密 第五章-异步编程 第六章-并行编程 第七章-WCF入门 ...一、说明
此为《C#网络应用编程》第三版 马骏 部分课后习题答案。
二、目录
- 第一章-网络应用编程入门知识
- 第三章-进程、线程与应用程序域
- 第四章-数据流与数据的加密和解密
- 第五章-异步编程
- 第六章-并行编程
- 第七章-WCF入门
- 第八章-WCF和HTTP编程
- 第九章-WCF和TCP编程
- 第十章-WCF和UDP编程
第一章-网络应用编程入门知识
1. 简述分散式、集中式和分布式通信模型的特点。
-
分散式:各自独立的计算机系统之间没有资源或信息的交换或共享,存在大量的数据冗余及数据不一致性,维护成本高
-
集中式:数据的存储和处理都在单个计算机系统上,用户终端只有显示器和键盘。优点是硬件成本低,无数据冗余和数据不一致性。缺点是可靠性低,访问速度受同时使用的用户数量影响,且无法满足特殊部门的数据要求
-
分布式:分散式和集中式的混合体,把分散的资源以一个整体的形式呈现给用户。数据冗余低,访问速度快。
-
分散式:各自独立的系统之间没有资源或信息的交换或共享。存在大量数据冗余且维护成本高,已被淘汰。
-
集中式:数据和管理功能都集中在单台计算机上,用户仅能通过终端来操作。优点是硬件成本低、无冗余和不一致性问题,缺点是可靠性和灵活性低,反应慢。
-
分布式:是分散式系统和集中式系统的混合体,是目前比较完善的解决方案。
2. 简述C/S和B/S的优缺点。
-
C/S结构的开发和维护成本比B/S高:采用C/S时对于不同客户端要开发不同的程序,且软件的安装、调试和升级都需要在所有客户机上进行。
-
C/S的客户端不仅负责与用户交互,收集用户信息,而且还需要完成通过网络向服务器请求对数据库、电子表格或文档等信息的处理工作,而B/S的客户端把事物处理逻辑部分交给服务器而客户端只需显示
C/S相对于B/S安全性更高,C/S可以通过严格的管理派发软件,达到保证系统安全的目的。 -
C/S是一种胖客户端应用程序编程架构,其主要工作都在客户端运行。优点是可以充分利用本地计算机的性能优势,缺点是需要在本机安装客户端软件。
-
B/S使用HTTP进行通信。优点是单台计算机可以访问任何Web服务器,缺点是B/S模式有沙盒限制。
3. 什么是套接字?套接字有哪几种类型?
-
套接字是一种通信机制,通信两方的一种约定,用套接字中的相关函数来完成通信过程。
类型:流套接字,数据报套接字,原始套接字。 -
套接字是支持TCP/IP网络通信的基本操作单元,是不同主机间的进程进行通信的端点。在一个套接字实例中,既保存了本机的IP地址和端口,也保存了对方的IP地址和端口,同时也保存了双方通信采用的网络协议等信息。
第三章-进程、线程与应用程序域
1. 简要回答下列问题。
(1)进程和线程有什么区别?为什么要用多线程?多线程适用于哪种场合?
(2)前台线程和后台线程有什么区别和联系?如何判断一个线程属于前台线程还是后台线程?如何将一个线程设置为后台线程?(1)进程是正在执行的程序,线程是某个进程中的一个或多个执行流。多线程可让多个任务同时执行。当执行需要较长时间才能完成的连续操作时,或者等待网络或其他I/O设备相应时,都可以使用多线程技术。
(2)一个线程要么是前台线程要么是后台线程。两者的区别是:后台线程不会影响进程的终止,而前台线程则会影响进程的终止。- 线程是进程的组成部分,一个进程包含多可线程,一个线程必须拥有一个父线程
- 线程之间可以共享内存数据,进程之间不能共享内存数据.
- 多线程可以提高资源利用效率,提高吞吐量.防止阻塞主线程.
- 比方说多步骤任务处理,分割成多个线程去处理
2.什么是同步?为什么需要同步?C#提供了什么语句可以简单地实现代码同步?
-
执行某语句时,在该语句完成之前不会执行其后面的代码,这种执行方式称为同步执行。当并行执行的多个线程同时访问某些资源时,必须考虑如何让多个线程保持同步。同步的目的是为了防止多个线程同时访问某些资源时出现死锁和争用情况。C#提供的lock语句可以简单地实现代码同步。
-
同步是指在某一时刻只有一个线程可以访问变量
-
同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果
-
异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作。
-
同步阻塞线程,异步不阻塞
-
委托的Invoke方法用来进行同步调用
-
委托的异步调用通过BeginInvoke和EndInvoke来实现。
-
异步模型的优势在如下情况下会得到发挥:
- 有大量的任务,以至于可以认为在一个时刻至少有一个任务要运行
- 任务执行大量的I/O操作,这样同步模型就会在因为任务阻塞而浪费大量的时间
- 任务之间相互独立,以至于任务内部的交互很少。
3.什么是线程池?使用线程池有什么好处?
-
线程池是在后台执行任务的线程集合,好处有:如当某个线程无法进入线程池执行时先将其放入等待队列,自动决定用哪个处理器执行线程池中的某个线程,自动调节这些线程执行时的负载平衡问题等。另外,线程池总是在后台异步处理请求的任务,而不会占用主线程,也不会延迟主线程中后续请求的处理。
-
线程池统一创建出一批线程,放在一个用以的地方,当使用线程的时候直接来这个地方取,用完再放回去。这个地方指的就是线程池。使用线程池的好处就是不需要频繁的创建和销毁线程,加快了程序的性能
第四章-数据流与数据的加密和解密
1. 什么是编码?什么是解码?为什么要对字符进行编码和解码?.NET框架提供了哪些用于字符编码和解码的类?
-
将字符序列转换为字节序列的过程称为编码;当这些字节传送到网络的接收方时,接收方再将字节序列转换为字符序列,这种过程称为解码。
-
在网络通信中,很多情况下通信双方传达的都是字符信息。但是,字符信息并不能直接从网络的一端传递到另一端,这些字符信息首先需要被转换成一个字节序列,然后才能在网络中传输。因此,发送方需要进行编码,相应的接收方就要执行解码。
-
.NET框架中一般常用Encoding类实现编码和解码。Encoding类位于System.Text命名空间下,该类主要用于对字符集进行编码和解码以及将一种编码格式转换为另一种编码格式。如果有更详细的需求可以还使用与Encoding类位于同一命名空间下的Encoder和Decoder类来进行编码和解码。
2. .NET提供的从Stream类继承的数据流都有哪些?
- 文件流(FileStream)、内存流(MemoryStream)、网络流(NetworkStream)加密流(CryptoStream)。
第五章-异步编程
1. 仅包含async和await关键字的异步方法与用Task.Run调用的异步方法有和不同?
async和await关键字是C# 5.0提供的功能,仅包含async和await关键字的异步方法不会创建新线程,它只是表示在当前线程中异步执行指定的任务。而Task.Run方法是.NET框架4.5提供的功能,它会在线程池中用单独的线程执行某个任务。
2. 把普通方法和异步方法作为任务来执行时,调用方法有何不同?
普通方法要用Task.Run方法去调用,或者用Task、Task类的构造函数显示创建Task实例,然后再启动。异步方法不需要用Task.Run方法去调用。
3. Action和Func委托有什么不同?
Action委托封装了不带返回值的方法(有0~16个输入参数,返回类型为void),Func委托封装了带返回值的方法(有0~16个输入参数,返回类型为TResult)。
4.有几种创建任务的方式?
有4种方式。
(1)利用Task.Run方法隐式创建和执行任务;
(2)利用async和await关键字隐式创建异步任务;
(3)利用WPF控件的调度器隐式创建和执行任务;
(4)通过显式调用Task或Task的构造函数创建任务。第六章-并行编程
1.TPL支持哪些并行方式?
- TPL支持数据并行,任务并行和并行查询(PLINQ)。
3.简述Parallel帮助器类有哪些?功能分别是什么?
- 帮助器类包括ParallelOptions、ParallelLoopState、ParallelLoopResult、CancellationToken和CancellationTokenSource。
ParallelOptions类用于为Parallel类的方法提供操作选项,常用属性有:CancellationToken、MaxDegreeOfParallelism、TaskScheduler。
ParallelLoopState类用于将Parallel循环的迭代与其他迭代交互。常用属性和方法有:IsExceptional属性、IsStopped属性、Break方法、Stop方法。 - ParallelLoopResult类用于提供Parallel循环的完成状态,常用属性有:IsCompleted、LowestBreakIteration。
- CancellationTokenSource用于创建取消通知,称为取消源。
- CancellationToken结构用于传播应取消操作的通知,称为取消令牌。
4. 使用Parallel.Invoke方法时,为了能让Action与WPF界面交互,要注意什么问题?
- 不能使用默认的任务调度程序,而是通过设置并行选项,将任务调度程序与WPF当前同步上下文关联起来,相关代码如下。
ParallelOptions options = new ParallelOptions();
options.TaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
第七章-WCF入门
2.简要介绍WCF服务的承载方式及其特点。
WCF服务的承载方式包括:利用IIS或者WAS承载、利用Windows服务承载、自承载。其特点如下。
(1) 用IIS或者WAS承载:这是最常用的一种承载方式,特点是部署简单,方便。
(2) 用Windows服务承载:用【WCF服务库】模板创建的WCF服务利用Windows进程去承载。
(3) 自承载:指开发人员自己编写代码实现承载WCF的工作。优点是实现灵活,需要的环境支持最小。缺点是高级宿主管理功能需要自己写代码去实现。3.什么是服务协定,什么是数据协定,分别用哪些特性声明服务协定和数据协定?
服务协定是指WCF对客户端公开哪些服务。WCF服务端通过服务协定向客户端公开以下内容:操作方法、消息交换模式、采用的通信协议以及序列化格式。服务协定用ServiceContract特性和OperationContract特性来共同声明。
数据协定描述的是消息中包含哪些数据,即规定哪些数据能够被序列化为XML传输到客户端。数据协定用DataContract特性和DataMember特性来共同声明。
第八章-WCF和HTTP编程
1.编写基于C/S的HTTP应用程序时,有哪几种实现技术?各自的特点是什么?
(1).用可插接式协议实现
可插接式协议用WebRequest类和WebResponse类来实现。这两个类是各种与具体的通信协议相关的类的基类,提供了上传、下载等基本方法。或者说,不论采用的是哪种通信协议,都可以用这两个对来实现。(2).用HttpWebRequest和HttpWebResponse实现
HttpWebRequest类和HttpWebResponse类是针对HTTP而提供的,分别从WebRequest类和WebResponse类继承而来。(3).用WCF实现
用WCF和基于任务的编程模型实现HTTP应用编程是面向服务编程中建议的做法。- 前两种方式都是传统的编程模型,在实际项目中,如果用传统的编程模型来实现,除了业务处理之外,很多细节也都需要程序员自己去完成,例如负载平衡、网络监视、安全管理、防范攻击等。而用WCF来实现,程序员只需要处理业务逻辑即可,其他工作让WCF内部去完成就行了。
2.WCF客户端和服务端的消息交换模式有哪些?
- 请求/应答模式、单向模式、双工模式。
第九章-WCF和TCP编程
1.TCP有哪些主要特点?
(1) 一对一通信。一旦通信双方建立了TCP连接,连接中的任何一方都能向对方发送数据和接收对方发送来的数据。每个TCP连接只能有两个端点,而且只能一对一通信。
(2) 安全顺序传输。通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同。
(3) 通过字节流发送数据。利用TCP传输数据时,数据以字节流的形式进行传输。
(4)传输的数据无消息边界。
2.解决TCP的无消息边界问题有哪些常用的办法?
(1)发送固定长度的消息。
(2)将消息长度与消息一起发送。
(3)使用特殊标记分隔消息。3.简述基于任务的异步TCP编程和直接用Thread实现的主要区别。
- 直接用Thread来实现TCP编程时,是以多线程为目标来实现的,需要开发人员自己管理多线程,因此开发人员必须熟练掌握多线程实现的所有细节,才能编写出实际的TCP应用程序。而基于任务的异步TCP编程是通过任务来实现TCP编程,用多任务实现时,即使开发人员对多线程、线程池以及资源冲突和负载平衡等所有技术实现细节不太熟悉,一样可以快速编写出实际的TCP应用程序,而且程序的健壮性比直接用多线程来实现要高得多。
5. 简要回答用WCF编写TCP服务器端和客户端程序的一般步骤。
- 使用WCF编写TCP服务器端应用程序的一般步骤如下。
1)创建一个WPF应用程序,在项目中添加WCF服务。
2)在WCF服务接口文件中定义服务端与客户端通信的协定,并实现定义在服务端需要实现的协定方法。
3)修改服务端配置文件,并启动WCF服务,等待客户端调用并与客户端通信。
4)根据实际情况确定是否关闭WCF服务。 - 使用WCF编写TCP客户端端应用程序的一般步骤如下。
1)创建一个WPF应用程序,添加服务引用。
2)实现WCF服务定义在客户端需要实现的协定方法。
3)调用WCF服务,与服务端进行通信。
第十章-WCF和UDP编程
1. UDP和TCP的主要区别有哪些?
UDP是简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。与TCP一样,UDP也是构建于底层IP协议之上的传输层协议。与TCP相比,UDP具有以下特点。
(1)UDP不但支持一对一通信,而且支持一对多通信。
(2)UDP传输速度比TCP快。
(3)UDP有消息边界,使用UDP不需要考虑消息边界问题。
(4)UDP不确保数据的发送顺序和接收顺序一致。
(5)UDP可靠性不如TCP。2. 什么是广播?什么是多路广播?两者有什么区别?
-
广播是指同时向多个设备发送消息,并且所有子网中的设备都可以接收到发送方发来的消息。每个广播消息包含一个特殊的IP地址。广播消息地址分为两种类型:本地广播和全球广播。本地广播可以向子网中的所有设备发送广播消息,其他网络不会受到本地广播的影响。
-
多路广播是将消息从一台设备发送到本网或全网内选择的设备子集上,即发送到那些加入指定组播组的设备上。
-
二者区别:广播只能向其所在的子网内发送消息,而且是向子网中的所有设备发送消息,没有目的性,不但造成了网络负载,而且资源消耗较高。而多路广播是将消息发送到加入到特定组播组内的机器上,消息有目的性,资源消耗不高。
3. 简要回答利用UdpClient对象加入和退出多播组的步骤。
-
在UDP协议中,广播和组播的实现都是借助于特殊的IP地址实现的。特别是组播比较特殊。对于IPv4来说,多播是指在224.0.0.0到239.255.255.255的D类IP地址范围内进行广播。
-
加入多播组时,首选创建UdpClient对象,然后使用JoinMutiCastGroup方法加入组播组。当退出组播组时,使用UdpClient对象的DropMulticastGroup方法可以退出多播组,参数中指出要退出多播组的IPAddress对象。
4. 简要回答用WCF和UDP编写多播程序与用UdpClient类编写多播程序有哪些主要的不同点?这两种实现方式中,各自的优缺点有哪些?
-
使用UDP编写多播程序时,均需要将消息发送到特殊的IP地址。使用UdpClient类编写多播程序时,需要先加入到特定的多播组,然后才能接收来自多播发送端发送的数据。具体实现时主要是利用UdpClient类的JoinMutiCastGroup方法加入组播组,发送端利用UdpClient对象的Send方法发送数据到组播地址,接收端利用UdpClient对象的Receive方法接收数据。若要退出组播组调用DropMulticastGroup方法即可。
-
使用WCF和UDP编写多播程序时,需要使用WCF服务定义和实现通信的协定,然后向组播地址发送消息,这样凡是实现WCF服务定义和实现通信协定的客户端均可以接收到消息。
-
使用UdpClient类实现时,主要借助多线程和多任务来实现,易于理解,但是需要考虑较多的实现细节。而WCF模式对UDP多播编程进行了进一步的封装,降低了编程的复杂度,更适合分布式环境下的UDP通信程序。
-
GPU高性能编程CUDA实战
2017-11-01 08:37:45在构建高性能应用程序时,CUDA架构能充分发挥GPU的强大计算功能。《GPU高性能编程CUDA实战》首先介绍了CUDA架构的应用背景,并给出了如何配置CUDA C的开发环境。然后通过矢量求和运算、矢量点积运算、光线跟踪、热... -
danpianjidianzhen.rar_C#编程_C/C++_
2021-08-12 05:33:57LED点阵电子显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。本文介绍的是一种可用在值班室外等场合的公告牌的LED点阵电子显示屏设计。公告内容随时可以更新,能够实时显示... -
VxWork介绍及编程.doc
2020-01-07 16:41:10实时操作系统和分时操作系统的区别 从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。...实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。 -
1-Wire温度传感器的快速编程
2020-10-22 23:27:28一般来说,总线数越少,连接就越简单,因而串行总线嵌入式元件在许多应用场合颇受欢迎。但正因为只有1根线,该类元件的编程要紧扣硬件和时钟,难度大于I2C总线和SPI总线。本文以数字温度传感器DSl8B20为例,介绍一种... -
单片机定时中断的几种精确定时编程方法
2020-08-03 04:12:57MCS-51单片机的中断响应延迟时间,取决于其它中断...无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不 同的精确定时编程方法。 -
基于FPGA技术的存储器设计及其应用
2020-12-06 12:59:11FPGA具有的硬件逻辑可编程性、大容量、高速、内嵌存储阵列等特点使其特别适合于高速数据采集、复杂控制逻辑、精确时序逻辑等场合的应用。而应用FPGA中的存储功能目前还是一个较新的技术。本文将介绍在FPGA中构造... -
PSD913F2在一种电台中的应用
2020-12-10 05:50:43摘要:随着电路设计向着小型化的方向发展,PSD(Programmable System Devices)器件在各种场合的应用越来越多,已经有很多成型的产品出现;而且随着器件的更新换代,新的PSD器件也不断地涌现,可以满足绝大多数客户... -
1ms.rar_嵌入式/单片机/硬件编程_TEXT_
2021-08-12 06:09:47编程时,需要软件精确延时,可用于液晶显示等多种不同的短延时应用场合。 -
各种编程语言的适用场合-来自知乎
2016-09-29 14:04:30