zoukankan      html  css  js  c++  java
  • msmq

    Contract:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Contract
    {
        [ServiceContract(ConfigurationName = "IGreetingService")]
        public interface IGreetingService
        {
            [OperationContract(IsOneWay = true)]
            void SaveHello(string msg);
            [OperationContract(IsOneWay = true)]
            void SaveGoodBye(string msg);
    
        }
    
        [ServiceContract(ConfigurationName = "IGreetingService1",SessionMode =SessionMode.Required)]
        public interface IGreetingService1
        {
            [OperationContract(IsOneWay = true)]
            void SaveHello(string msg);
            [OperationContract(IsOneWay = true)]
            void SaveGoodBye(string msg);
    
        }
    }
    service
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
        </startup>
      <system.serviceModel>
        <bindings>
          <netMsmqBinding>
            <binding name="netmsmqbind1" exactlyOnce="true" useActiveDirectory="true" durable="true"  >
              <security mode="None" >
                
              </security>
            </binding>
          </netMsmqBinding>
        </bindings>
        <behaviors>
          <endpointBehaviors>
            <behavior name="batchingMessages">
              <transactedBatching maxBatchSize="22"/>
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <services>
          <service name="GreetingService">
            <endpoint address="net.msmq://localhost/private/queue4demo"  binding="netMsmqBinding" bindingConfiguration="netmsmqbind1" behaviorConfiguration="batchingMessages"
            contract="IGreetingService" />
          </service>
          <service name="GreetingService1">
            <endpoint address="net.msmq://localhost/private/queue4demo"  binding="netMsmqBinding" bindingConfiguration="netmsmqbind1" 
            contract="IGreetingService1" />
          </service>
        </services>
      </system.serviceModel>
    </configuration>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ServiceModel;
    using System.Messaging;
    using Contract;
    using System.Data.Common;
    using System.Transactions;
    namespace ConsoleApplication1
    {
    
        /// <summary>
        /// //behaviorConfiguration="batchingMessages" 应用了batchingMessages(事务处理批处理要求),下面的ReleaseServiceInstanceOnTransactionComplete要设置为false,默认为true
        /// </summary>
        [ServiceBehavior(ConfigurationName = "GreetingService",ReleaseServiceInstanceOnTransactionComplete =false)]
        public class GreetingService : IGreetingService
        {
            [OperationBehavior(TransactionScopeRequired =true)]
            public void SaveHello(string msg)
            {
                Console.WriteLine(msg+" "+Transaction.Current.TransactionInformation.DistributedIdentifier);
            }
    
            [OperationBehavior(TransactionScopeRequired = true)]
            public void SaveGoodBye(string msg)
            {
                Console.WriteLine(msg +" "+ Transaction.Current.TransactionInformation.DistributedIdentifier);
            }
        }
    
        [ServiceBehavior(ConfigurationName = "GreetingService1", TransactionAutoCompleteOnSessionClose = true)]
        public class GreetingService1 : IGreetingService1
        {
            [OperationBehavior(TransactionScopeRequired = true,TransactionAutoComplete =false)]
            public void SaveHello(string msg)
            {
                Console.WriteLine(msg + " " + Transaction.Current.TransactionInformation.DistributedIdentifier);
            }
    
            [OperationBehavior(TransactionScopeRequired = true,TransactionAutoComplete =false)]
            public void SaveGoodBye(string msg)
            {
                Console.WriteLine(msg + " " + Transaction.Current.TransactionInformation.DistributedIdentifier);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                #region 1
                //string queueName = @".private$queue4demo";
                //MessageQueue.Delete(queueName);
                //if (!MessageQueue.Exists(queueName))
                //    MessageQueue.Create(queueName, true);//第二参数代表是否是事务性队列,如果是那么binding.ExactlyOnce要设置为true,否则非事务性对要设置为false
                //using (ServiceHost host = new ServiceHost(typeof(GreetingService)))
                //{
                //    var binding = new NetMsmqBinding(NetMsmqSecurityMode.Message);
                //    binding.ExactlyOnce = true;
                //    //host.AddServiceEndpoint("IGreetingService",binding , "net.msmq://localhost/private/queue4demo");
                //    host.Open();
                //    Console.WriteLine("寄宿服务成功");
                //    Console.ReadKey();
                //} 
                #endregion
    
                #region 2
                string queueName = @".private$queue4demo";
                MessageQueue.Delete(queueName);
                if (!MessageQueue.Exists(queueName))
                    MessageQueue.Create(queueName, true);//第二参数代表是否是事务性队列,如果是那么binding.ExactlyOnce要设置为true,否则非事务性对要设置为false
                using (ServiceHost host = new ServiceHost(typeof(GreetingService1)))
                {
                    var binding = new NetMsmqBinding(NetMsmqSecurityMode.Message);
                    binding.ExactlyOnce = true;
                    //host.AddServiceEndpoint("IGreetingService",binding , "net.msmq://localhost/private/queue4demo");
                    host.Open();
                    Console.WriteLine("寄宿服务成功1");
                    Console.ReadKey();
                }
                #endregion
                Console.WriteLine("");
               
            }
        }
    }
    client
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
        </startup>
      <system.serviceModel>
        <bindings>
          <netMsmqBinding>
            <binding name="bindWithNoneSecurityMode">
              <security mode="None">            
              </security>
            </binding>
          </netMsmqBinding>
        </bindings>
        <client>
          <endpoint name="GreetingService" address="net.msmq://localhost/private/queue4demo"  binding="netMsmqBinding" bindingConfiguration="bindWithNoneSecurityMode" contract="IGreetingService">
            
          </endpoint>
          <endpoint name="GreetingService1" address="net.msmq://localhost/private/queue4demo"  binding="netMsmqBinding" bindingConfiguration="bindWithNoneSecurityMode" contract="IGreetingService1">
    
          </endpoint>
        </client>
      </system.serviceModel>
    </configuration>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.ServiceModel;
    using Contract;
    using System.Transactions;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                #region 1
                //using (ChannelFactory<IGreetingService> ChannelFactory = new ChannelFactory<IGreetingService>("GreetingService"))
                //{
                //    IGreetingService proxy = ChannelFactory.CreateChannel();
                //    proxy.SaveHello("foo");
                //    proxy = ChannelFactory.CreateChannel();
                //    proxy.SaveGoodBye("bar");
                //    proxy = ChannelFactory.CreateChannel();
                //    proxy.SaveHello("foo");
                //    proxy = ChannelFactory.CreateChannel();
                //    proxy.SaveGoodBye("bar");
                //    Console.Read();
                //}
                #endregion
    
                #region 2
                using (ChannelFactory<IGreetingService1> ChannelFactory = new ChannelFactory<IGreetingService1>("GreetingService1"))
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        IGreetingService1 proxy = ChannelFactory.CreateChannel();
                        proxy.SaveHello("hello1");
                        proxy.SaveGoodBye("goodbye1");
                        ((ICommunicationObject)proxy).Close();
                        scope.Complete();
                    }
                }
                #endregion
            }
        }
    }
  • 相关阅读:
    正则表达式
    Ajax跨域问题---jsonp
    Ajax
    字符串总结
    js 字符串加密
    jsDate()
    HDU 5430 Reflect
    HDU 5429 Geometric Progression
    HDU 5428 The Factor
    POJ 2485 Highways
  • 原文地址:https://www.cnblogs.com/kexb/p/8545996.html
Copyright © 2011-2022 走看看