权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

第8章 C# .NET 开源可进行二次开发的即时通讯组件提供全部源码下载

2010-10-17 12:26  通用C#系统架构  阅读(11594)  评论(5编辑  收藏  举报

提供所有的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);
    }
}

 

可以与工作流、行政审批流程组件完美整合在一起,可参考地址如下:http://www.cnblogs.com/jirigala/archive/2010/10/08/1846195.html

多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】

 

 

相关数据库设计、源码等下载

    相关数据库设计免费下载:http://www.cnblogs.com/Files/jirigala/DotNet.DesignDocument.rar (PowerDesigner15格式)

    说明文档免费下载:http://www.cnblogs.com/Files/jirigala/handbookV3.0.pdf 

    相关视频免费下载:http://www.cnblogs.com/jirigala/archive/2010/09/16/1828482.html

 

 

一步步教你如何用疯狂.NET架构中的通用权限系统 -- 如何控制用户显示的菜单权限
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 在页面中的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 数据集权限的调用权限讲解
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分级管理
一步步教你如何用疯狂.NET架构中的通用权限系统 -- 分级授权

疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 操作权限
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 角色权限
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序源码下载之 --- 数据集权限

 

 

  

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友