《程序员的第一年》---------- 消息队列与Cookie相关整理

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cookie的增删改查
{
    /// <summary>
    /// Cookie 通常限制为 4096 字节,并且每个站点最多可存储 20 个 Cookie
    /// </summary>
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// Cookie的添加
        /// 第一个 Cookie,Cookies 集合的值是直接设置的。
        /// 可以通过这种方式向集合添加值,因为 Cookies 
        /// 是从 NameObjectCollectionBase 类型的专用集合派生的 
        /// </summary>
        protected void OneCookie()
        {
            Response.Cookies["UserName"].Value = "xiaobing";
            Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(1);

            HttpCookie aCookie = new HttpCookie("lastVisit");
            aCookie.Value = DateTime.Now.ToString();
            aCookie.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(aCookie);//集合添加值的形式添加COOKIE

        }

        /// <summary>
        /// 多值Cookie
        /// 带子键的Cookie
        /// </summary>
        protected void MultipleValued()
        {
            Response.Cookies["userInfo"]["userName"] = "xiaobing";
            Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();
            Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

            HttpCookie aCookie = new HttpCookie("userInfo");
            aCookie.Values["userName"] = "taomeng";
            aCookie.Values["lastVisit"] = DateTime.Now.ToString();
            aCookie.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(aCookie);
        
        }

        /// <summary>
        /// 将 Cookie 限制到某个文件夹或应用程序
        /// 所产生的效果是 Cookie 只能用于 Application1 文件夹或虚拟根目录中的页面
        /// </summary>
        protected void AppointFolderCookie()
        {
            HttpCookie appCookie = new HttpCookie("AppCookie");
            appCookie.Value = "written " + DateTime.Now.ToString();
            appCookie.Expires = DateTime.Now.AddDays(1);
            appCookie.Path = "/Application1";
            Response.Cookies.Add(appCookie);
             
        }

        /// <summary>
        /// 限制 Cookie 的域范围
        /// 当以此方式设置域时,Cookie 将仅可用于指定的子域中的页面
        /// </summary>
        protected void DomainCookie()
        {
            Response.Cookies["domain"].Value = DateTime.Now.ToString();
            Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);
            Response.Cookies["domain"].Domain = "support.contoso.com";
          
            //多个子域间共享的 Cookie
            //Response.Cookies["domain"].Domain = "contoso.com";

        }

        /// <summary>
        /// 读取Cookie值 
        /// </summary>
        protected void ReadCookie()
        {
            //如果该 Cookie 不存在,将会收到 NullReferenceException 异常。 
            if (Request.Cookies["userName"] != null)
                Label1.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

            if (Request.Cookies["userName"] != null)
            {
                HttpCookie aCookie = Request.Cookies["userName"];
                Label1.Text = Server.HtmlEncode(aCookie.Value);
            }

            //读取 Cookie 中子键值的方法与设置该值的方法
            if (Request.Cookies["userInfo"] != null)
            {
                Label1.Text =
                    Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]);

                //Label2.Text =
                //    Server.HtmlEncode(Request.Cookies["userInfo"]["lastVisit"]);
                DateTime dt;
                dt = DateTime.Parse(Request.Cookies["userInfo"]["lastVisit"]);
            }


            //Cookie 中的子键被类型化为 NameValueCollection 类型的集合。因此,获取单个子键的另一种方法是获取子键集合,然后再按名称提取子键值
            if (Request.Cookies["userInfo"] != null)
            {
                System.Collections.Specialized.NameValueCollection
                    UserInfoCookieCollection;

                UserInfoCookieCollection = Request.Cookies["userInfo"].Values;
                Label1.Text =
                    Server.HtmlEncode(UserInfoCookieCollection["userName"]);
                Label2.Text =
                    Server.HtmlEncode(UserInfoCookieCollection["lastVisit"]);
            }


        }

        /// <summary>
        /// Cookie的修改
        /// </summary>
        protected void UpdateCookie()
        {
            int counter;
            if (Request.Cookies["counter"] == null)
                counter = 0;
            else
            {
                counter = int.Parse(Request.Cookies["counter"].Value);
            }
            counter++;

            Response.Cookies["counter"].Value = counter.ToString();
            Response.Cookies["counter"].Expires = DateTime.Now.AddDays(1);
        }

        /// <summary>
        /// 删除Cookie
        /// </summary>
        protected void DeleteCookie()
        {
            HttpCookie aCookie;
            string cookieName;
            int limit = Request.Cookies.Count;
            for (int i = 0; i < limit; i++)
            {
                cookieName = Request.Cookies[i].Name;
                aCookie = new HttpCookie(cookieName);
                aCookie.Expires = DateTime.Now.AddDays(-1);
                Response.Cookies.Add(aCookie);
            }

            //移除单个子键
            string subkeyName;
            subkeyName = "userName";
              aCookie = Request.Cookies["userInfo"];
            aCookie.Values.Remove(subkeyName);
            aCookie.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(aCookie);
        }


    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Messaging;

//将消息发送到队列和从队列接收消息。

namespace 发送到队列和从队列接收消息
{

