现在有时间整理一下,这段时间开发中,对C#开发的一些新理解.Interface(接口)在刚开始做开发时,很少用到,直到慢慢接触到多层时,才慢慢了解.
一般现在的asp.net程序都是采用三层结构开发.
一般分为模式,数据业务逻辑层,业务逻辑层,表现层.
为了使开发出来的项目支持多种服务库,比如:ACCESS,SQLSERVER,MYSQL..中间加了一个数据业务逻辑接口层.定义统一的接口.
例:

namespace ADDPaper.IDAL
{
    
    /// <summary>
    /// Interface for the Order DAL
    /// </summary>
    public interface IOrder
    {

        /// <summary>
        /// Method to insert an order header
        /// </summary>
        /// <param name="order">Business entity representing the order</param>
        /// <returns>OrderId</returns>
        ///
       
        void Insert(OrderInfo order);

        /// <summary>
        /// Reads the order information for a given orderId
        /// </summary>
        /// <param name="orderId">Unique identifier for an order</param>
        /// <returns>Business entity representing the order</returns>
        OrderInfo GetOrder(int orderId);
    }
}


然后在开发需要支持的服务库业务逻辑,不同的数据库,对应的业务逻辑也有所不同.我们这里需要把每个数据操作的方法都写好.
例:
namespace ADDPaper.AccessOrder
{
    public class order: IDAL.IOrder
    {
        public void Inser(OrderInfo order)
        {
           //实现ACCESS插入的代码;
        }
    }
}

namespace ADDPaper.SQLServerOrder
{
    public class order: IDAL.IOrder
    {
        public void Inser(OrderInfo order)
        {
           //实现SQLServer插入的代码;
        }
    }
}

到了BLL层,当要向数据库插入记录时,代码可以这样写:
IDAL.IOrder order;
string databasename="sqlserver";//要用的数据库

swich(databasename)
{
    case "sqlserver":
        order=new SQLServerOrder.order();
        break;
    case "Access":
        order=new AccessOrder.order();
        break;
}
当然这里处理你可以使用反射来创建相应的类.
在封装组件的时候,使用者在调用方法的时候,不需要知道究竟是用什么数据库对象,只需要调用接口来得到数据库处理方法就可以了。


相关文章: