您的位置: 飞扬精品软件园 >> 文章中心 >> 网络通讯 >> 网络应用 >> asp.net架构设计解惑

相关文章链接

最新新闻资讯

    asp.net架构设计解惑

    asp.net架构设计解惑


    • 阅览次数: 文章来源: 原文作者: 整理日期: 2010-08-29


     

    代码

    public class OrderManager
        {
            public void PlaceOrder(OrderDTO order)
            {
                // Validate order based on business rules
                // Check for stock availablity on items ordered
                // Add the order to the database
                // Set the order id on the OrderDTO object
            }
            public bool CancelOrder(Guid orderId)
            {
                // Retrieve order from database
                // Determine if the order can be canceled
                // if order can be canceled, set as canceled
                // return true/false if order was canceled
            }
            public bool AddItemToOrder(Guid orderId, OrderItemDTO ItemToAdd)
            {
                // Retrieve order from database
                // Determine if the item can be added to the order
                // Add a new item row in the database
                // return true/false if item was added to the order
            }
            public bool ProcessOrder(Guid orderId)
            {
                // Check to ensure this order can be processed.
                // Validate order based on business rules
                // Update the stock levels of products ordered
                // return true/false if order was processed
            }
        }

    在上面的代码中,所有和订单处理有关的逻辑都写在OrderManager类中。类中的每一个方法就对应业务逻辑中的一个流程或者说对应一个use case,例如:CancelOrder就是取消订单。

    通过Transaction Script的方式来组织业务逻辑,一个很好的好处就是直观,很容易理解代码在做什么。如果有新的流程来了,再加一个方法就行了。

    同时,这种组织方式的弊端就在于,当系统中的业务变得多而且复杂的时候,那么这样的方法就开始变多,最后的结果就是一个类中有成百上千个方法。而且这些方法中,除了一些基本的验证可以提取为方法重用,其他的流程控制代码在很多的地方要重写,特别是当有两个流程差不多的时候,代码不可避免的重新写。于是,这样的类开始变得庞大而难以管理。

    Active Record

    这种组织方式已经是我们最熟悉的了。

    在很多的项目中,我们的业务实体类基本和数据库中表是一一对应的,例如一个Order业务类就是代表了数据库中的Order表。而且在平时项目中,”朴实的三层(N层)”,一般都是基于这种方式在组织逻辑。

    这种方式的最大的区别就是每个业务类自己负责自己的数据存取,也就是说在业务类中包含了业务逻辑的处理和数据的存取。

    [1] [2] [3] [4]


查看所有评论

网友对asp.net架构设计解惑的评论

网名:
主题:
内容:
验证码: