一起谈.NET技术,发布NGuestBook(一个基于.NET平台的分层架构留言本小系统)

  发布NGuestBook的动机说明
      大约在半年前,我在博客上发表了一个系列文章:《基于.NET平台的分层架构实战》。当时在讲解过程中用到了一个叫NGuestBook的案例,在那以后,有很多朋友留言或发E-mail希望能得到NGuestBook的完整源代码,以便对照文章研究学习。但是,在当时NGuestBook只是我虚拟的一个案例,并没有成型的系统和完整的源代码。

      但是后来一直有很多朋友询问这个事情,所以我觉得,将那个NGuestBook做出来还是很有必要的,所以,我花了两天的时间大约做出了这个NGuestBook,现在把它发布出来,希望能给大家一些帮助。

  这个NGuestBook与文章中案例的联系与区别
      虽然这个留言本系统与那个系列文章中的NGuestBook同名,但是就具体实现来说,有一些不同。虽然如此,“分层架构”这个核心还是一样的,所以,这个Demo完全可以和那个文章系列配套使用,因为其核心架构思想、方式基本一致,只是具体实现有了一些差别。

  NGuestBook功能概览
      NGuestBook是一个留言本系统,主要实现了以下功能:

      1.发布留言,浏览留言
      2.管理员的登录、登出
      3.管理员对留言进行审核、删除、回复

      下面给出几幅系统运行截图:

  NGuestBook总体架构说明
      1.整体采用三层架构:数据访问层、业务逻辑层、表示层
      2.数据访问层使用Linq to Sql,XML,及SQL语句方式分别实现一个,在这个发布版本中,只有Linq to Sql方式的数据访问层可以使用,另外两个留出扩展。
      3.业务逻辑层通过接口耦合数据访问层,全局采用Abstract Factory+反射机制+缓存机制实现依赖注入功能。
      4.表示层使用ASP.NET MVC实现,与业务逻辑层直接耦合。

      工程说明:

      NGuestBook.BusinessComponent:业务逻辑组件
      NGuestBook.Entities:实体类
      NGuestBook.Factories:依赖注入组件
      NGuestBook.Interfaces:接口组件
      NGuestBook.LinqDataComponent:使用Linq to Sql实现的数据访问组件
      NGuestBook.SQLDataComponent:使用SQL实现的数据访问组件
      NGuestBook.Utilities:工具组件
      NGuestBook.Web:表示层
      NGuestBook.XMLDataComponent:使用XML实现的数据访问组件

  特别说明
      1.数据库文件在/NGuestBook.Web/Data/SQLServer2005下。
      2.这个系统还不太完善,只为了突出架构特征,而一些细节像分页、验证码等功能没有加入。
      3.这个系统没有加入Ajax元素。
      4.这个系统的目的是交流学习的Demo,并不是真正要投入使用,如果真要做一个留言本,完全没有必要用这么复杂的架构,这里只是为了突出架构的方式。所以请不要在留言中表达“做个留言本没必要如此复杂”或“留言本我一个小时就能做出来”之类的意思。
  版权声明
      本系统和源代码部分或全部可以任意拷贝、传播或用于自己的系统中,但不包括用于商业用途。
      本系统中自由传播的成分仅仅包括代码,而其中一些原创的思想或模式(包括但不限於“数据验证模式”,“基于ASP.NET MVC的回传模型重组模式”等)等一些理论性内容已经纳入本人的论文选题内,所以不允许将本系统中原创的思想或模式撰写成论文,一经发现将追究法律责任。
  开发/运行环境
      Windows XP SP2 中文版
      Microsoft .NET framework 3.5 SP1
      Microsoft Visual Studio 2008 SP1
      Microsoft ASP.NET MVC RC
      Microsoft SQLServer2005 

  配置说明
      连接字符串在/NGuestBook.LinqDataComponent/app.config中,请根据具体情况自行修改。
      管理员的登录名和密码在/NGuestBook.Web/Web.config中,<appSettings>节点下的"AdminName"和"AdminPassword",默认均为"admin"。需要可以自行修改。

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

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

