petshop的消息队列的学习

1   <PetShopControl:CustomGrid>这个用户自定义控件的定义在app_code目录下的CustomGrid.cs
   <PetShopControl:CustomList></PetShopControl:CustomList>这个用户自定义控件存在于app_code目录文件名是CustomList.cs

2    public Regex (string pattern,RegexOptions options)
    用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例。
    RegexOptions是个枚举值。


3    SeparatorTemplate 属性创建一个模板,它控制如何显示各项之间的分隔符。
    SeparatorTemplate:分隔数据列;

4    Request.ServerVariables[]获取服务器变量的集合

5    String.IndexOf 方法 (String) 报告指定的 String 在此实例中的第一个匹配项的索引。 如果找到该      字符,则为 value 的索引位置;如果未找到该字符,则为 -1。如果 value 为 Empty,则返回值为 。

6     HiddenField 用于存储数据集中不用显示的关键字段等;它的值存储在value中
     找到这个可以用下面语句
     HiddenField hidCategoryId = (HiddenField)item.FindControl("hidCategoryId");

7     UserControl.CachePolicy 属性 获取对该用户控件的缓存参数集合的引用。

8     outputcache.Shared 属性一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。    如果将 Shared 属性设置为 true,则多个 Web 窗体页可以访问缓存的用户控件输出。如果不将该属性设置为 true,默认行为是为包含用户控件的每一页缓存用户控件输出的一个版本。通过启用 Shared 属性,可能可以节省大量内存。


9   PlaceHolder Web 服务器控件
在页控件层次结构中为以编程方式添加的控件保留位置。
将 PlaceHolder 控件用作容器,从而将动态添加的服务器控件存储到网页中。PlaceHolder 控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用 Control.Controls 集合在 PlaceHolder 控件中添加、插入或移除控件。

10 消息队列的命名空间是System.Messaging
11 MessageQueueTransactionType 枚举 指定消息队列事务的类型。 3个枚举值为 automatic none singele
当使用 MessageQueue 类的 Send 或 Receive 方法(包括 ReceiveById 和 ReceiveByCorrelationId)的重载(采用 transactionType 参数)读取或写入消息时,可以指定与队列交互的方式。Automatic 使您可以发送外部事务和从外部事务接收(例如当您与数据库应用程序交互时),而 Single 用于单个内部消息队列事务。None 使您可以从事务外的事务性队列接收消息或将事务性消息发送到非事务性队列。例如,这在路由在单个事务内发送的几个消息时十分有用。


12 MessageQueue 类 提供对“消息队列”服务器上的队列的访问。
MessageQueue 类提供对“消息队列”队列的引用。可以在 MessageQueue 构造函数中指定一个连接到现有资源的路径,或者可在服务器上创建新队列。在调用 Send(Object)、Peek 或 Receive 之前,必须将 MessageQueue 类的新实例与某个现有队列关联。

13 MessageQueue 支持两种类型的消息检索:同步和异步。同步的 Peek 和 Receive 方法使进程线程用指定的间隔时间等待新消息到达队列。异步的 BeginPeek 和 BeginReceive 方法允许主应用程序任务在消息到达队列之前,在单独的线程中继续执行。这些方法通过使用回调对象和状态对象进行工作,以便在线程之间进行信息通信。当创建 MessageQueue 类的新实例时,并不是要创建新的“消息队列”队列。而是可使用 Create(String)、Delete 和 Purge 方法管理服务器上的队列。
14 public MessageQueue (string path)初始化 MessageQueue 类的新实例,该实例引用指定路径处的“消息队列”队列。
MessageQueue 构造函数实例化 MessageQueue 类的新实例;它不创建新的“消息队列”队列。若要在“消息队列”中创建新队列,请使用 Create(String)。在petshop中path的形式是FormatName:DIRECT=OS:MachineName\Private$\PSOrders 表示一个专用队列 名字是PSOrders

