基于.NET平台的分层架构实战(一)——综述

通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫“基于.NET平台的分层架构与设计模式应用研究”)。通过做这篇论文,我对分层架构有了一定的了解,所以,就萌发了想写一个文章系列,详述一下分层架构。然而,论文的理论性太强,不适合在网上发布,尤其不适合初学者理解,所以,我想在这个文章系列中,少讲理论,而是通过做一个完整的案例来讨论分层架构的基本方法,这样会直观很多。希望在这个文章系列的写作过程中,能和朋友们一起学习,一起进步。

为了让朋友们把主要精力放在理解分层架构而不是案例本身,我准备选择一个相对简单的留言本系统作为Demo,这个系统的名字就叫做NGuestBook。

初步计划将这个文章系列分为以下几篇:
1.综述
2.系统需求分析及数据库设计
3.架构概要设计
4.实体类的实现
5.接口的设计与实现
6.依赖注入及IoC的设计与实现
7.数据访问层的第一种实现——Access+动态生成SQL语言
8.数据访问层的第二种实现——SQLServer+存储过程
9.数据访问层的第三种实现——基于NBear框架的ORM实现
10.业务逻辑层的实现
11.表示层的实现

当然,以上只是初步计划,在写文章的过程中可能会根据具体情况适当调整,但是内容大体就是这些。

这个文章系列不会对所用到的技术进行详细讲解,具体请参考相关文献,阅读文章前最好能对以下技术有一个了解:
1.C#语言
2.ASP.NET
3.设计模式
4.关系数据库基础知识
5.软件架构基本原则与软件工程基础知识
6.基于NBear框架的ORM技术
7.JavaScript,Ajax
8.ASP.NET AJAX框架(特别是客户端编程)
9.HTML,CSS,标准化布局

另外,本文章系列是基于.NET framework2.0框架平台进行讨论,3.5平台的新特性(如LINQ、ASP.NET MVC等)不会讨论,IDE使用Visual Studio 2005,数据库会用到SQLServer2005 Express和Access2003。

 

用Nfx类库建立三层应用 
http://forum.entlib.net.cn/showtopic-1363.aspx

--引用--------------------------------------------------
个人知识管理: 没有做过几个成功的大型项目,还是少写这方面的内容为好。分层这东西,技术要很全面,SOA、COM+、数据库、负载平衡....至少要研究Sharepoint、Reporting等等后再说
第一次给人拨泠水
--------------------------------------------------------
同意这种观点

 

--引用-------------------------------------------------- 
李中华: 数据库设计应该属于详细设计的最后一部分或者在详细设计之后的一个设计。 
不应该在架构概要设计之前。 

数据库的在这个系统中的主要功能就是存储,存储的内容应该是用户的数据,除了用户的数据,还可能会存储一些系统配置方面的数据。 

在设计中,根据需求,首先要分析与设计的就是UI层,它直间面对用户,用户的需求,很大部分会体系在UI层上。一个不合理的UI,很有可能导致你的业务层也不合理。当明确UI层后,再进行业务层的设计,寻找边界类、控制类、实体类,这里很可能会迭代设计你的UI层,这次的迭代设计,不需要详细到你的类有哪些具体的字段,但可以有一两个主要字段,当然,必须拥有主要的方法,详细的字段,应该是详细设计的工作。业务层里,你还要设计业务流程。这里只是设计,不谈实现,也不要去实现,但可以写一些伪代码。业务层设计好后,再来设计数据层。数据层的数据模型可以根据业务层中的实体类来设计,但他们不一定要一一对应。概要设计完成了,接下来就是细化,进行详细设计。 
-------------------------------------------------------- 

恩,同意您的看法。数据库的设计应该放在概要设计之后。这里文章的写作顺序并不代表实际的设计顺序,在这个文章系列中,由于Demo非常简单,所以实际上不存在真正的需求分析和数据库设计,这里所谓的“数据库设计”只是一个简单实体、关系和数据表介绍,让读者对Demo有个大体的认识。 

