这2天把PetShop4好好研究了一下,PetShop的架构不错,学习了不少,十分感谢张逸和他的“软件设计精要与模式”。不过有几个地方请大家注意。如下:
1。为什么没有ORM之类的工具,在网上看到有朋友说是因为微软没有自己的ORM所以没有在PS4中加入。
2。要操作数据库事务时,也就是在提交定单时,如果不启动相应的事务服务会报错的。所以要 启动 Distributed Transaction Coordinator 服务,方法和说明如下:
“本主题中的某些过程使用 System.Transactions 程序集内的类型。在按照这些过程操作之前,必须确保要运行单元测试的计算机上正在运行 Distributed Transaction Coordinator 服务。否则,测试将失败,并出现下面的错误消息:“测试方法 项目名称.测试名称.方法名称 引发异常: System.Data.SqlClient.SqlException: 服务器‘计算机名称’上的 MSDTC 不可用”。
启动 Distributed Transaction Coordinator 服务
   1.打开“控制面板”。
   2.在“控制面板”中打开“管理工具”。
   3.在“管理工具”中打开“服务”。
   4.在“服务”窗格中,右击“分布式事务处理协调器”服务,再单击“启动”。
      该服务的状态应当更新为“已启动”。现在应当能够运行那些使用 System.Transactions 的单元测试。”
3。在调试异步数据库时,设置消息队列时。
<add key="OrderQueuePath" value=".\Private$\PSOrders"/>
我只能设置本机的消息队列 ,而象
<add key="OrderQueuePath" value="FormatName:DIRECT=TCP:127.0.0.1\Private$\PSOrders"/>这样访问其它机器上的消息队列时,就会报错“无法确定具有指定格式名的队列是否存在 ”
请达人帮忙解决,谢谢
4。在运用异步数据时,不会自动创建相应的消息列表,我修改了一下CODE,可以自动的创建消息列表,见14-17行
 1namespace PetShop.MSMQMessaging {
 2    /// <summary>
 3    /// This could be a base class for all PetShop MSMQ messaging implementation as 
 4    /// it provides a basic implementation for sending and receving messages to and from transactional queue
 5    /// </summary>

 6    public class PetShopQueue : IDisposable {
 7
 8        protected MessageQueueTransactionType transactionType = MessageQueueTransactionType.Automatic;
 9
10        protected MessageQueue queue;
11        protected TimeSpan timeout;
12
13        public PetShopQueue(string queuePath, int timeoutSeconds) {
14            if (!MessageQueue.Exists(queuePath))
15            {
16                // Create the queue if it does not exist.
17                queue = MessageQueue.Create(queuePath, true);
18            }

19            else
20            {
21
22                queue = new MessageQueue(queuePath);
23            }

5。还有要说的是运用异步数据时,系统要装有消息列表。(注:在安装系统时,WINDOWS不会安装消息队列组件)
3、4、5为数据访问层之消息处理,也就是异步数据和消息队列的内容


 posted on 2008-04-17 08:58  沉在海底的船  阅读(1438)  评论(0编辑  收藏  举报