15 MessageQueue.DefaultPropertiesToSend 属性 获取或设置当应用程序向队列发送消息时默认情况下使用的消息属性值。
当向队列发送 Message 类型之外的任何对象时,MessageQueue 将该对象插入“消息队列”消息中。此时,MessageQueue 将在 DefaultPropertiesToSend 属性中指定的属性值应用于消息。相反,如果向队列发送 Message,则已经为该实例本身指定这些属性,所以对于 Message,忽略 DefaultPropertiesToSend。虽然通过 MessageQueue 对象设置属性,但 DefaultPropertiesToSend 引用发送到队列的消息的属性,而不是该队列本身。
DefaultPropertiesToSend.AttachSenderId 属性获取或设置一个值,该值指示发送方 ID 是否应附在消息中DefaultPropertiesToSend.UseAuthentication 属性 获取或设置一个值,该值指示发送前是否必须验证消息。
DefaultPropertiesToSend.UseAuthentication 属性指定是否需要验证消息。如果发送应用程序请求验证,消息队列将创建数字签名,并用它在发送消息时签署消息和在接收消息时验证消息。如果将消息发送到只接受通过身份验证的消息的队列,则当 UseAuthentication 设置为 false 时,消息到达队列时将被拒绝。不可能通过查看消息的属性来确定消息是否未通过身份验证。未通过身份验证的消息将被放弃,不会传递到队列中。
DefaultPropertiesToSend.UseEncryption 属性 获取或设置一个值,该值指示是否使消息成为私有的。 如果消息为私有,则消息在发送前其正文被加密并在接收时被解密。
DefaultPropertiesToSend.UseJournalQueue 属性 获取或设置一个值,该值指示是否在始发计算机的计算机日记中保留消息的副本。
DefaultPropertiesToSend.AcknowledgeType 属性 获取或设置返回给发送应用程序的确认消息的类型。 就是要给对方回个话 默认是none 表示一个掩码,用于请求不发送任何确认消息(无论是肯定的还是否定的)AcknowledgeTypes 类提供一组标志,可以对这些标志进行组合以请求确认消息的一个或多个类别。
16 当应用程序发送消息时,它可以请求消息队列返回确认消息,这些确认消息指示原始消息是成功还是失败。消息队列将这些确认消息发送到您指定的管理队列。确认类型大致可以分为 4 组:肯定到达确认、肯定读取确认、否定到达确认和否定读取确认。请求确认使应用程序可以接收特定事件的通知,例如消息到达目标队列,正在检索消息,或者超时妨碍消息到达目标队列或从目标队列中检索消息。
17 Message message = queue.Receive(timeout, cursor)
使用指定的游标接收队列中的当前消息。
如果没有可用的消息,此方法将等待,直到有可用的消息或超时到期为止。
Cursor 用于在读取队列的消息时保持 MessageQueue 中的特定位置。


18 Message message = queue.Receive(timeout,transactionType)接收 MessageQueue 引用的队列中可用的第一条消息。此调用是同步的,并且一直等到队列中有可用的消息或超时到期。利用 transactionType 参数定义的事务上下文从队列中接收消息,如果队列中没有消息,则在指定的时间内返回。如果已经有外部事务上下文附加到了您希望用于接收消息的线程上,请为 transactionType 参数指定 Automatic。如果希望将消息作为单个内部事务来接收,请指定 Single。如果希望在事务上下文的外部接收事务性队列中的消息,可以指定 None。


19 queue.Formatter = new BinaryMessageFormatter();初始化 BinaryMessageFormatter 类的新实例,不指定类型样式或顶级对象程序集样式。必须在使用 BinaryMessageFormatter 类的实例序列化和发送消息前,为 TopObjectFormat 属性(定义根对象在图形中的布局方式)和 TypeFormat 属性(定义对象类型说明的布局方式)指定值。使用二进制格式,将一个对象(或连接的对象的整个图形)序列化成“消息队列”消息体或从“消息队列”消息体反序列化一个对象。也就是这个队列使用2进制格式序列化进出的消息

20 使用 System.Transactions 命名空间包含的类可以编写自己的事务应用程序和资源管理器。21 本地或分布式事务负责使交易平稳和可预测的技术称为事务处理。事务确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务处理系统由计算机硬件和承载面向事务的应用程序的计算机软件组成,此应用程序执行开展业务所需的例程事务。管理销售订单输入、机票预定、工资单、雇员记录、生产和发货的系统即属于这类系统。

22 TransactionScope 类 使代码块成为事务性代码。
            //可以利用TransactionScope对象来定义一个事务处理范围
           //TransactionScope类实现了IDisposable接口,因此可以将创建TransactionScope实例的代码放入到using语句中,
           //加强对内存的管理。当dal对象在执行Insert方法时,如果出现了异常,TransactionScope对象就会自动执行回滚操作,
           //恢复插入订单前的状态;否则就将调用Complete方法,提交整个事务。
           using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
           {
//TransactionScopeOption.Required 表示该范围需要一个事务。如果已经存在环境事务,则使用该环境事务。否则,在进入范围之前创建
//新的事务。这是默认值。
               dal.Insert(order);
               //在订单提交后,更新inventory
               Inventory inventory = new Inventory();
             
               inventory.TakeStock(order.LineItems);
               // 完成事务的提交

               // 除非异常发生,此时事务将回滚
             ts.Complete();//这个表示事物可以提交了。一般放在using块的最后一个语句
           }1   <PetShopControl:CustomGrid>这个用户自定义控件的定义在app_code目录下的CustomGrid.cs
   <PetShopControl:CustomList></PetShopControl:CustomList>这个用户自定义控件存在于app_code目录文件名是CustomList.cs

