Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 2----整体架构

简介:

 就以一个简单的DirectCenter项目开始介绍这个框架吧,DirectCenter主要分为用户管理,部门管理,公司管理三个模块。首先先搭建起解决方案DirectCenter:
          DirectCenter:           
                   DirectCenter.Model    (类库项目)实体类库,其中包括hibernate映射文件(可以把映射文件放到DAL层,这样使Model也比较单纯,而DAL则只是Nhibernate的完整实现)
                   DirectCenter.IDAL     (类库项目)数据访问层接口   
                   DirectCenter.DAL       (类库项目)数据库访问层实现(采用NHibernate)
                   DirectCenter.IBLL     (类库项目)业务层接口
                   DirectCenter.BLL      (类库项目)业务层实现(使用IDAL,通过spring.net的IOC注入实际的数据访问层)
                   DirectCenter.App      (类库项目)系统的配置,其中包括Nhibernate,Spring.net的一些配置信息,业务层的DAL注入.
                   DirectCenter.UnitTest  (类库项目)  使用nunit对业务层进行单元测试

                   DirectCenter.DTO    (类库项目)    data transform  object 用于和前台UI层交互的实体。之所以分出来,也是为了考虑不只是为了Web项目,同时包括WebService等其它UI.(可能会有不少人会问已经有Model了,为什么还需要DTO?)

                   DirectCenter.Controllers  (类库项目)   Web控制器。用户请求和后台业务层的中转,接收并分析用户请求,调用业务层完成请求,再分发给用户。(注意这里调用的是IBLL,是业务逻辑接口,也是通过Spring.Net的IOC注入具体的业务实现)。
                  
DirectCenter.Web (Web Application)  单纯的View层,主要由ExtJs完成界面和Ajax请求。

              当然,这里也可以加一个Controllers的单元测试项目,不过我觉得这里很多时候用处不是很大。因为这里Controllers的工作比较统一和单纯了。
         首先先设计和建立数据库,字段和说明如下:
            未命名.bmp

        数据库中没有外键关系,因为一对多,多对多这些关系使用NHibernate的持久层建立和维护,每个表中都有一个Version字段,这是为了使用Nhibernate内置的对象的版本控制来解决并发问题。
       接下来的工作就简单了许多,因为今天我们只要完成实体就行,而实体类和映射文件的工作有一些辅助工具可以帮我们生成,比如codesmith,Nconstruct,Database2Sharp等,不过我还没有发现哪个工具能够很好的生成关系映射.这里只把User的类和映射文件放在这里,其它的两个可以在源代码附件中找到。

User.cs

 

 

 

User.hbm.xml

   注:User的表名和实体名不一致的原因是因为User是数据库中的关键字。另外需要注意的是,映射文件中的命名空间要正确,映射文件(*.hbm.xml)不要忘了设置成Embedded Resource (嵌入式资源)。
     
    数据库设计,实体,映射文件是使用这个框架开发最关键的,毕竟是转换需求的最重要的一步。如果设计的好的话,接下来的开发相对容易多了。下次介绍数据访问层和业务层的实现。
   
   代码

作者:孤独侠客似水流年
出处:http://lonely7345.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

分类: .NET

本文转自孤独侠客博客园博客,原文链接:http://www.cnblogs.com/lonely7345/archive/2008/08/31/1280719.html,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1323 3
|
11月前
|
JavaScript 前端开发 Java
垃圾分类管理系统基于 Spring Boot Vue 3 微服务架构实操指南
本文介绍了基于Java技术的垃圾分类管理系统开发方案与实施案例。系统采用前后端分离架构,后端使用Spring Boot框架搭配MySQL数据库,前端可选择Vue.js或Java Swing实现。核心功能模块包括垃圾分类查询、科普教育、回收预约等。文中提供了两个典型应用案例:彭湖花园小区使用的Swing桌面系统和基于Spring Boot+Vue的城市管理系统,分别满足不同场景需求。最新技术方案升级为微服务架构,整合Spring Cloud、Redis、Elasticsearch等技术,并采用Docker容器
619 1
|
7月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1238 2
Spring Boot 3.x 微服务架构实战指南
|
7月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
808 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
8月前
|
Java 数据库 数据安全/隐私保护
Spring Boot四层架构深度解析
本文详解Spring Boot四层架构(Controller-Service-DAO-Database)的核心思想与实战应用,涵盖职责划分、代码结构、依赖注入、事务管理及常见问题解决方案,助力构建高内聚、低耦合的企业级应用。
1543 1
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
1485 0
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping("/user/{id}")` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable("自定义名")` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
874 0