三层架构实战篇 上
上篇博客我们已经对三层架构有了一定的了解,可是光说不练假把式,就像站在岸上学游泳。不下水你永远学不会,编程也一样。
我们要做的样例是系统登录的小样例,要求是输入username和password。点击登录,系统提示登录成功。本例使用的IDE是VS2012,使用的数据库是SQL Server2008,使用的语言是C#。
做样例的时候。是照着视频一步一步来的。所以人家敲错哪里,你也敲错哪里,人家改哪里你也跟着改哪里,这样的感觉很不爽。所以在总结的时候。认为从宏观到微观的顺序比較合适,这正是软件project所谓的先概要设计,再具体设计的思想。
既然是三层架构的实践。那么首先把层次结构建起来:点击新建项目,建立一个Windows窗口应用程序。显然这是U层的东西,然后右击解决方式,加入新项目。给此解决方式加入三个类库类型的项目,各自是D层、B层和E层(Entity层,即数据模型),建完之后例如以下图所看到的:
三层的基本结构搭建起来了,那么就要为每一层加入类和引用了。依据依赖关系。三层都要依赖于实体层,所以在每一层的引用中都要加入引用LoginModel。然后依据UI—>BLL—>DAL的依赖关系,分别为UI层加入引用BLL层,BLL层引用DAL层。
最后依据自己的设计。为每一层加入对应的类。详细例如以下图所看到的:
在这里简要说明一下每一个类都是干嘛的。从上到下来看。BLL的LoginManager类负责登录管理。调用DAL层的函数,推断是否登录成功以及相关的业务处理等;DAL的DbUtil类就是一个连接字符串,单独拿出来是想提高复用性,而ScoreDAO类负责向数据库中写入数据,UserDAO类则仅仅是负责登录连接数据库,这似乎是设计模式的单一职责的意思。LoginModel层的UserInfo类就是一个数据实体,为了方便三层之间的通信。
最后的U层就是编写button的单击事件了。详细的代码大家自己可以写出来,我就不再赘述了。
以下我分享一下在调试过程中遇到的问题及解决的方法:
一開始没找到错误所在,就点击了以下的“获取此异常的常规帮助”
还是没能找到。后来依据错误提示“Value附近有语法错误”,想到肯定是keywordValue的问题。于是发现了错误所在
然后。程序完美的执行了。后来我看别人的连接字符串中的參数Server值用的都是ip,自己也换成了IP地址。然而执行时报错例如以下:
看到内存已损坏的字眼。认为有这么严重吗?于是去找度娘问了问。度娘说:It is a piece of cake!
用管理员身份执行CMD:netsh winsock reset 回车就可以。详细原因大家自己能够查阅相关文档,限于篇幅,不再深究。