2    public Regex (string pattern,RegexOptions options)
    用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例。
    RegexOptions是个枚举值。


3    SeparatorTemplate 属性创建一个模板,它控制如何显示各项之间的分隔符。
    SeparatorTemplate:分隔数据列;

4    Request.ServerVariables[]获取服务器变量的集合

5    String.IndexOf 方法 (String) 报告指定的 String 在此实例中的第一个匹配项的索引。 如果找到该      字符,则为 value 的索引位置;如果未找到该字符,则为 -1。如果 value 为 Empty,则返回值为 。

6     HiddenField 用于存储数据集中不用显示的关键字段等;它的值存储在value中
     找到这个可以用下面语句
     HiddenField hidCategoryId = (HiddenField)item.FindControl("hidCategoryId");

7     UserControl.CachePolicy 属性 获取对该用户控件的缓存参数集合的引用。

8     outputcache.Shared 属性一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。    如果将 Shared 属性设置为 true,则多个 Web 窗体页可以访问缓存的用户控件输出。如果不将该属性设置为 true,默认行为是为包含用户控件的每一页缓存用户控件输出的一个版本。通过启用 Shared 属性,可能可以节省大量内存。


9   PlaceHolder Web 服务器控件
在页控件层次结构中为以编程方式添加的控件保留位置。
将 PlaceHolder 控件用作容器,从而将动态添加的服务器控件存储到网页中。PlaceHolder 控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用 Control.Controls 集合在 PlaceHolder 控件中添加、插入或移除控件。

10 消息队列的命名空间是System.Messaging
11 MessageQueueTransactionType 枚举 指定消息队列事务的类型。 3个枚举值为 automatic none singele
当使用 MessageQueue 类的 Send 或 Receive 方法(包括 ReceiveById 和 ReceiveByCorrelationId)的重载(采用 transactionType 参数)读取或写入消息时,可以指定与队列交互的方式。Automatic 使您可以发送外部事务和从外部事务接收(例如当您与数据库应用程序交互时),而 Single 用于单个内部消息队列事务。None 使您可以从事务外的事务性队列接收消息或将事务性消息发送到非事务性队列。例如,这在路由在单个事务内发送的几个消息时十分有用。


12 MessageQueue 类 提供对“消息队列”服务器上的队列的访问。
MessageQueue 类提供对“消息队列”队列的引用。可以在 MessageQueue 构造函数中指定一个连接到现有资源的路径,或者可在服务器上创建新队列。在调用 Send(Object)、Peek 或 Receive 之前,必须将 MessageQueue 类的新实例与某个现有队列关联。

13 MessageQueue 支持两种类型的消息检索:同步和异步。同步的 Peek 和 Receive 方法使进程线程用指定的间隔时间等待新消息到达队列。异步的 BeginPeek 和 BeginReceive 方法允许主应用程序任务在消息到达队列之前,在单独的线程中继续执行。这些方法通过使用回调对象和状态对象进行工作,以便在线程之间进行信息通信。当创建 MessageQueue 类的新实例时,并不是要创建新的“消息队列”队列。而是可使用 Create(String)、Delete 和 Purge 方法管理服务器上的队列。
14 public MessageQueue (string path)初始化 MessageQueue 类的新实例,该实例引用指定路径处的“消息队列”队列。
MessageQueue 构造函数实例化 MessageQueue 类的新实例;它不创建新的“消息队列”队列。若要在“消息队列”中创建新队列,请使用 Create(String)。在petshop中path的形式是FormatName:DIRECT=OS:MachineName\Private$\PSOrders 表示一个专用队列 名字是PSOrders

