提供所有的C# .NET相关源码并提供一年的技术服务,有需要的可以在淘宝上购买,淘宝上的购买地址为 http://jirigala.taobao.com/

 

即时通讯功能主要是为了实现管理系统的通知信息能即时发送给相应的用户账户,为了实现即时高效的通知功能。虽然与真正的商业化的即时通讯软件无法匹敌,但是往往内部个性化的管理系统,还是需要即时通知、即时沟通的需要。

 

虽然简易的及时通讯组件开发起来并不是很难,但是估计需要一个熟练的开发人员足足开发调试1周时间才能开发好,还要需要在接下来的时间里调试1个月左右才能真正投入生产环境里应用,接下来可能还会发现一些细节上的问题等,不断改进才能逐渐稳定下来,若有一个运行稳定的、编码质量良好的即时通讯组件,那很可能只要花费几天时间就可以应用到实际产生环境里了,省心省事一些。

 

消息组件需要几个核心的问题处理:

1:多线程编程、需要不影响客户的操作,能平滑提醒是否有新消息等。

2:与其他在线人员的沟通等,都需要在同一个窗口里提示。

3:同时可以跟多个人在线交流,而不只是只能跟一个人交流。

4:有个良好的表结构设计比较好,表结构不稳定,变来变去,整个组件就没稳定的时候了。  

 

本组件还可以做为C# .NET学习入门爱好者参考提高程序开发能力用、同时本组件跟整套的通用权限管理解决方案是有机的融为一体,整体功能组合在一起就很强大了。

8.1 发送消息

可以通过发送消息功能菜单,给系统的中的用户账户发送即时消息,若对应的用户在线状态或者登录了管理系统的页面,都应该能及时显示出来站内的即时消息。

 

 

 

8-1-1 发送信息菜单

 

 

 

8-1-2 发送信息窗口

 

进入发送信息窗口后,可以选择发送的对象,按选择按钮弹出选择用户账户的窗口,选择好目标用户账户。输入内容后点发送(S)按键后,即时信息就可以发送给相应的用户账户,支持同时发送给多个用户账户即批量发送信息功能。

 

 

 

8-1-3 选择用户账户窗口

 

8.2 即时通讯

 

 

8-2-1 即时通讯

 

可以通过双击系统图标,出现当前的系统中的内部组织架构图,可以直接选择组织机构中的用户账户、直接发送消息,设置用户的账户的权限等。

若有在线消息出来,可以直接弹出消息,也可以直接回复消息,用户的在线状态会时时更新,与QQMSN的在线状态很类似。

 

 

 

8-2-2 即时信息回复

上图为回复及时信息的功能效果图。

 

8.3 即时通讯二次开发接口说明  

代码
// ------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 
// ------------------------------------------------------------

using  System.Data;
using  System.ServiceModel;

namespace  DotNet.IService
{
    
using  DotNet.Utilities;
    
using  DotNet.Model;

    
///   <summary>
    
///  IMessageService
    
///  即时通讯组件接口
    
///  
    
///  修改纪录
    
///  
    
///         2010.10.17 版本:1.1 JiRiGaLa 整理接口函数注释。
    
///         2008.04.15 版本:1.0 JiRiGaLa 创建主键。
    
///         
    
///  版本:1.1
    
///
    
///   <author>
    
///          <name> JiRiGaLa </name>
    
///          <date> 2008.04.15 </date>
    
///   </author>  
    
///   </summary>
    [ServiceContract]
    
public   interface  IMessageService
    {
        
///   <summary>
        
///  获得内部部门(公司的组织机构)
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <returns> 数据表 </returns>
        [OperationContract]
        DataTable GetInnerOrganize(BaseUserInfo userInfo);

        
///   <summary>
        
///  发送即时消息
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <param name="receiverID"> 接收者主键 </param>
        
///   <param name="content"> 内容 </param>
        
///   <returns> 主键 </returns>
        [OperationContract]
        
string  Send(BaseUserInfo userInfo,  string  receiverId,  string  content);

        
///   <summary>
        
///  批量发送即时消息
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <param name="receiverIds"> 接收者主键组 </param>
        
///   <param name="organizeIds"> 组织机构主键组 </param>
        
///   <param name="roleIds"> 角色主键组 </param>
        
///   <param name="messageEntity"> 消息实体 </param>
        
///   <returns> 影响行数 </returns>
        [OperationContract]
        
int  BatchSend(BaseUserInfo userInfo,  string [] receiverIds,  string [] organizeIds,  string [] roleIds, BaseMessageEntity messageEntity);

        
///   <summary>
        
///  获取消息状态
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <param name="lastChekDate"> 最后检查时间 </param>
        
///   <returns> 消息状态数组 </returns>
        [OperationContract]
        
string [] MessageChek(BaseUserInfo userInfo,  string  lastChekTime);

        
///   <summary>
        
///  获取用户的新信息
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <returns> 数据表 </returns>
        [OperationContract]
        DataTable GetDTNew(BaseUserInfo userInfo);

        
///   <summary>
        
///  获取特定用户的新信息
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <param name="receiverID"> 当前交互的用户 </param>
        
///   <returns> 数据表 </returns>
        [OperationContract]
        DataTable ReadFromReceiver(BaseUserInfo userInfo, 
string  receiverId);

        
///   <summary>
        
///  阅读短信
        
///   </summary>
        
///   <param name="userInfo"> 用户 </param>
        
///   <param name="id"> 主键 </param>
        [OperationContract]
        
void  Read(BaseUserInfo userInfo,  string  id);
    }
}

 

 

 

  

 

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。