C#消息队列应用程序 -1

2016-01-29 13:56 2 1 收藏

C#消息队列应用程序 -1,C#消息队列应用程序 -1

【 tulaoshi.com - ASP.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属性)从目的队列列
表中路由消息,并使用消息属性来调用组件方法。(示例进程也属于这种
情况。)在后一种情况下,组件的要求是它能够实现给定的接口IWeb
Message要处理错误,应用程序需要将不能处理的消息发送到错误队列中。

  消息应用程序的结构与以前的活动模板库(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
类创建的一个处理线程将执行实际的服务工作。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

  使用 CWorker和 CWorkerThread类的主要目的是确认服务控件 Start、
Stop、Pause 和 Continue 命令。因为这些进程必须是无阻塞的,命令操
作最终将在后台处理线程上执行。

  CWorkerThread 是一个抽象类,被 CWorkerThreadAppSpecific 、
CWorkerThreadRoundRobin 和 CWorkerThreadAssembly继承。这些类以不
同的方式处理消息。前两个类通过给另一队列发送消息来处理消息(其不
同之处在于确定接收队列路径的方式),最后一个类则使用消息属性来调
用组件方法。

  .NET 框架内部的错误处理是以基类 Exception为基础的。当系统引
发或捕获错误时,这些错误必须是从 Exception中导出的类。CWorker
ThreadException 类就是这样一种实现,它通过附加额外属性(用于定义
服务是否应继续运行)来扩展基类。

  最后,应用程序包含两种结构。这些值类型定义了辅助进程或线程的
运行时参数,以简化 CWorker和 CWorkerThread对象的结构。使用值类型
结构(而不是引用类型类)能够确保这些运行时参数维护的是数值(而不
是引用)。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

IWebMessage 接口

  CWorkerThread 的实现之一是一个调用组件方法的类。这个名为
CWorkerThreadAssembly 的类使用 IWebMessage接口来定义服务和组件之
间的约定。

  与当前版本的 Microsoft Visual Studio?不同,

来源:https://www.tulaoshi.com/n/20160129/1492027.html

延伸阅读
本文主要介绍用C# Builder通过ODBC访问数据。并将数据导出到Excel,下面以C# Builder Enterprise+Microsoft Access 2000+Microsoft Excel 2000为例。 1.建立数据库mydb,内建表:联系人 联系人ID 名字 姓氏 地址 城市 省份 [ 相关贴图 ] 2.建立ODBC(mydb) 3.编写程序 点击菜单 Fil...
    C++ Builder提供了所有开始设计应用程序所必需的工具: · 一个称为“窗体”的空白窗口,作为用于设计应用程序的用户界面。 · 一个包容许多可重用的对象的扩展的类库。 · 一个对象观察器,用于检查和改变对象的特性。 · 用于直接访问基本程序逻辑的源代码编辑器。 ·一个可以治理多个工程...
VS.net本身并不提供智能设备(如PDA)应用程序的柱形图,开发智能设备应用程序时VS.net并不象Window应用程序那样提供用户自定义控件。在本文中,您将创建一个以柱形图显示的 PDAChartControl自定义控件。还将创建一个使用此 PDAChartControl自定义控件的智能设备应用程序。为了完成开发工作,您将执行这些过程: 创建该 PDAChartContro...
简介: 框架是一种定制的通用的应用程序开发基础软件,在其基础上可以开发完整的关且功能完善的软件。在最近几年里,已经成功实现了某些应用领域的开发框架,比如说用户介面开发及数据访问开发等。如果能成功的开发出一个框架,这将是一个突破,因为这意味着开发将不再从头开始实现某个功能:比如一个框架如果可以成功的生成一个用户介...
只要你的程序中Main入口是如下的,则你的程序在运行时,在一个时刻只能有一个程序实例,比如Winamp就是这种,当它在运行时,再又击这个程序,是不会再运行一个实例的. 代码很简单 [STAThread] static void Main(string[] args) { bool isExist; System.Threading.Mutex mutex=new System.Threading.Mutex(true,"myApp",out isExist)...

经验教程

293

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部