新建azure的ServiceBus的中继服务

本文档分享了如何在世纪互联运营的Azure上创建ServiceBus中继服务的经验,强调不能通过工具创建,需通过代码API完成。详细介绍了从新建Azure账号到配置WCF服务和客户端的步骤,并提供了配置app.config文件的关键代码段,同时指出官方示例中的一些配置差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

花了一周时间才终于连上了,把点经验分享一下,大家就不用太蛋疼没资料了。

首先需要先去世纪互联运营的azure1块钱注册个账号,再新建个ServiceBus。

我们要连接的中继是不可以使用工具创建的,只能通过代码API来进行连接。

首先新建一个类库,来建立WCF所使用的协议,实现等。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace CommonEn
{
    [ServiceContract]
    public interface IProblemSolver
    {
        [OperationContract]
        int AddNumbers(int a, int b);
    }
    public interface IProblemSolverChannel : IProblemSolver, IClientChannel { }

    public class ProblemSolver : IProblemSolver
    {
        public int AddNumbers(int a, int b)
        {
            return a + b;
        }
    }
}

这个需要添加一个引用集。


好了。现在建立两个控制台项目,分别作为服务程序和客户端程序。我们需要先安装Nuget。这个自己弄去。在服务器项目引用上右键:选择管理Nuget程序包。在搜索栏输入Windows Azure Service Bus,安装排在第一的Microsoft Azure ServiceBus。


客户端也要安装。现在打开服务器的app.config文件,我们会发现多了好多东西。不用理它们。有强迫症的可以把它们折起来。在“/system.serviceModel”上面,我们加入下面的代码:

<services>
        <service name="CommonEn.ProblemSolver">
          <endpoint contract="CommonEn.IProblemSolver"
                    binding="netTcpRelayBinding"
                    address="sb://feiwusihao.servicebus.chinacloudapi.cn/solver"
                    behaviorConfiguration="sbTokenProvider"/>
        </service>
      </services>
      <behaviors>
        <endpointBehaviors>
          <behavior name="sbTokenProvider">
            <transportClientEndpointBehavior>
              <tokenProvider>
                <sharedAccessSignature keyName="RootManageSharedAccessKey" key="pLmSBt3TuWvgJUxtNcESNhR5VKHZrayvemNSJuzdzoo=" />
              </tokenProvider>
            </transportClientEndpointBehavior>
          </behavior>
        </endpointBehaviors>
      </behaviors>
key什么的我也不改了,大家好做一个参考。

在azure门户里找到这页:点击连接信息,把自己的信息粘出来。例如我的就是:Endpoint=sb://feiwusihao.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=pLmSBt3TuWvgJUxtNcESNhR5VKHZrayvemNSJuzdzoo=

对照着这个你应该就能看懂上面的配置文件什么意思了。把自己的改了就行。最重要的是在app.config下面还有这么一块。

<appSettings>
        <!-- Service Bus specific app setings for messaging connections -->
        <add key="Microsoft.ServiceBus.ConnectionString"
            value="Endpoint=sb://feiwusihao.servicebus.chinacloudapi.cn/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=pLmSBt3TuWvgJUxtNcESNhR5VKHZrayvemNSJuzdzoo="/>
    </appSettings>

这个最好全部粘贴覆盖,不要只改名称空间和key,这样你会连到国外去而失败。中国的域名里加了china。恶心吧。

现在开始main函数。

static void Main(string[] args)
        {
            ServiceHost sh = new ServiceHost(typeof(ProblemSolver));
            sh.Open();
            Console.WriteLine("Press ENTER to close");
            Console.ReadLine();
            sh.Close();
        }

如果你全部都照着做了,你再去门户中继那里,界面会是这样的:

这样就说明你的服务器成功了。

再配置客户端的config文件。

它与服务器的配置其它是一样的,只要把services节点换为client。如下:

<client>
        <endpoint name="solver" contract="CommonEn.IProblemSolver"
                  binding="netTcpRelayBinding"
                  address="sb://feiwusihao.servicebus.chinacloudapi.cn/solver"
                  behaviorConfiguration="sbTokenProvider"/>
</client>
现在再写客户端main函数:
static void Main(string[] args)
        {
            var cf = new ChannelFactory<IProblemSolver>("solver");
            var ch = cf.CreateChannel();
            Console.WriteLine(ch.AddNumbers(4, 5));          
        }

先启动服务器,不要关,再启动客户端,实验效果如下:
恭喜你,成功了!


代码参考了:http://www.windowsazure.cn/zh-cn/develop/net/how-to-guides/service-bus-relay/

示例的

issuerName="owner"
不对,需要修改,特别是config文件最下方还有个配置,那个文章根本没提。搞的晕乎乎的弄了半天还不知道错哪里了。

但是感觉那个有几个地方配置不大对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值