偶正在做一个工作流的项目,需要设计并开发其中的消息服务部分,也就是要做出一个比较完善的消息服务的接口。但是因为没有经验,感觉比较困难,至今也没有什么头绪,希望有这方面经验的各位高手能稍微指点一下,不胜感激!

解决方案 »

  1.   

    看一些关于消息队列的文章,或许对你有所帮助。Good Luck!
      

  2.   

    首先谢谢各位的热心询问。
    概括的来说,是需要设计一个消息头,用于存放消息的连接线索;一个消息包,用于存放数据信息。创建消息的人和接收消息的人可以是异构的,最后将消息推送出去(要用到push技术)。消息产生的时机可能是有新任务待处理的时候(提醒)、任务快到期的时候(催办)、工作超时的时候(提醒)等等。消息的信道可能有很多种,比如邮件、客户端任务提醒软件、短信通知等。
    我是如实转述了Leader的要求,可能也有理解不准确的地方。
    我手里有一个java的消息服务源码,应该实现的功能就能满足我的要求了。可是那里面用到的一些函数都是java特有的,用C#能否实现还是未知!
      

  3.   

    高难度,以前朋友做过java的,说是用到windows的消息队列。关注。
      

  4.   

    技术交流群号:23266021
    欢迎大家在此讨论关于.net的各种技术。1号群
      

  5.   

    MSMQ不知道能用否。以前的MIS系统客户也提出过要求。但就是最了给最简单的。没做全做好。关注学习拉。
      

  6.   

    去工作流的官方网站看看
    http://wf.netfx3.com/
      

  7.   

    每次Application_Start的时候,系统都会分一个线程给用户。
    我们就可以用这个线程,来专门处理一些东西,比如消息提示。
    在global文件中:
    protected void Application_Start(Object sender, EventArgs e)
    {
        atoa.SubModule.Schedule.ScheduleService.statrSchedule();
    }
    在atoa.SubModule.Schedule.ScheduleService中:
    public static Thread oThread;
    protected Database data;
    private ScheduleService()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    if(oThread!=null) oThread.Abort();
    oThread = new Thread(new ThreadStart(CheckStatus));
    oThread.Name=System.Guid.NewGuid().ToString();
    oThread.Start();
    atoa.Components.Error.Log(this,"ScheduleService Start");
    }
    public static ScheduleService getInstance(){
    if(inst==null) inst=new ScheduleService();
    return inst;
    }
    public static void statrSchedule(){
    getInstance();
    }
    public void CheckStatus(){

    while(true){
    try
    {
    procAwakeMail();
    }
    catch(Exception ex)
    {
    }procAwakeMail();
    {
        //在这个函数里检查是否有过期未读的邮件
        SqlDataAdapter sda=data.getAdapter("select * from tabMailList where readBefor<'"+time+"' and lastRemindDate<>'"+time+"' and mailfoldertype=1");
    DataTable table=new DataTable();
    sda.Fill(table);
    SMS sms=new SMS();
    if(table.Rows.Count>0)
    {
    foreach(DataRow row in table.Rows)
    {
    sms.SendMsg("System",row["mailreceiver"].ToString(),"有邮件["+row["MailSubject"]+"]到期未读",1,System.DateTime.Now,"",0,0);
    row["lastRemindDate"]=time;
    }
             }
    }