这个文章系列中,只是讨论空间建构,并没有涉及开发顺序问题,所以文章顺序并不代表开发顺序,呵呵。 

另外,你这段描述对我非常有启发,也很有学习价值,谢谢!!!

 

转自:https://www.cnblogs.com/leoo2sk/archive/2008/06/16/1223312.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 通过 JDBC 连接 SQL Server

文章目录1.配置 SQL Server 20122.开启 Telnet 服务3.测试1433端口是否打开4.下载JDBC5.Eclipse 连接 SQL Server6.测试连接本文用到的软件版本以及相关环境: Eclipse Photon Release (4.8.0) JDK-10.0.2 SQL Server 2012 1.配置 SQL Server 2012 打开 SQL Server …

PWN-PRACTICE-CTFSHOW-4

PWN-PRACTICE-CTFSHOW-4BJDCTF2020-babyrouterBJDCTF2020-babystackBJDCTF2020-dizzyBJDCTF2020-encryptde stackBJDCTF2020-babyrouter 栈溢出,ret2libc # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" #ioprocess("./pwn1&…

SQL Server 登录更换【Windows身份验证】为【SQL Server 身份验证】

1、安装好 SQL Server 后,使用 Windows 身份验证登陆SQL,然后在服务器上右键,选择【属性】,在弹出的窗口中选择【安全性】,在服务器身份验证项里勾选【SQL Server 和 Windows 身份验证模式】,点击确定保存 …

基于.NET平台的分层架构实战(二)——需求分析与数据库设计

基于.NET平台的分层架构实战(五)——接口的设计与实现 基于.NET平台的分层架构实战(四)——实体类的设计与实现 基于.NET平台的分层架构实战(三)——架构概要设计 基于.NET平台的分层架构实战&#xff0…

PWN-PRACTICE-CTFSHOW-5

PWN-PRACTICE-CTFSHOW-5BJDCTF2020-router36D杯-签到36D杯-babyFmtstr36D杯-MagicStringBJDCTF2020-router 36D杯-签到 栈溢出&#xff0c;用ROPgadget找到一个"sh"字符串&#xff0c;ROP&#xff0c;程序过滤了cat和空格&#xff0c;more<flag绕过即可 # -*- c…

Hexo 博客自定义一个不使用主题模板渲染的独立页面

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; Hexo 是一个轻量、快速&#xff0c;简单和强大的博客框架&#xff0c;当我们需要发布博文的时候&#xff0c;只需要…

log4net部分配置说明

第一步&#xff1a; 添加并应用Log4net.dll。然后在Web.config文件中添加下面的配置局 <configSections> <section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> 第二步…

网站ICP备案和公安备案流程

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录-- ICP备案 1、填写信息验证备案类型2、产品验证3、填写网站信息4、上传资料5、人脸核验或幕布拍照核验6、…

PWN-PRACTICE-CTFSHOW-6

PWN-PRACTICE-CTFSHOW-636D杯-MengxinStack36D杯-tang1024杯-1024_happy_stack1024杯-1024_happy_checkin36D杯-MengxinStack 程序开了canary和PIE保护 泄露远程libc版本&#xff0c;为 libc6_2.23-0ubuntu10_amd64.so from pwn import * ioremote("pwn.challenge.ctf.s…

CSS 与其预处理语言 Sass、Less、Stylus 之间的转化

预处理语言的由来&#xff1a;CSS 是一门非程序式语言&#xff0c;没有变量、函数、SCOPE&#xff08;作用域&#xff09;&#xff0c;需要书写大量看似没有逻辑的代码&#xff0c;不方便维护及扩 展&#xff0c;不利于复用&#xff0c;为了让 CSS 富有逻辑性&#xff0c;短板不…

7款免费原型设计工具

身为一位产品经理或设计师&#xff0c;原型设计工具是必不可少的工作伙伴。但我们难免会遇到预算有限的时候&#xff0c;这时候&#xff0c;去哪里寻找一款好用的免费原型设计工具呢&#xff1f;以下&#xff0c;小编为大家精心挑选了7款免费的原型工具&#xff0c;并对其进行了…

