扩展方法检测客户端队列是否存在

public static class QeuedServiceHelper
    {
        public static void VerifyQeues()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration
                (ConfigurationUserLevel.None);
            ServiceModelSectionGroup  group=ServiceModelSectionGroup.GetSectionGroup(config);
            foreach(ChannelEndpointElement endPoint in group.Client.Endpoints )
            {
                if (endPoint.Binding == "netMsmqBinding")
                {
                    string queue = GetQueueFromUri(endPoint.Address);
                    if (MessageQueue.Exists(queue) == false)
                    {
                        MessageQueue.Create(queue);
                    }
                }
            }
        }
    }
}

使用ConfigurationManager提供了类型安全的方法来解析配置文件。它会加载WCF的配置数据(在ServiceModel     SectionGroup里),然后遍历所有的终结点。对于每个使用MSMQ绑定的终结点,VerifyQueue()会在必要时创建队列

 

以上方法也可以简化为:

            QeuedServiceHelper.VerifyQeues();
            MyContractClient proxy = new MyContractClient();
            proxy.MyMeThod();
            proxy.close();

应该注意的是客户端在发出队列调用之前调用QeuedServiceHelper.VerifyQeues(); 一次

时间: 2024-10-10 04:00:58

扩展方法检测客户端队列是否存在的相关文章

系统可扩展设计方法之消息队列

消息队列在现在各种系统中都有广泛的应用,除非你做的就是一个单独的工具或小软件, 否则稍大点的系统都会用到消息队列,它对系统的可扩展性很重要.它基于这样的事实,如果系统的各个模块之间的协作不是通过直接的调用关系来实现的,那么系统的可扩展性就一定会更好. 系统各个模块之间只是通过消息队列来传输事件消息,而各模块之间并没有直接的调用关系.保持松散的耦合关系. 事件驱动架构最典型的一个应用就是操作系统中常见的生产者和消费者模式,将其应用到网站设计中就是分布式消息队列. 分布式消息队列同样采用了生产者和消

C#原始类型扩展方法—this参数修饰符

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩

项目中遇到的扩展方法-总结和分享

概述: 本篇是对工作中遇到的扩展方法的总结,好记性不如乱笔头,先记下来,以后遇到类似问题,如果忘了,可以看下博客. 一.问题描述: 在项目中遇到一个问题,就是要将左边的代码替换为右边的代码,右边代码是对左边代码的封装,所以右边的代码更简便些. dataReader.IsDBNull(2) ? (string)null : dataReader.GetString(2).Trim(); dataReader.MyGetDataString(2); dataReader的类型是System.Data

扩展方法(为那些已经写好不能修改源码的类添加方法)

参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-and-call-a-custom-extension-method 本主题介绍如何实现 .NET Framework 类库 中任意类型的扩展方法,或是你想要扩展的任何其他 .NET 类型. 客户端代码可以通过以下方法使用扩展方法,添加包含这些扩展方法的 DLL 的引用,以及添加 usin

c#扩展方法-摘自msdn

扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.  对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法编写代码: namespace ExtensionMethods { public static class MyExtensions { public static int WordCoun

C#激爽特性——扩展方法

在最近的学习中,发现了一种用起来特别爽的C#特性——扩展方法,之前拜读<大话设计模式>一书的时候,书中提到这样一句话:“反射,反射,程序员的快乐”,本人菜鸟一只,到现在还未曾使用过反射,对于其是否真的快乐自然无从体会,不过扩展方法用起来称得上是相当快乐! 扩展方法使你能够向现有类型”添加“方法,而无需创建新的派生类型.重新编译或以其他方法修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实力方法一样进行调用.对于C#和Visual Basic 编写的客户端代码,调用扩展方法与调用

【开源】OSharp框架解说系列(3):扩展方法

〇.前言 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable 和 System.Collections.Generic.

C#中自定义扩展方法

在C#中,我们在不写子类的情况下,可以为类增加扩展方法,前提的被扩展的类不能使静态类. 步骤如下:   定义一个静态 类以包含扩展方法.该类必须对客户端代码可见. 有关可访问性规则的更多信息,请参见 访问修饰符(C# 编程指南). 将该扩展方法实现为静态方法,并使其至少具有与包含类相同的可见性. 该方法的第一个参数指定方法所操作的类型:该参数必须以 this 修饰符开头. 在调用代码中,添加一条 using 指令以指定包含扩展方法类的 命名空间. 按照与调用类型上的实例方法一样的方式调用扩展方法

扩展方法的理解(个人愚见)

在 aspx 中由于没有用到服务器控件,就没有 __VIEWSTATE 这个asp.net产生的 隐藏域 保存在浏览器(客户端),IsPostBack 就无法使用了.但又要判断是否用户请求了页面,但又因 IsPostBack 无法使用了,这时我们是不是考虑自己手写一个方法~ 由于会有多个页面会用到 IsPostBack 方法,这时就考虑封装. 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例