InteilIM 1.0 设计文档 - 绪论(修订)

原创 2004年07月01日 00:47:00

1.1. 课题的来源和意义
目前即时通讯软件出于性能和用户群考虑,绝大多数基于 C++ 开发,用Java 开发的也有不少。随着即时通讯市场的升温和.NET 用户的日益增多,越来越需要一种运行在微软最新平台 - .NET 上的、能有效利用 .NET Framework 特性的即时通讯软件。本项目充分运用了.NET 平台的新成员 Visual C# 的诸多特性进行开发,程序全部采用 .NET 托管代码开发, 利用.NET Framework 提供的类库实现了局域网即时通讯软件的常用功能,并提供了诸如事件日志,用户反馈收集等创新功能。

1.2. 即时通讯软件的现状
现今即时通讯软件大致可分为如下几类:

l Internet 即时通讯软件

该类软件主要面向普通个人用户,提供诸如即时消息,互动娱乐,服务器提供商主要是门户网站和在线娱乐网站等。著名的软件主要有:Tencent QQ, MSN Messenger, AOL Instant Messenger, Yahoo Instant Messenger, 网易泡泡。

值得指出的是,该类软件中还有一部分软件是没有专属于自己的服务器的,而是借助其他即时通讯提供商的服务器来为用户服务,比如多协议软件 MyIM, IMU, Jabber。

l 局域网即时通讯软件

该类软件主要面向某个组织内的成员,用来提供内部员工的在线交流,组织内信息发布,电子邮件收发和辅助日常办公等。

l 企业即时通讯软件

该类软件则综合了上述两类软件的功能,实现企业内外个人和组织沟通与交流。

1.3. 程序中用到的C# 语言重要特性简介
1.3.1. 属性
属性是类、结构和接口的命名成员。它们提供了通过访问器读、写或计算私有字段值的灵活机制。

如下可定义一个名为 Name 的C# 属性,它包装了私有域 name.

 private string name;

 // A read-write instance property:

 public string Name

 {

 get

 {

 return name;

 }

 set

 {

 name = value;

 }

 }

1.3.2. 索引器
定义“索引器”使您可以创建作为“虚拟数组”的类。该类的实例可以使用 [] 数组访问运算符进行访问。在 C# 中定义索引器类似于在 C++ 中定义运算符 [],但前者灵活得多。对于封装类似数组的功能或类似集合的功能的类,使用索引器使该类的用户可以使用数组语法访问该类。

例如,假定您想定义一个类,该类使文件显示为字节数组。如果文件非常大,则将整个文件读入内存是不切实际的,尤其在您只想读取或更改少数字节时。通过定义 FileByteArray 类,您可使文件外观类似于字节数组,但读或写字节时,实际执行的是文件的输入和输出。

1.3.3. 委托
C# 中的委托类似于 C 或 C++ 中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与 C 或 C++ 中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。

委托声明定义一种类型,它用一组特定的参数以及返回类型封装方法。对于静态方法,委托对象封装要调用的方法。对于实例方法,委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象和一组适当的参数,则可以用这些参数调用该委托。

委托的一个有趣且有用的属性是,它不知道或不关心自己引用的对象的类。任何对象都可以;只是方法的参数类型和返回类型必须与委托的参数类型和返回类型相匹配。这使得委托完全适合“匿名”调用。

1.3.4. 事件
C# 中的“事件”是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当用户对控件进行某些操作(如单击某个按钮)时,将通知这些事件。

但是事件未必只用于图形界面。事件为对象提供一种通常很有用的方法来发出信号表示状态更改,这些状态更改可能对该对象的客户很有用。事件是创建类的重要构造块,这些类可在大量的不同程序中重复使用。

InteilIM 1.0 设计文档 - 理 论(修订)

1.理 论1.1. 客户/服务器模式应用程序的设计当前网络应用程序架构通常可分为客户-服务器模式,浏览器-服务器模式和P2P模式。在企业即时通讯系统中,为了信息的集中管理,采用客户-服务器模式比较适合...
  • greenland
  • greenland
  • 2004年07月01日 01:09
  • 1081

InteliIM 1.0 设计文档 - 概要设计和详细设计(修订)

1.概要设计和详细设计1.1.总体设计描述首先,为了使用客户端,必须正确配置好服务器的 IP 地址和端口号。当然,在客户端使用过程中可以随时修改服务器配置,并重新登陆。用已有的用户名和密码登陆服务器,...
  • greenland
  • greenland
  • 2004年07月01日 01:32
  • 3123

InteliIM 1.0 设计文档 - 软件功能和界面需求(修订)

?软件功能和界面需求1.软件功能和界面需求1.1.客户端程序1.1.1. 功能概述客户端程序主要负责提供图形化界面用于服务器程序通讯。1.1.2.用户界面设计l主窗体主窗体包含主菜单,顶部工具栏,底部...
  • greenland
  • greenland
  • 2004年07月01日 01:37
  • 2648

InteliIM 1.0 设计文档 - 全文总结与工作展望(修订)

全文总结与工作展望1.1. 主要成果经过一段时间的摸索和实践,完成了在.NET 平台下局域网即时通讯软件的初步设计,具有一般局域网即时通讯软件的基本功能,如用户管理,消息管理,联系人管理,P2P文本聊...
  • greenland
  • greenland
  • 2004年07月01日 01:25
  • 1286

word2007中快捷键的设置【接受修订】

在word2007中,点击Office按钮(左上角)。 选word选项=>自定义=>点击最下方的快捷键定义 在快捷键定义的对话框里选择审阅 选项卡,右边选AcceptChangeOrAdv...
  • guoquanyou
  • guoquanyou
  • 2016年11月23日 11:44
  • 2084

C# Word操作 "公文留痕" 之 修订操作者

1.Word自身的修订历史记录功能----------------------------a.打开和查看  Word-视图-工具栏-审阅   可以通过打开的审阅工具栏的相关功能 进行  “显示标记...
  • freeliver54
  • freeliver54
  • 2007年07月24日 09:59
  • 900

算法分析与设计论文

1 递归算法 1.1 递归算法的定义    程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。 1.2 递归算法的说明    一个过程或函数在其定义或说明中又直接或间接调用自...
  • chunyang_w
  • chunyang_w
  • 2017年11月09日 10:12
  • 210

KAFKA 1.0 文档(七):设计

设计 1动机 2持久化 不要害怕文件系统 恒定的时间复杂度 3效率 端到端的批量压缩 4生产者 负载均衡 异步发送 5消费者 推送 vs 拉取 消费位置 离线数据加载 6消息传递语义 7 复本 复制日...
  • memoordit
  • memoordit
  • 2017年12月25日 14:10
  • 53

数据挖掘学习笔记一:绪论

数据收集以及数据存储技术的提高,方便了人们收集到大量的数据,而传统的数据分析方法不能对海量的数据提取处有用的信息。再次背景下,新的数据挖掘技术诞生。数据挖掘作为一种技术,是将传统的数据分析方法与处理大...
  • H_dddlose
  • H_dddlose
  • 2016年11月06日 18:03
  • 101

引言,绪论 摘要,有什么区别呢?

引用自:http://www.cnblogs.com/lm002003/archive/2012/08/14/2637376.html 摘要的写法--------------------------...
  • u014717398
  • u014717398
  • 2017年03月15日 15:43
  • 574
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:InteilIM 1.0 设计文档 - 绪论(修订)
举报原因:
原因补充:

(最多只允许输入30个字)