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

相关文章链接

最新新闻资讯

    asp.net架构设计解惑

    asp.net架构设计解惑


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


     

    例如:

    代码

    public class Order
    {
        private Guid _id;
        private DateTime _creationDate;
        private int _shippingMethod;
        private int _status;
        private List<OrderItems> _orderItems;
        public Guid Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public List<OrderItems> OrderItems
        {
            get { return _orderItems; }
            set { _orderItems = value; }
        }
        // Business Logic
        public void Place()
        {
            // Validate order based on business rules to ensure it is in
            // a good state to add to the database
            // Check for stock availablity on items ordered
            this.Add();
        }
        public void Cancel()
        {
            // Check to ensure this order can be canceled.
            this.Status = Status.Cancelled();
            this.Save();
        }

        public void ProcessOrder()
        {
            // Check to ensure this order can be processed.
            // Validate order based on business rules
            // Udpate the stock levels of products ordered
        }

        // Data Access Methods
        public void Save()
        {
            // Code to persist changes to the database
        }

        public void Add()
        {
            // Code to Add this object to the database
        }

        public void Delete()
        {
            // Code to remove this object from the database
        }

        public static List<Order> FindAll()
        {
            // Code to retrive all Orders from the database
        }
        public static Order FindBy(Guid id)
        {
            // Code to retrive a specific Order from the database
        }
    }

    上面的代码中,Order类包含了业务逻辑处理的代码,如Cancel, Process。通过这些方法也调用了数据访问代码来保存数据。

    如果在开发的项目中,业务类和数据表是一一对应的关系,例如在开发博客或者论坛,Active Record方式就很合适。

    相信很多的项目都是基于这个方式在开发和组织逻辑层,这个方式最大的弊端就是:数据库表只要改动,那么业务逻辑层动,而且这种变动会一直波及到了UI那端。

    Domain Model

    通过用这种方式来组织业务层的时候,业务层就只是关注把现实中的概念转换为相应的业务逻辑模型,不关注其他的方面。例如,在电子商务网站开发中,一些概念就被建模表示为一个个的业务模型(也就是业务类),Order, Shopping Cart, Customer等。而且和Active Record最大的区别就是:Domain Model中的业务类不是和表一一对应的,下图就是一个很好的例子:


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


查看所有评论

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

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