PWN-PRACTICE-CTFSHOW-7

PWN-PRACTICE-CTFSHOW-7大吉大利杯-easyrop大牛杯-guess吃鸡杯-win_pwn吃鸡杯-easy_canary大吉大利杯-easyrop 栈溢出&#xff0c;SROP # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" context.arch"amd64" #32位和64位的sigframe结…

【译】谨慎使用CSS中的波浪选择器

最近我的一些项目都遇到了一些类似的样式问题。它们都错误地使用了波浪选择器&#xff0c;并造成了很多地方的CSS代码臃肿( CSS Bloat )。大家可能以前也都遇到或者使用过波浪选择器&#xff0c;毕竟它作为CSS选择器已经很长时间了&#xff0c; 甚至IE7都支持 。波浪选择器用来…

HTML + CSS 实现 GitHub 项目标签、徽章样式

经常会在GitHub上项目介绍的README.md文件中看到许多漂亮的标签&#xff0c;这些标签可以显示version、stars、license等信息 我们可以通过 https://shields.io/ 这个网站在线制作图标&#xff0c;填写label、message、color三个字段&#xff0c;点击Make Badge就可以生成图标…

PWN-PRACTICE-CTFSHOW-8

PWN-PRACTICE-CTFSHOW-8吃瓜杯-wuqian月饼杯II-简单的胖月饼杯II-容易的胖击剑杯-pwn01-My_sword_is_ready吃瓜杯-wuqian 栈溢出&#xff0c;ret2text # -*- coding:utf-8 -*- from pwn import * context.log_level"debug" #ioprocess("./pwn1") ioremot…

nuget 包版本冲突解决 packages.config

开发项目中安装了Newtonsoft.Json组件&#xff0c;遇到了必须给Newtonsoft.Json降版本的问题。 原因是&#xff1a;项目是MVC项目&#xff0c;WebApi模块必须使用framework4.5.0.0的版本。而我们在安装其他组件时&#xff0c;不小心升级了Newtonsoft.Json,导致了系统可以编译通…

instant.page —— 一个 JS 脚本实现网站预加载,提升页面加载速度

instant.page 使用即时预加载技术&#xff0c;在用户点击之前预先加载页面。当用户的鼠标悬停在一个链接上超过 65 毫秒时&#xff0c;浏览器会对此页面进行预加载&#xff0c;当用户点击链接后&#xff0c;就从预加载的缓存中直接读取页面内容&#xff0c;从而达到缩短页面加载…

陀螺仪、罗经、IMU、MEMS四者的区别

罗经&#xff1a;罗经是航行器用来测量运动方位的&#xff0c;辅助定位的仪器。 磁罗经&#xff1a;磁罗经可以形象的看成指南针电罗经&#xff1a;电罗经就要用到用电源驱动的陀螺仪。 陀螺仪&#xff1a;是一种物体角运动测量装置。通过对陀螺仪双轴基点在不同运动状态下偏移…

PWN-COMPETITION-HGAME2022-Week1

PWN-COMPETITION-HGAME2022-Week1enter_the_pwn_landenter_the_evil_pwn_landoldfashion_orwser_per_fatest_your_nctest_your_gdbenter_the_pwn_land 栈溢出&#xff0c;需要注意的是下标 i 的地址比输入s的地址更高 s溢出会覆盖 i &#xff0c;于是需要小心地覆写 i 的值&am…

Hexo 博客添加 README.md 以及部署到 GitHub 丢失/显示不正常解决方法

GitHub 项目的README.md为自述文件&#xff0c;可对该项目进行介绍&#xff0c;解释等。 使用 Github Pages 和 Hexo 搭建的博客&#xff0c;如果在最开始建立仓库的时候没有创建README.md文件&#xff0c;那么在后期如何添加呢&#xff1f; 添加方法&#xff1a;在根目录 so…