15 MessageQueue.DefaultPropertiesToSend 属性 获取或设置当应用程序向队列发送消息时默认情况下使用的消息属性值。
当向队列发送 Message 类型之外的任何对象时,MessageQueue 将该对象插入“消息队列”消息中。此时,MessageQueue 将在 DefaultPropertiesToSend 属性中指定的属性值应用于消息。相反,如果向队列发送 Message,则已经为该实例本身指定这些属性,所以对于 Message,忽略 DefaultPropertiesToSend。虽然通过 MessageQueue 对象设置属性,但 DefaultPropertiesToSend 引用发送到队列的消息的属性,而不是该队列本身。
DefaultPropertiesToSend.AttachSenderId 属性获取或设置一个值,该值指示发送方 ID 是否应附在消息中DefaultPropertiesToSend.UseAuthentication 属性 获取或设置一个值,该值指示发送前是否必须验证消息。
DefaultPropertiesToSend.UseAuthentication 属性指定是否需要验证消息。如果发送应用程序请求验证,消息队列将创建数字签名,并用它在发送消息时签署消息和在接收消息时验证消息。如果将消息发送到只接受通过身份验证的消息的队列,则当 UseAuthentication 设置为 false 时,消息到达队列时将被拒绝。不可能通过查看消息的属性来确定消息是否未通过身份验证。未通过身份验证的消息将被放弃,不会传递到队列中。
DefaultPropertiesToSend.UseEncryption 属性 获取或设置一个值,该值指示是否使消息成为私有的。 如果消息为私有,则消息在发送前其正文被加密并在接收时被解密。
DefaultPropertiesToSend.UseJournalQueue 属性 获取或设置一个值,该值指示是否在始发计算机的计算机日记中保留消息的副本。
DefaultPropertiesToSend.AcknowledgeType 属性 获取或设置返回给发送应用程序的确认消息的类型。 就是要给对方回个话 默认是none 表示一个掩码,用于请求不发送任何确认消息(无论是肯定的还是否定的)AcknowledgeTypes 类提供一组标志,可以对这些标志进行组合以请求确认消息的一个或多个类别。
16 当应用程序发送消息时,它可以请求消息队列返回确认消息,这些确认消息指示原始消息是成功还是失败。消息队列将这些确认消息发送到您指定的管理队列。确认类型大致可以分为 4 组:肯定到达确认、肯定读取确认、否定到达确认和否定读取确认。请求确认使应用程序可以接收特定事件的通知,例如消息到达目标队列,正在检索消息,或者超时妨碍消息到达目标队列或从目标队列中检索消息。
17 Message message = queue.Receive(timeout, cursor)
使用指定的游标接收队列中的当前消息。
如果没有可用的消息,此方法将等待,直到有可用的消息或超时到期为止。
Cursor 用于在读取队列的消息时保持 MessageQueue 中的特定位置。


18 Message message = queue.Receive(timeout,transactionType)接收 MessageQueue 引用的队列中可用的第一条消息。此调用是同步的,并且一直等到队列中有可用的消息或超时到期。利用 transactionType 参数定义的事务上下文从队列中接收消息,如果队列中没有消息,则在指定的时间内返回。如果已经有外部事务上下文附加到了您希望用于接收消息的线程上,请为 transactionType 参数指定 Automatic。如果希望将消息作为单个内部事务来接收,请指定 Single。如果希望在事务上下文的外部接收事务性队列中的消息,可以指定 None。


19 queue.Formatter = new BinaryMessageFormatter();初始化 BinaryMessageFormatter 类的新实例,不指定类型样式或顶级对象程序集样式。必须在使用 BinaryMessageFormatter 类的实例序列化和发送消息前,为 TopObjectFormat 属性(定义根对象在图形中的布局方式)和 TypeFormat 属性(定义对象类型说明的布局方式)指定值。使用二进制格式,将一个对象(或连接的对象的整个图形)序列化成“消息队列”消息体或从“消息队列”消息体反序列化一个对象。也就是这个队列使用2进制格式序列化进出的消息

20 使用 System.Transactions 命名空间包含的类可以编写自己的事务应用程序和资源管理器。21 本地或分布式事务负责使交易平稳和可预测的技术称为事务处理。事务确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务处理系统由计算机硬件和承载面向事务的应用程序的计算机软件组成,此应用程序执行开展业务所需的例程事务。管理销售订单输入、机票预定、工资单、雇员记录、生产和发货的系统即属于这类系统。

22 TransactionScope 类 使代码块成为事务性代码。
            //可以利用TransactionScope对象来定义一个事务处理范围
           //TransactionScope类实现了IDisposable接口,因此可以将创建TransactionScope实例的代码放入到using语句中,
           //加强对内存的管理。当dal对象在执行Insert方法时,如果出现了异常,TransactionScope对象就会自动执行回滚操作,
           //恢复插入订单前的状态;否则就将调用Complete方法,提交整个事务。
           using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
           {
//TransactionScopeOption.Required 表示该范围需要一个事务。如果已经存在环境事务,则使用该环境事务。否则,在进入范围之前创建
//新的事务。这是默认值。
               dal.Insert(order);
               //在订单提交后,更新inventory
               Inventory inventory = new Inventory();
             
               inventory.TakeStock(order.LineItems);
               // 完成事务的提交

               // 除非异常发生,此时事务将回滚
             ts.Complete();//这个表示事物可以提交了。一般放在using块的最后一个语句
           }1   <PetShopControl:CustomGrid>这个用户自定义控件的定义在app_code目录下的CustomGrid.cs
   <PetShopControl:CustomList></PetShopControl:CustomList>这个用户自定义控件存在于app_code目录文件名是CustomList.cs

