大家都知道,在petshop4.0中,使用了消息处理订单数据,以实现数据的异步插入,提高系统的数据库访问性能,可是我看了半天,也没看懂这个异步是怎么实现的,无奈之下,只得再细细的读petshop4.0 详解之三(PetShop数据访问层之消息处理)(转帖) ,后来才有了自己的一下想法,也不知道对不对,先写下来:

首先,在BLL中,Category.cs,Inventory.cs,Item.cs,Product.cs这些类处理数据都是使用的PetShop.DALFactory.DataAccess.Create...,是直接将数据插入数据库,没有用到消息队列。只有Order.cs中涉及到了消息的使用,看下面的代码:

Code
 1        private static readonly PetShop.IBLLStrategy.IOrderStrategy orderInsertStrategy = LoadInsertStrategy();
 2
 3        private static PetShop.IBLLStrategy.IOrderStrategy LoadInsertStrategy() {
 4
 5            // Look up which strategy to use from config file
 6            string path = ConfigurationManager.AppSettings["OrderStrategyAssembly"];
 7            string className = ConfigurationManager.AppSettings["OrderStrategyClass"];
 8
 9            // Using the evidence given in the config file load the appropriate assembly and class
10            return (PetShop.IBLLStrategy.IOrderStrategy)Assembly.Load(path).CreateInstance(className);
11        }
12

petshop4.0 详解之三(PetShop数据访问层之消息处理)(转帖) 里面讲到这段代码用到什么“策略模式”,

我的理解就是IBLLStrategy这个项目吧,这个项目里定义了一个接口IOrderStrategy,BLL中的OrderAsynchronous.cs(异步)和OrderSynchronous.cs(同步)都继承了这个接口,也都实现了接口里的public void Insert(PetShop.Model.OrderInfo order)方法,不同的是一个是异步,一个是直接PetShop.DALFactory.DataAccess.Create...。而在BLL中的Order.cs中,具体是使用的异步还是同步,就决定于上面的代码了。而上面的代码中在创建PetShop.IBLLStrategy.IOrderStrategy接口时,读取了配置文件,所以真正决定是使用异步还是同步方式的是配置文件 ,如果要使用异步,则创建OrderAsynchronous.cs类,否则是OrderSynchronous.cs类。

转载于:https://www.cnblogs.com/min10/archive/2008/10/27/1320567.html

petshop消息处理之理解相关推荐

  1. 通过宠物商店理解java面向对象

    前言:本篇博客,适合刚刚学完java基础语法的但是,对于面向对象,理解不够深刻的读者,本文通过经典的宠物商店,来让读者深刻的理解,面向对象,IS-A,HAS-A法则.本文不仅仅是简单的用java来模拟 ...

  2. 录音播放系统(实现pcm转码mp3,wav)

    本文介绍了基于waveX低级音频API采集音频,然后播放的技术,也支持实时的播放.对于将录音和播放分开的做法原因是为了保存pcm文件(未经压缩过的音频文件), 然后转码wav和mp3格式. PCM(P ...

  3. 深入理解Android消息处理系统——Looper、Handler、Thread

    引用自:http://my.unix-center.net/~Simon_fu/?p=652 熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统.而Andro ...

  4. Android异步消息处理机制完全解析,带你从源码的角度彻底理解

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9991569 之前也是由于周末通宵看TI3比赛,一直没找到时间写博客,导致已经有好久 ...

  5. android r.java 原理,深入理解Android消息处理系统原理

    Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制.实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制. Android通过Looper.Ha ...

  6. petshop4.0 详解之三(PetShop数据访问层之消息处理)

    在进行系统设计时,除了对安全.事务等问题给与足够的重视外,性能也是一个不可避免的问题所在,尤其是一个B/S结构的软件系统,必须充分地考虑访问量.数据流量.服务器负荷的问题.解决性能的瓶颈,除了对硬件系 ...

  7. petshop4.0 详解之三(PetShop数据访问层之消息处理) [转]

    三.PetShop数据访问层之消息处理 在进行系统设计时,除了对安全.事务等问题给与足够的重视外,性能也是一个不可避免的问题所在,尤其是一个B/S结构的软件系统,必须充分地考虑访问量.数据流量.服务器 ...

  8. [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解

    开始进入正题,我们都知道,Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃.相信大家在日常的工作当中都会经常遇到这个问题,解决的方案应该也是早已烂熟于心,即创建一 ...

  9. [wayfarer]PetShop数据访问层之消息处理

    原文地址: http://www.cnblogs.com/wayfarer/archive/2006/09/06/496207.html <解剖PetShop>系列之三 三.PetShop ...

最新文章

  1. 用XCA(X Certificate and key management)可视化程序管理SSL 证书(2)--生成SSL证书请求...
  2. 2015年第六届蓝桥杯 - 省赛 - C/C++大学C组 - A. 隔行变色
  3. CPU为什么是方形而不是圆形的?
  4. python 组合数据_python-组合数据类
  5. 中国双接口芯片卡市场趋势报告、技术动态创新及市场预测
  6. 云计算:大数据时代的系统工程
  7. 一等奖60万,首届“唱圆”杯AI翻译大赛报名中
  8. 大数据分析技术有哪些类型
  9. 使用Excel导出.xml文件
  10. PowerBuilder9.0窗口最小化没显示了
  11. 跑路潮来临:解散社群,深夜遁逃,卷走百亿资金
  12. 电商一定是一元化结构
  13. 网页前端培训(JavaScript)
  14. 基于react hook的砸金蛋动画
  15. 华中电网项目日志:Rational version 7.0 技术会议纪要
  16. 怎样在Word添加页码?经验干货!word如何插入页码?
  17. 【Linux】一步一步学Linux——VMware Workstation 15 Pro安装图解教程(06)
  18. JS事件详解和js事件委托
  19. 苹果微软小米华为,创新四重奏?
  20. ICCV 2021审稿结果出炉,有人已总结出了一份Rebuttal写作指南

热门文章

  1. java对象怎么创建_Java对象是怎么创建的(通过对象的创建,了解JVM内存结构)...
  2. vue 插入dom_vue内部复用问题以及虚拟dom的更新
  3. 计算机录入的课程标准,《计算机录入技术》课程标准.doc
  4. mysql 网络io_MySQL的各种网络IO超时的用法和实现
  5. matlab 多元多项式回归_Python机器学习之?线性回归入门(二)
  6. mysql的三大引擎是什么_MySQL常用三大存储引擎
  7. 奔跑吧Linux内核 入门篇(第二版)遇到问题发
  8. 为什么我的开发方式如此愚蠢?
  9. (转载)linux下输入输出重定向和管道符
  10. Canvas之translate,scale,rotate,skew