ASP教程 PHP教程 JSP教程 CGI教程 XML教程
  • ASP.NET教程
  • JAVA教程
    当前位置:教程 > 程序设计 > ASP.NET教程 > 正文

    C#:消息队列应用程序

    编辑:教程网 来源:网络 时间:2011年06月19日 16:45
    摘要:本文概述一种用于处理若干消息队列的 Windows 服务解决方案,重点介绍 .NET 框架和 C# 应用程序。

    下载 CSharpMessageService.exe 示例文件 (86 KB)

    目录
    简介
    .NET 框架应用程序
    应用程序结构
    服务类
    检测设备
    安装
    总结
    参考资料

    简介
    Microsoft 近期推出了一种用于生成集成应用程序的新平台——Microsoft .NET 框架。.NET 框架允许开发人员使用任何编程语言迅速生成和部署 Web 服务和应用程序。Microsoft Intermediate Language (MSIL) 和实时 (JIT) 编译器使这种不依赖语言的框架得以实现。

    与 .NET 框架同时面世的还有一种新的编程语言 C#(读作“C sharp”)。C# 是一种简单、新颖、面向对象和类型安全的编程语言。利用 .NET 框架和 C#(除 Microsoft® Visual Basic® 和 Managed C++ 之外),用户可以编写功能强大的 Microsoft Windows® 和 Web 应用程序及服务。本文提供了这样的一个解决方案,它的重点是 .NET 框架和 C# 而不是编程语言。C# 语言的介绍可以在“ C# 简介和概述(英文)”找到。

    近期的文章“MSMQ:可伸缩、高可用性的负载平衡解决方案(英文)”介绍了一种解决方案,用于高可用性消息队列 (MSMQ) 的可伸缩负载平衡解决方案体系结构。此解决方案中涉及了一种将 Windows 服务用作智能消息路由器的开发方案。这样的解决方案以前只有 Microsoft Visual C++® 程序员才能实现,而 .NET 框架的出现改变了这种情况。从下面的解决方案中,您可以看到这一点。

    .NET 框架应用程序
    这里介绍的解决方案是一种用来处理若干消息队列的 Windows 服务;其中每个队列都是由多个线程进行处理(接收和处理消息)。处理程序使用循环法技术或应用程序特定值(消息 AppSpecific 属性)从目的队列列表中路由消息,并使用消息属性来调用组件方法。(示例进程也属于这种情况。)在后一种情况下,组件的要求是它能够实现给定的接口 IWebMessage。要处理错误,应用程序需要将不能处理的消息发送到错误队列中。

    消息应用程序的结构与以前的活动模板库 (ATL) 应用程序相似,它们之间的主要不同在于用于管理服务的代码的封装和 .NET 框架组件的使用。要创建 Windows 服务,.NET 框架用户仅仅需要创建一个从 ServiceBase(来自 System.ServiceControl 程序集)继承的类。这毫不奇怪,因为 .NET 框架是面向对象的。

    应用程序结构
    应用程序中主要的类是 ServiceControl,它是从 ServiceBase 继承的。因而,它必须实现 OnStart 和 OnStop 方法,以及可选的 OnPause 和 OnContinue 方法。事实上,类是在静态方法 Main 内构造的:

    using System;
    using System.ServiceProcess;

    public class ServiceControl: ServiceBase
    {
    // 创建服务对象的主入口点
    public static void Main()
    {
    ServiceBase.Run(new ServiceControl());
    }

    // 定义服务参数的构造对象
    public ServiceControl()
    {
    CanPauseAndContinue = true;
    ServiceName = "MSDNMessageService";
    AutoLog = false;
    }

    protected override void OnStart(string[] args) {...}
    protected override void OnStop() {...}
    protected override void OnPause() {...}
    protected override void OnContinue() {...}
    }

    ServiceControl 类创建一系列 CWorker 对象,即,为需要处理的每个消息队列创建 CWorker 类的一个实例。根据定义中处理队列所需的线程数目,CWorker 类依次创建了一系列的 CWorkerThread 对象。CWorkerThread 类创建的一个处理线程将执行实际的服务工作。
  • 原文来自 教程网 转载请注明:http://www.websmill.com/chengxu/aspnet/5181.html

  • 上一篇:ASP.NET生成n位不同的验证码
  • 下一篇:坚持学asp.net——(六)