2    public Regex (string pattern,RegexOptions options)
    用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例。
    RegexOptions是个枚举值。


3    SeparatorTemplate 属性创建一个模板,它控制如何显示各项之间的分隔符。
    SeparatorTemplate:分隔数据列;

4    Request.ServerVariables[]获取服务器变量的集合

5    String.IndexOf 方法 (String) 报告指定的 String 在此实例中的第一个匹配项的索引。 如果找到该      字符,则为 value 的索引位置;如果未找到该字符,则为 -1。如果 value 为 Empty,则返回值为 。

6     HiddenField 用于存储数据集中不用显示的关键字段等;它的值存储在value中
     找到这个可以用下面语句
     HiddenField hidCategoryId = (HiddenField)item.FindControl("hidCategoryId");

7     UserControl.CachePolicy 属性 获取对该用户控件的缓存参数集合的引用。

8     outputcache.Shared 属性一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。    如果将 Shared 属性设置为 true,则多个 Web 窗体页可以访问缓存的用户控件输出。如果不将该属性设置为 true,默认行为是为包含用户控件的每一页缓存用户控件输出的一个版本。通过启用 Shared 属性,可能可以节省大量内存。


9   PlaceHolder Web 服务器控件
在页控件层次结构中为以编程方式添加的控件保留位置。
将 PlaceHolder 控件用作容器,从而将动态添加的服务器控件存储到网页中。PlaceHolder 控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用 Control.Controls 集合在 PlaceHolder 控件中添加、插入或移除控件。

10 消息队列的命名空间是System.Messaging
11 MessageQueueTransactionType 枚举 指定消息队列事务的类型。 3个枚举值为 automatic none singele
当使用 MessageQueue 类的 Send 或 Receive 方法(包括 ReceiveById 和 ReceiveByCorrelationId)的重载(采用 transactionType 参数)读取或写入消息时,可以指定与队列交互的方式。Automatic 使您可以发送外部事务和从外部事务接收(例如当您与数据库应用程序交互时),而 Single 用于单个内部消息队列事务。None 使您可以从事务外的事务性队列接收消息或将事务性消息发送到非事务性队列。例如,这在路由在单个事务内发送的几个消息时十分有用。


12 MessageQueue 类 提供对“消息队列”服务器上的队列的访问。
MessageQueue 类提供对“消息队列”队列的引用。可以在 MessageQueue 构造函数中指定一个连接到现有资源的路径,或者可在服务器上创建新队列。在调用 Send(Object)、Peek 或 Receive 之前,必须将 MessageQueue 类的新实例与某个现有队列关联。

13 MessageQueue 支持两种类型的消息检索:同步和异步。同步的 Peek 和 Receive 方法使进程线程用指定的间隔时间等待新消息到达队列。异步的 BeginPeek 和 BeginReceive 方法允许主应用程序任务在消息到达队列之前,在单独的线程中继续执行。这些方法通过使用回调对象和状态对象进行工作,以便在线程之间进行信息通信。当创建 MessageQueue 类的新实例时,并不是要创建新的“消息队列”队列。而是可使用 Create(String)、Delete 和 Purge 方法管理服务器上的队列。
14 public MessageQueue (string path)初始化 MessageQueue 类的新实例,该实例引用指定路径处的“消息队列”队列。
MessageQueue 构造函数实例化 MessageQueue 类的新实例;它不创建新的“消息队列”队列。若要在“消息队列”中创建新队列,请使用 Create(String)。在petshop中path的形式是FormatName:DIRECT=OS:MachineName\Private$\PSOrders 表示一个专用队列 名字是PSOrders