相关文章

jodconverter水印java,OpenOffice实现Office转Pdf(支持自定义添加水印、页眉、页脚)

java OpenOffice officetopdf最近项目需要实现下载Office文档时自动转成PDF文档&#xff0c;以下代码支持2003及2007版的Word,PPT,Excel转换&#xff0c;并支持自定义添加水印、页眉、页脚实现需要事先安装OpenOffice(我这里安装的是OpenOffice 4)OpenOffice 下载&#xff1a; …

当Java、C++、Python等编程语言都变成妹子。。。

试想一下&#xff0c;当Java、C、Python、Ruby、PHP、C#、JS等编程语言变成了动漫人物会是怎样的一幅场景呢&#xff1f;下面就一起看看在日本作家渡辺将人的笔下&#xff0c;各种编程语言都是哪类“美女”的吧&#xff01;Java犹如宫泽贤治的《不畏风雨》中出现的、性格木讷的…

对MySQL 进行深入学习是非常必要的

MySQL 在互联网行业非常流行&#xff0c;腾讯&#xff0c;阿里等互联网巨头都在深入使用MySQL&#xff0c; 我在腾讯时也使用MySQL&#xff0c;我在微信群里经常听到大家对MySQL 的意见也很大。在传统企业环境下使用最多的数据库产品是Oracle,SQL Server等企业级数据库&#xf…

windows下的NTP服务

近期的项目用到NTP&#xff0c;在使用的时候碰到一些问题&#xff0c;特记录如下&#xff1a; &#xff08;1&#xff09;NTP Server部分若要将内部时间服务器配置为与外部时间源同步&#xff0c;请按照下列步骤操作&#xff1a; 1. 将服务器类型更改为 NTP。为此&#xff0…

php判断是否是关联数组,php 关联数组判断是否为空

先看一个关联数组判断为空的代码&#xff0c;然后我们详细讲讲关于数据空的处理。$array array(0);if(empty($array)){echo "我空了 ";}else{echo "我不空啊 ";}$array[array]我是数组;print_r($array);$array[array1]我是数组1;print_r($array);unset($a…

4月 .NET 线上 Meetup,快来报名

点击蓝字关注我们.NET 6 preview 2 在3月11日已经发布&#xff0c;.NET 6 将是 .NET Core 3.1 之后的第一个 LTS 版本&#xff0c;也是微软开启全平台统一一个 .NET 计划以来的第一个 LTS 版本&#xff0c;意义不可谓不大&#xff0c;那么 .NET 5/6 又会带来哪些新特性呢&#…

机器学习资料第3版,助你继续成长!

之前分享的两份机器学习资料得到很多人的支持&#xff0c;因此小编决定再分享一份机器学习的资料。前两份资料传送门&#xff1a;【资源】机器学习资料包来袭机器学习资料升级版来了&#xff01;&#xff01;&#xff01;现在&#xff0c;再来看看有什么新资料吧。How to Build…

php框架快速入门,php-laravel4.0框架 简单快速入门

前提必须已经安装好了laravel4.0版本。写入权限&#xff1a;  安装完 Laravel &#xff0c;你还需要为web服务器设置 app/storage目录的写入权限。目录结构&#xff1a;  安装完框架后&#xff0c;你需要熟悉一下该项目的目录结构。app 文件夹包含了一些如views &#xff0…

Filter+Redis解决项目之间调用的幂等性

幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c;常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同在项目远程调用中&#xff0c;如果接口调用失败或者是超时&#xff0c;客户端都会…

人工智能、机器学习、深度学习,到底他们哥仨是什么关系?

有三个词&#xff0c;这两年出现的频率越来越高&#xff1a;人工智能&#xff08;AI&#xff09;&#xff0c;机器学习&#xff08;ML&#xff09;&#xff0c;深度学习&#xff08;DL&#xff09;&#xff0c;到底他们哥仨是什么关系&#xff1f;今天小编化繁为简&#xff0c;…

一起谈.NET技术,也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构

刚刚爱上MVC3.0&#xff0c;几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎&#xff0c;虽然已成功&#xff0c;但是还发现有点小疑问。随手贴出来希望大家指教指教。 MVC的视图文件目录被固定/Views目录内&#xff0c;区域视图文件也是被固定在/Areas目录下…

如何在 ASP.NET Core 中使用 HttpClientFactory ?

ASP.Net Core 是一个开源的&#xff0c;跨平台的&#xff0c;轻量级模块化框架&#xff0c;可用它来构建高性能的Web程序&#xff0c;这篇文章我们将会讨论如何在 ASP.Net Core 中使用 HttpClientFactory。为什么要使用 HttpClientFactory 可以用 HttpClientFactory 来集中化管…

php dechex 补零,PHP dechex()函数

定义和用法dechex()函数返回包含十六进制给出等效的十进制数参数的字符串。此函数返回带有十六进制字符的字符串。语法dechex ( int $number ) : string参数序号参数及说明1数字以等效的十六进制表示形式转换的十进制数字返回值PHPdechex()函数在字符串内部返回一个十六进制数。…

如何选择合适的损失函数,请看......

机器学习中的所有算法都依赖于最小化或最大化某一个函数&#xff0c;我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想象成起伏的山脉&#xff0c;梯度下…

关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法...

IIS中网站服务所占用的是80端口&#xff0c;出现这样的提示我们可以判定是端口冲突造成的&#xff0c;故&#xff0c;查看真正运行的占用80端口的程序&#xff0c; 在“运行”输入“cmd”&#xff0c;进入命令行&#xff0c; 输入netstat -abn > c:/port80.txt 此命令既是查…

OxyPlot.SkiaSharp中文显示乱码的问题

oxyplot 图表控件功能强大&#xff0c;使用很广泛。最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF&#xff0c;曲线图表初步测试&#xff0c;性能提升近10倍左右。基于SkiaSharp图形引擎的一些控件常遇见中文乱码的问题&#xff0c;所以改用OxyPlot.SkiaSharp时也有心里…

php return 变量,php内核笔记–函数返回变量return_value

//这些宏都定义在Zend/zend_API.h文件里#define RETVAL_RESOURCE(l)ZVAL_RESOURCE(return_value, l)#define RETVAL_BOOL(b)ZVAL_BOOL(return_value, b)#define RETVAL_NULL() ZVAL_NULL(return_value)#define RETVAL_LONG(l) ZVAL_LONG(return_value, l)#define RETVAL_DOUBLE…

想入门平均月薪2.58w人工智能领域?看看BAT的工程师在学什么

在这个贩卖焦虑的时代&#xff0c;职场人士和新晋父母成为了重点呵护对象&#xff0c;前有“摩拜同龄人”超越你&#xff0c;后有“月薪 3 万支撑不起的暑假班”等着你&#xff0c;而人工智能&#xff0c;又威胁要彻底抢走你的饭碗。京东无人分拣中心曝光&#xff0c;华尔街顶级…

formcheck 自定义验证

POST提交前的验证:formcheck new FormCheck(formular,{onSubmit:onsubmitfun});onSubmit:onsubmitfun提交前的验证function方法formcheck.options.submitfalse时就不提交了自定义验证function方法:<input type"text" name"custom" class"validate[…

.NET 6 Preview 3 发布

前言2021/4/8 .NET 6 Preview 3 发布&#xff0c;这个版本的改进大多来自于底层&#xff0c;一起来看看都有什么新特性和改进吧。库改进新增值类型作为字典值时更快的处理方法.NET 6 Preview 3 引入了新的 unsafe API CollectionsMarshal.GetValueRef&#xff0c;这个 API 允许…