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

2019-04-13 20:38发布

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# 中的“事件”是当对象发生某些有趣的事情时,类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当用户对控件进行某些操作(如单击某个按钮)时,将通知这些事件。
但是事件未必只用于图形界面。事件为对象提供一种通常很有用的方法来发出信号表示状态更改,这些状态更改可能对该对象的客户很有用。事件是创建类的重要构造块,这些类可在大量的不同程序中重复使用。