全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
消息队列 MQ

.NET SDK 环境准备

更新时间:2018-01-23 21:00:17

用 .NET SDK 方式接入 MQ,需要完成以下准备工作。

注意:

  • 代码里涉及到的 Topic, Producer ID, Consumer ID,需要到 MQ 控制台上创建。 Message Tag 可以完全由应用自定义,具体创建过程可参考 创建资源

  • 使用 MQ 服务的应用程序需要部署在阿里云 ECS 上。

下载 SDK

Windows .NET 版本:

我们提供的.NET 版本是基于 MQ CPP 版本的托管封装,这样能保证 .NET 完全不依赖于 Windows .NET 公共库,内部采用 C++ 多线程并发处理,保证.NET 版本的高效稳定。

在使用 VS 开发 .NET 的应用程序和类库时,默认的目标平台为 “Any CPU”,即运行时可根据 CPU 类型自动选择 X86 或 X64。拥有这样的能力是因为 .NET 编译后的程序集是基于 IL 的。在运行时,CLR 才会将其 JIT 发射为 X86 或 X64 的机器码。而 C 或 C++ 编译生成的 DLL 就是机器码。所以,其平台的决策是在编译时决定的。通过编译选项的设置,我们将 C/C++ 项目编译为 X86 的32位 dll 或者 X64 的 64 位 dll,因此我们提供了包含 VS2015 编译的 release64 位版本 DLL。其他 VS 版本也可以使用。

旧版 Windows .NET SDK 下载

注意:

  • 基于托管封装的 SDK 存在诸多问题,并且无法稳定在 ASP.NET 上正常工作,因此在2016/12/29号开始推出新版本的 SDK。
  • 新版 SDK 基于 C# PINVOKE 调用底层的 dll,利用开源软件 SWIG 生成 PINVOKE 封装代码。新版 SDK 相比于托管版本的 SDK 更稳定,部署安装更简单。
  • 托管版本的 SDK 不再维护,只提供最后一次的稳定版本。

新用户或者不考虑升级成本的老用户请下载新版 SDK

新版 Windows .NET SDK 下载

下载完成后进行解压,会有如下目录结构:

  • example/
  • lib/
  • demo/
  • interface/
  • SDK_GUIDE.pdf
  • changelog

上面的目录和文件的作用如下:

  • example: 包含了普通消息发送、Oneway 消息发送、顺序消息发送、普通消息消费、顺序消息消费等例子。

  • lib:底层的 C++ DLL 相关文件,以及 Virtual C++ 2015 运行时环境安装包。

      64/
          NSClient4CPP.lib
          ONSClient4CPP.dll
          ONSClient4CPP.pdb
      vc_redist.x64.exe
    
  • SDK_GUIDE.pdf: SDK 环境准备文档和 FAQ。

  • changelog: 新版本发布解决的问题和引入的新特性列表。

  • inteface: 封装 PINVOKE 调用的代码,需要包含到用户项目代码中。

NET SDK 配置说明

Visual Studio 2015 使用 .NET SDK 配置说明

  1. 使用 Visual Studio 2015 创建自己的项目。

    net1

  2. 右键单击项目选择添加>现存在项 将下载的 SDK 中的 interface 目录下的所有文件都添加进去。

    net2

  3. 右键单击项目选择属性,选择配置管理器。设置活动解决方案配置release;设置活动解决方案平台x64

  4. 编写测试程序,然后进行编译,最后将 SDK 下的 dll 放到和可执行文件同一级目录下,或者系统目录下即可运行。

    net3

    说明:

    SDK 提供了设置好的 Demo,直接打开工程进行编译即可。运行的时候将相关的 DLL 文件拷贝到和可执行文件同级目录下,如下图:

    net

Visual Studio 2015 配置 ASP.NET 使用 MQ SDK

  1. 使用 VS2015 创建一个 ASP.NET 的 Web Forms 项目。

    aspnet_1

  2. 右键单击项目选择属性,选择配置管理器。设置活动解决方案配置release;设置活动解决方案平台x64

    aspnet_2

  3. 右键单击项目选择添加>现存在项,将下载的 SDK 中的 interface 目录下的所有文件都添加进去。

    请参考上文中配置普通的 .net 项目的步骤 2。

  4. Global.asax.cs 文件中添加启动和关闭 SDK 的代码。

    注意:

    建议将 SDK 的代码封装成一个单例类,这样可以避免因为作用域的问题被垃圾回收器回收。SDK 的 example 目录下提供了一个 Example.cs,实现了一个简单的单例实现。您需要把 Example.cs 包含到自己的项目中才能使用。

    sing System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Optimization;
    using System.Web.Routing;
    using System.Web.Security;
    using System.Web.SessionState;
    using ons;    // 这个命名空间是 SDK 所在的命名空间
    using test;    // 这是一个简单封装 SDK 的类所在命名空间,见 SDK 的 example 目录下的 Example.cs
    namespace WebApplication4
    {
        public class Global : HttpApplication
        {
            void Application_Start(object sender, EventArgs e)
            {
                // Code that runs on application startup
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                try
                {
                    // 启动 SDK 的代码,下面是简单封装 SDK 后的代码
                    OnscSharp.CreateProducer();
                    OnscSharp.StartProducer();
                }
                catch (Exception ex)
                {
                        //处理异常
                }
            }
            protected void Application_End(object sender, EventArgs e)
            {
                try
                {
                   // 关闭 SDK 的代码
                  OnscSharp.ShutdownProducer();
                }
                catch (Exception ex)
                { 
                  // 处理异常
                }
            }
        }
    }
    
  5. 编写测试程序,然后进行编译。

  6. 将 SDK 下的 dll 放到和可执行文件同一级目录下,或者系统目录下即可运行。

    dll 部署

  7. 依次点击工具>选项>项目和解决方案>Web 项目,然后勾选对网站和项目使用 IIS Express 的 64 位版。

    iis_1

    iis_2

本文导读目录