    // This class represents an object the following example 
    // sends to a queue and receives from a queue.
    public class Order
    {
        public int orderId;
        public DateTime orderTime;
    };

    /// <summary>
    /// Provides a container class for the example.
    /// </summary>
    public class MyNewQueue
    {

        //**************************************************
        // Provides an entry point into the application.
        //		 
        // This example sends and receives a message from
        // a queue.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send a message to a queue.
            myNewQueue.SendMessage();
             Send a message to a queue.
            //myNewQueue.SendMessage();
            // Receive a message from a queue.
            myNewQueue.ReceiveMessage();

            Console.Read();
            return;
        }


        //**************************************************
        // Sends an Order to a queue.
        //**************************************************

        public void SendMessage()
        {

            // Create a new order and set values.
            Order sentOrder = new Order();
            sentOrder.orderId = 3;
            sentOrder.orderTime = DateTime.Now;

            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\Private$\\myQueue"); 
            if (!MessageQueue.Exists(".\\Private$\\myQueue"))
            {
                MessageQueue.Create(".\\Private$\\myQueue");
            }

            // Send the Order to the queue.
            myQueue.Send(sentOrder);

            return;
        }


        //**************************************************
        // Receives a message containing an Order.
        //**************************************************

        public void ReceiveMessage()
        {
            // Connect to the a queue on the local computer.连接到一个队列在本地计算机。
            MessageQueue myQueue = new MessageQueue(".\\Private$\\myQueue");
            

            //获取或设置格式化程序,该格式化程序用于将对象序列化为从队列读取或写入队列的消息体,
            //或者用于将从队列读取或写入队列的消息体反序列化为对象。
            myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(发送到队列和从队列接收消息.Order) });

            try
            {
                // Receive and format the message. 
                Message myMessage = myQueue.Receive();
                Order myOrder = (Order)myMessage.Body;

                // Display message information.
                Console.WriteLine("Order ID: " +
                    myOrder.orderId.ToString());
                Console.WriteLine("Sent: " +
                    myOrder.orderTime.ToString());
            }

            catch (MessageQueueException)
            {
                // Handle Message Queuing exceptions.
            }

            // Handle invalid serialization format.
            catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
            }

            // Catch other exceptions as necessary.

            return;
        }
    }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Messaging; //引用此项

namespace 消息队列_MessageQueue_
{
    /// <summary>
    /// 使用各种路径名语法类型创建新的 MessageQueue 对象
    /// </summary>
    public   class Program
    {
        public    static void Main(string[] args)
        {
            Program myNewQueue = new Program();

            myNewQueue.SendPublic();
            myNewQueue.SendPrivate();
            myNewQueue.SendByLabel();
            myNewQueue.SendByFormatName();
            myNewQueue.MonitorComputerJournal();
            myNewQueue.MonitorQueueJournal();
            myNewQueue.MonitorDeadLetter();
            myNewQueue.MonitorTransactionalDeadLetter();


        }

        /// <summary>
        /// 引用公共消息队列
        /// </summary>
        public void SendPublic()
        {
            MessageQueue myQueue = new MessageQueue(".\\myQueue");
            myQueue.Send("Public queue by path name.");

            return;
        
        }
        // References private queues.
        public void SendPrivate()
        {
            MessageQueue myQueue = new
                MessageQueue(".\\Private$\\myQueue");
            myQueue.Send("Private queue by path name.");

            return;
        }

        // References queues by label.
        public void SendByLabel()
        {
            MessageQueue myQueue = new MessageQueue("Label:TheLabel");
            myQueue.Send("Queue by label.");

            return;
        }

        // References queues by format name.
        public void SendByFormatName()
        {
            MessageQueue myQueue = new
                MessageQueue("FormatName:Public=5A5F7535-AE9A-41d4" +
                "-935C-845C2AFF7112");
            myQueue.Send("Queue by format name.");

            return;
        }

        // References computer journal queues.计算机日记
        public void MonitorComputerJournal()
        {
            MessageQueue computerJournal = new
                MessageQueue(".\\Journal$");
            while (true)
            {
                Message journalMessage = computerJournal.Receive();
                // Process the journal message.
            }
        }

        // References queue journal queues.队列日记
        public void MonitorQueueJournal()
        {
            MessageQueue queueJournal = new
                MessageQueue(".\\myQueue\\Journal$");
            while (true)
            {
                Message journalMessage = queueJournal.Receive();
                // Process the journal message.
            }
        }

        // References dead-letter queues.
        public void MonitorDeadLetter()
        {
            MessageQueue deadLetter = new
                MessageQueue(".\\DeadLetter$");
            while (true)
            {
                Message deadMessage = deadLetter.Receive();
                // Process the dead-letter message.
            }
        }

        // References transactional dead-letter queues.
        public void MonitorTransactionalDeadLetter()
        {
            MessageQueue TxDeadLetter = new
                MessageQueue(".\\XactDeadLetter$");
            while (true)
            {
                Message txDeadLetter = TxDeadLetter.Receive();
                // Process the transactional dead-letter message.处理死信消息事务。
            }
        }

    }
}

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值