15 MessageQueue.DefaultPropertiesToSend 属性 获取或设置当应用程序向队列发送消息时默认情况下使用的消息属性值。
当向队列发送 Message 类型之外的任何对象时,MessageQueue 将该对象插入“消息队列”消息中。此时,MessageQueue 将在 DefaultPropertiesToSend 属性中指定的属性值应用于消息。相反,如果向队列发送 Message,则已经为该实例本身指定这些属性,所以对于 Message,忽略 DefaultPropertiesToSend。虽然通过 MessageQueue 对象设置属性,但 DefaultPropertiesToSend 引用发送到队列的消息的属性,而不是该队列本身。
DefaultPropertiesToSend.AttachSenderId 属性获取或设置一个值,该值指示发送方 ID 是否应附在消息中DefaultPropertiesToSend.UseAuthentication 属性 获取或设置一个值,该值指示发送前是否必须验证消息。
DefaultPropertiesToSend.UseAuthentication 属性指定是否需要验证消息。如果发送应用程序请求验证,消息队列将创建数字签名,并用它在发送消息时签署消息和在接收消息时验证消息。如果将消息发送到只接受通过身份验证的消息的队列,则当 UseAuthentication 设置为 false 时,消息到达队列时将被拒绝。不可能通过查看消息的属性来确定消息是否未通过身份验证。未通过身份验证的消息将被放弃,不会传递到队列中。
DefaultPropertiesToSend.UseEncryption 属性 获取或设置一个值,该值指示是否使消息成为私有的。 如果消息为私有,则消息在发送前其正文被加密并在接收时被解密。
DefaultPropertiesToSend.UseJournalQueue 属性 获取或设置一个值,该值指示是否在始发计算机的计算机日记中保留消息的副本。
DefaultPropertiesToSend.AcknowledgeType 属性 获取或设置返回给发送应用程序的确认消息的类型。 就是要给对方回个话 默认是none 表示一个掩码,用于请求不发送任何确认消息(无论是肯定的还是否定的)AcknowledgeTypes 类提供一组标志,可以对这些标志进行组合以请求确认消息的一个或多个类别。
16 当应用程序发送消息时,它可以请求消息队列返回确认消息,这些确认消息指示原始消息是成功还是失败。消息队列将这些确认消息发送到您指定的管理队列。确认类型大致可以分为 4 组:肯定到达确认、肯定读取确认、否定到达确认和否定读取确认。请求确认使应用程序可以接收特定事件的通知,例如消息到达目标队列,正在检索消息,或者超时妨碍消息到达目标队列或从目标队列中检索消息。
17 Message message = queue.Receive(timeout, cursor)
使用指定的游标接收队列中的当前消息。
如果没有可用的消息,此方法将等待,直到有可用的消息或超时到期为止。
Cursor 用于在读取队列的消息时保持 MessageQueue 中的特定位置。


18 Message message = queue.Receive(timeout,transactionType)接收 MessageQueue 引用的队列中可用的第一条消息。此调用是同步的,并且一直等到队列中有可用的消息或超时到期。利用 transactionType 参数定义的事务上下文从队列中接收消息,如果队列中没有消息,则在指定的时间内返回。如果已经有外部事务上下文附加到了您希望用于接收消息的线程上,请为 transactionType 参数指定 Automatic。如果希望将消息作为单个内部事务来接收,请指定 Single。如果希望在事务上下文的外部接收事务性队列中的消息,可以指定 None。


19 queue.Formatter = new BinaryMessageFormatter();初始化 BinaryMessageFormatter 类的新实例,不指定类型样式或顶级对象程序集样式。必须在使用 BinaryMessageFormatter 类的实例序列化和发送消息前,为 TopObjectFormat 属性(定义根对象在图形中的布局方式)和 TypeFormat 属性(定义对象类型说明的布局方式)指定值。使用二进制格式,将一个对象(或连接的对象的整个图形)序列化成“消息队列”消息体或从“消息队列”消息体反序列化一个对象。也就是这个队列使用2进制格式序列化进出的消息

20 使用 System.Transactions 命名空间包含的类可以编写自己的事务应用程序和资源管理器。21 本地或分布式事务负责使交易平稳和可预测的技术称为事务处理。事务确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务处理系统由计算机硬件和承载面向事务的应用程序的计算机软件组成,此应用程序执行开展业务所需的例程事务。管理销售订单输入、机票预定、工资单、雇员记录、生产和发货的系统即属于这类系统。

22 TransactionScope 类 使代码块成为事务性代码。
            //可以利用TransactionScope对象来定义一个事务处理范围
           //TransactionScope类实现了IDisposable接口,因此可以将创建TransactionScope实例的代码放入到using语句中,
           //加强对内存的管理。当dal对象在执行Insert方法时,如果出现了异常,TransactionScope对象就会自动执行回滚操作,
           //恢复插入订单前的状态;否则就将调用Complete方法,提交整个事务。
           using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
           {
//TransactionScopeOption.Required 表示该范围需要一个事务。如果已经存在环境事务,则使用该环境事务。否则,在进入范围之前创建
//新的事务。这是默认值。
               dal.Insert(order);
               //在订单提交后,更新inventory
               Inventory inventory = new Inventory();
             
               inventory.TakeStock(order.LineItems);
               // 完成事务的提交

               // 除非异常发生,此时事务将回滚
             ts.Complete();//这个表示事物可以提交了。一般放在using块的最后一个语句
           }s)
    用修改模式的选项为指定的正则表达式初始化并编译 Regex 类的一个新实例。
    RegexOptions是个枚举值。


