Architecture 具有DAL体系结构的用户会话

Architecture 具有DAL体系结构的用户会话,architecture,data-access-layer,system-design,Architecture,Data Access Layer,System Design,我正在从头设计一个系统。 我正在考虑: 是否使用DAL与直接数据库访问(例如ORM) 如果我使用DAL,我是直接通过我的应用程序还是在DAL中存储/管理我的用户会话 基本架构是客户端->应用程序后端->DAL->DB您的数据访问层可以使用ORM工具(如Hibernate(Java)、NHibernate(.Net))来访问数据库。这没问题。您可以将功能抽象到模型层中,并在DAL项目上实现它,例如: public interface ICustomerPersistence { Custom

我正在从头设计一个系统。 我正在考虑:

  • 是否使用DAL与直接数据库访问(例如ORM)
  • 如果我使用DAL,我是直接通过我的应用程序还是在DAL中存储/管理我的用户会话

  • 基本架构是客户端->应用程序后端->DAL->DB

    您的
    数据访问层可以使用
    ORM
    工具(如Hibernate(Java)、NHibernate(.Net))来访问数据库。这没问题。您可以将功能抽象到模型层中,并在DAL项目上实现它,例如:

    public interface ICustomerPersistence
    {
       Customer Get(int id);
       bool Save(Customer customer);
    }
    
    并使用ORM或其他访问数据库的方式(ADO.NET或JDBC)实现它

    使用ORM工具,您的应用程序和数据库之间将有一个内部层。另一方面,ORM工具可以为您和您的团队提供一些生产力持久化对象,而不是编写SQL查询。在这两种情况下,SQL都必须是干净的,才能提供性能。使用ORM工具,您可能需要一个跟踪工具来查看ORM生成的SQL命令。对于NHibernate,有一个NHProf


    对于第二个问题,取决于您必须如何实现。大多数ORM实现,如Hibernate/NHibernate,从DAL的上层控制ISession对象。对于示例,作为web应用程序中的一个很好的实践,ISession在begin请求中打开,在end请求中关闭。有时这也是由交易完成的。

    谢谢@felipe,为了更清楚,我编辑了第一个问题。我添加了更多内容。无论如何,我建议您使用ORM工具实现DAL,但是,请确保您知道在使用ORM时会发生什么。请记住,如果它能帮助您找到解决方案,请检查它是否作为一个WSER。