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

来源:互联网 发布:回转企鹅罐 知乎 编辑:程序博客网 时间:2024/04/30 05:31
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.处理死信消息事务。            }        }    }}