3    SeparatorTemplate 属性创建一个模板,它控制如何显示各项之间的分隔符。
    SeparatorTemplate:分隔数据列;

4    Request.ServerVariables[]获取服务器变量的集合

5    String.IndexOf 方法 (String) 报告指定的 String 在此实例中的第一个匹配项的索引。 如果找到该      字符,则为 value 的索引位置;如果未找到该字符,则为 -1。如果 value 为 Empty,则返回值为 。

6     HiddenField 用于存储数据集中不用显示的关键字段等;它的值存储在value中
     找到这个可以用下面语句
     HiddenField hidCategoryId = (HiddenField)item.FindControl("hidCategoryId");

7     UserControl.CachePolicy 属性 获取对该用户控件的缓存参数集合的引用。

8     outputcache.Shared 属性一个布尔值,确定用户控件输出是否可以由多个页共享。默认值为 false。    如果将 Shared 属性设置为 true,则多个 Web 窗体页可以访问缓存的用户控件输出。如果不将该属性设置为 true,默认行为是为包含用户控件的每一页缓存用户控件输出的一个版本。通过启用 Shared 属性,可能可以节省大量内存。


9   PlaceHolder Web 服务器控件
在页控件层次结构中为以编程方式添加的控件保留位置。
将 PlaceHolder 控件用作容器,从而将动态添加的服务器控件存储到网页中。PlaceHolder 控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用 Control.Controls 集合在 PlaceHolder 控件中添加、插入或移除控件。

10 消息队列的命名空间是System.Messaging
11 MessageQueueTransactionType 枚举 指定消息队列事务的类型。 3个枚举值为 automatic none singele
当使用 MessageQueue 类的 Send 或 Receive 方法(包括 ReceiveById 和 ReceiveByCorrelationId)的重载(采用 transactionType 参数)读取或写入消息时,可以指定与队列交互的方式。Automatic 使您可以发送外部事务和从外部事务接收(例如当您与数据库应用程序交互时),而 Single 用于单个内部消息队列事务。None 使您可以从事务外的事务性队列接收消息或将事务性消息发送到非事务性队列。例如,这在路由在单个事务内发送的几个消息时十分有用。


12 MessageQueue 类 提供对“消息队列”服务器上的队列的访问。
MessageQueue 类提供对“消息队列”队列的引用。可以在 MessageQueue 构造函数中指定一个连接到现有资源的路径,或者可在服务器上创建新队列。在调用 Send(Object)、Peek 或 Receive 之前,必须将 MessageQueue 类的新实例与某个现有队列关联。

13 MessageQueue 支持两种类型的消息检索:同步和异步。同步的 Peek 和 Receive 方法使进程线程用指定的间隔时间等待新消息到达队列。异步的 BeginPeek 和 BeginReceive 方法允许主应用程序任务在消息到达队列之前,在单独的线程中继续执行。这些方法通过使用回调对象和状态对象进行工作,以便在线程之间进行信息通信。当创建 MessageQueue 类的新实例时,并不是要创建新的“消息队列”队列。而是可使用 Create(String)、Delete 和 Purge 方法管理服务器上的队列。
14 public MessageQueue (string path)初始化 MessageQueue 类的新实例,该实例引用指定路径处的“消息队列”队列。
MessageQueue 构造函数实例化 MessageQueue 类的新实例;它不创建新的“消息队列”队列。若要在“消息队列”中创建新队列,请使用 Create(String)。在petshop中path的形式是FormatName:DIRECT=OS:MachineName\Private$\PSOrders 表示一个专用队列 名字是PSOrders

15 MessageQueue.DefaultPropertiesToSend 属性 获取或设置当应用程序向队列发送消息时默认情况下使用的消息属性值。
当向队列发送 Message 类型之外的任何对象时,MessageQueue 将该对象插入“消息队列”消息中。此时,MessageQueue 将在 DefaultPropertiesToSend 属性中指定的属性值应用于消息。相反,如果向队列发送 Message,则已经为该实例本身指定这些属性,所以对于 Message,忽略 DefaultPropertiesToSend。虽然通过 MessageQueue 对象设置属性,但 DefaultPropertiesToSend 引用发送到队列的消息的属性,而不是该队列本身。
DefaultPropertiesToSend.AttachSenderId 属性获取或设置一个值,该值指示发送方 ID 是否应附在消息中DefaultPropertiesToSend.UseAuthentication 属性 获取或设置一个值,该值指示发送前是否必须验证消息。
DefaultPropertiesToSend.UseAuthentication 属性指定是否需要验证消息。如果发送应用程序请求验证,消息队列将创建数字签名,并用它在发送消息时签署消息和在接收消息时验证消息。如果将消息发送到只接受通过身份验证的消息的队列,则当 UseAuthentication 设置为 false 时,消息到达队列时将被拒绝。不可能通过查看消息的属性来确定消息是否未通过身份验证。未通过身份验证的消息将被放弃,不会传递到队列中。
DefaultPropertiesToSend.UseEncryption 属性 获取或设置一个值,该值指示是否使消息成为私有的。 如果消息为私有,则消息在发送前其正文被加密并在接收时被解密。
DefaultPropertiesToSend.UseJournalQueue 属性 获取或设置一个值,该值指示是否在始发计算机的计算机日记中保留消息的副本。
DefaultPropertiesToSend.AcknowledgeType 属性 获取或设置返回给发送应用程序的确认消息的类型。 就是要给对方回个话 默认是none 表示一个掩码,用于请求不发送任何确认消息(无论是肯定的还是否定的)AcknowledgeTypes 类提供一组标志,可以对这些标志进行组合以请求确认消息的一个或多个类别。
16 当应用程序发送消息时,它可以请求消息队列返回确认消息,这些确认消息指示原始消息是成功还是失败。消息队列将这些确认消息发送到您指定的管理队列。确认类型大致可以分为 4 组:肯定到达确认、肯定读取确认、否定到达确认和否定读取确认。请求确认使应用程序可以接收特定事件的通知,例如消息到达目标队列,正在检索消息,或者超时妨碍消息到达目标队列或从目标队列中检索消息。
17 Message message = queue.Receive(timeout, cursor)
使用指定的游标接收队列中的当前消息。
如果没有可用的消息,此方法将等待,直到有可用的消息或超时到期为止。
Cursor 用于在读取队列的消息时保持 MessageQueue 中的特定位置。


18 Message message = queue.Receive(timeout,transactionType)接收 MessageQueue 引用的队列中可用的第一条消息。此调用是同步的,并且一直等到队列中有可用的消息或超时到期。利用 transactionType 参数定义的事务上下文从队列中接收消息,如果队列中没有消息,则在指定的时间内返回。如果已经有外部事务上下文附加到了您希望用于接收消息的线程上,请为 transactionType 参数指定 Automatic。如果希望将消息作为单个内部事务来接收,请指定 Single。如果希望在事务上下文的外部接收事务性队列中的消息,可以指定 None。


19 queue.Formatter = new BinaryMessageFormatter();初始化 BinaryMessageFormatter 类的新实例,不指定类型样式或顶级对象程序集样式。必须在使用 BinaryMessageFormatter 类的实例序列化和发送消息前,为 TopObjectFormat 属性(定义根对象在图形中的布局方式)和 TypeFormat 属性(定义对象类型说明的布局方式)指定值。使用二进制格式,将一个对象(或连接的对象的整个图形)序列化成“消息队列”消息体或从“消息队列”消息体反序列化一个对象。也就是这个队列使用2进制格式序列化进出的消息

20 使用 System.Transactions 命名空间包含的类可以编写自己的事务应用程序和资源管理器。21 本地或分布式事务负责使交易平稳和可预测的技术称为事务处理。事务确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。事务处理系统由计算机硬件和承载面向事务的应用程序的计算机软件组成,此应用程序执行开展业务所需的例程事务。管理销售订单输入、机票预定、工资单、雇员记录、生产和发货的系统即属于这类系统。

22 TransactionScope 类 使代码块成为事务性代码。
            //可以利用TransactionScope对象来定义一个事务处理范围
           //TransactionScope类实现了IDisposable接口,因此可以将创建TransactionScope实例的代码放入到using语句中,
           //加强对内存的管理。当dal对象在执行Insert方法时,如果出现了异常,TransactionScope对象就会自动执行回滚操作,
           //恢复插入订单前的状态;否则就将调用Complete方法,提交整个事务。
           using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
           {
//TransactionScopeOption.Required 表示该范围需要一个事务。如果已经存在环境事务,则使用该环境事务。否则,在进入范围之前创建
//新的事务。这是默认值。
               dal.Insert(order);
               //在订单提交后,更新inventory
               Inventory inventory = new Inventory();
             
               inventory.TakeStock(order.LineItems);
               // 完成事务的提交

               // 除非异常发生,此时事务将回滚
             ts.Complete();//这个表示事物可以提交了。一般放在using块的最后一个语句
           }

你可能感兴趣的:(消息队列)