cWeb是基于微软的.Net Framework 4框架,数据库是sql server 2008 r2。

cWeb开发框架下载,点击这里去下载

cWeb开发框架借鉴三层架构理论分为三层,分别是:cData、cBN和cWeb。cData是数据层,cBN是业务处理层,cWeb是业务展示层。解决方案如图示:

一、cData数据层

cData数据层,数据库字段的映射类。在其他开发框架中常见于datatable和dataview,也就是将数据库表映射成datatable,dataview继承datatable,并将其他如视图等的字段映射在dataview中。在类似于petshop等开发框架中分层可谓详细,虽然现在硬件的发展可以不用考虑继承、映射、调用等等的运行时间,但是对于大数据量下即使很小的优化都会起到极大的作用,所以直接的就是高效率的,简化后数据层都融合在了一起。

data层数据示例:

using System;

namespace AA.cData
{
/// <summary>
/// t_info 的摘要说明。
/// </summary>
[Serializable]
public class t_infoDV
{
/// <summary>
/// t_infoDV
/// </summary>
public t_infoDV()
{
} //============================数据库字段=================================// private long _ID = -1;
/// <summary>
/// ID
/// </summary>
public long ID
{
get
{
return _ID;
}
set
{
_ID = value;
}
} private string _t_info_title = null;
/// <summary>
/// t_info_title
/// </summary>
public string t_info_title
{
get
{
return _t_info_title;
}
set
{
_t_info_title = value;
}
} private DateTime _t_info_createtime = System.DateTime.MinValue;
/// <summary>
/// t_info_createtime
/// </summary>
public DateTime t_info_createtime
{
get
{
return _t_info_createtime;
}
set
{
_t_info_createtime = value;
}
} //============================扩展字段==================================// private string _t_info_title_like = null;
/// <summary>
/// t_info_title [模糊查询]
/// </summary>
public string t_info_title_like
{
get
{
return _t_info_title_like;
}
set
{
_t_info_title_like = value;
}
} }
}

  

二、cBN业务处理层

cBN业务处理层,也可以叫业务逻辑层。是数据层之上用来处理业务逻辑的方法,将除了web之外的所有业务处理都可以放在这个层里,比如添加、修改、删除、各种查询等方法,在web层仅仅调用一下就可以实现功能,也体现了业务逻辑通用原则,这样同样的业务处理就可以重复调用,提高了开发效率,减少了代码的冗长重复。

BN层示例:

using System;
using System.Collections.Generic;
using System.Text; using System.Data;
using System.Data.SqlClient; using cDB;
using AA.cData; namespace AA.cBN
{
/// <summary>
/// t_info 的摘要说明。
/// </summary>
public class t_infoBN
{
DataInfo cDI; /// <summary>
/// t_infoBN
/// </summary>
public t_infoBN()
{
cDI = new DataInfo();
} #region [添加|修改|删除] /// <summary>
/// [添加]
/// </summary>
/// <param name="tDV"></param>
/// <param name="msg"></param>
/// <returns></returns>
public int Add(t_infoDV tDV, out string msg)
{
try
{
mCommand oCommand = new mCommand(); oCommand.SqlTxt = "Insert into t_info(t_info_title,t_info_createtime)" +
" values(@t_info_title,@t_info_createtime)"; SqlParameter[] SqlItems = new SqlParameter[2]; SqlItems[0] = new SqlParameter("@t_info_title", SqlDbType.NVarChar);
SqlItems[0].Value = tDV.t_info_title; SqlItems[1] = new SqlParameter("@t_info_createtime", SqlDbType.DateTime);
SqlItems[1].Value = tDV.t_info_createtime; oCommand.AddParameter(SqlItems); int iResult = cDI.iCommandSql(oCommand); if (iResult > -1)
{
msg = "添加成功!";
}
else
{
msg = "添加失败!";
} return iResult; }
catch //(Exception ex)
{
//msg = ex.Message;
msg = "添加失败(异常)!";
return -11; //-11表示异常
}
} /// <summary>
/// [修改]
/// </summary>
/// <param name="tDV"></param>
/// <param name="msg"></param>
/// <returns></returns>
public int Edit(t_infoDV tDV, out string msg)
{ try
{
mCommand oCommand = new mCommand(); oCommand.SqlTxt = "update t_info set " +
"t_info_title=@t_info_title," +
"t_info_createtime=@t_info_createtime " +
"where ID=@ID"; SqlParameter[] SqlItems = new SqlParameter[3]; SqlItems[0] = new SqlParameter("@t_info_title", SqlDbType.NVarChar);
SqlItems[0].Value = tDV.t_info_title; SqlItems[1] = new SqlParameter("@t_info_createtime", SqlDbType.DateTime);
SqlItems[1].Value = tDV.t_info_createtime; SqlItems[2] = new SqlParameter("@ID", SqlDbType.BigInt);
SqlItems[2].Value = tDV.ID; oCommand.AddParameter(SqlItems); int iResult = cDI.iCommandSql(oCommand); if (iResult > -1)
{
msg = "修改成功!";
}
else
{
msg = "修改失败!";
} return iResult; }
catch //(Exception ex)
{
//msg = ex.Message;
msg = "添加失败(异常)!";
return -11; //-11表示异常
}
} /// <summary>
/// [删除]
/// </summary>
/// <param name="tDV"></param>
/// <param name="msg"></param>
/// <returns></returns>
public int Del(t_infoDV tDV, out string msg)
{
try
{
mCommand oCommand = new mCommand();
oCommand.SqlTxt = "delete t_info where ID=@ID";
SqlParameter[] SqlItems = new SqlParameter[1]; SqlItems[0] = new SqlParameter("@ID", SqlDbType.BigInt);
SqlItems[0].Value = tDV.ID; oCommand.AddParameter(SqlItems); int iResult = cDI.iCommandSql(oCommand); if (iResult > -1)
{
msg = "删除成功!";
}
else
{
msg = "删除失败!";
} return iResult;
}
catch //(Exception ex)
{
//msg = ex.Message;
msg = "删除失败(异常)!";
return -11; //-11表示异常
}
}
#endregion #region [查询]
/// <summary>
/// [返回数据分页]
/// </summary>
/// <param name="tDV"></param>
/// <param name="sqlWhere">where语句</param>
/// <returns></returns>
public DataTable GetDataList(t_infoDV tDV, string sqlWhere)
{ DataTable DTe = new DataTable(); mCommand oCommand = new mCommand(); StringBuilder SqlTxtPrefiex = new StringBuilder(" select ISNULL(count(ID),0) as Counts from View_t_info where 1 = 1 " + sqlWhere + " ");
SqlParameter tSqlItem = null; if (tDV.t_info_title != null)
{
SqlTxtPrefiex.Append(" and t_info_title = @t_info_title");
tSqlItem = new SqlParameter("@t_info_title", SqlDbType.NVarChar);
tSqlItem.Value = tDV.t_info_title;
oCommand.SqlParameters.Add(tSqlItem);
} if (tDV.t_info_title_like != null)
{
SqlTxtPrefiex.Append(" and t_info_title like @t_info_title_like");
tSqlItem = new SqlParameter("@t_info_title_like", SqlDbType.NVarChar);
tSqlItem.Value = "%" + tDV.t_info_title_like + "%";
oCommand.SqlParameters.Add(tSqlItem);
} oCommand.SqlTxt = SqlTxtPrefiex.ToString(); DTe = cDI.GetTable(oCommand);
return DTe;
} /// <summary>
/// [返回数据]
/// </summary>
/// <param name="tDV"></param>
/// <param name="column">显示的列,默认为【*】全部</param>
/// <param name="sqlWhere">where语句</param>
/// <param name="beginIndex">开始记录</param>
/// <param name="endIndex">结束记录</param>
/// <param name="Order">排序,如【order by ID desc】</param>
/// <returns></returns>
public DataTable GetDataList(t_infoDV tDV, string column, string sqlWhere, long beginIndex, long endIndex, string Order)
{
if (string.IsNullOrEmpty(column))
column = " * "; mCommand oCommand = new mCommand(); StringBuilder cSqlTxtPrefiex = new StringBuilder("select * from NoPagedTable WHERE rowIndex>=@beginIndex and rowIndex<=@endIndex"); SqlParameter[] SqlItems = new SqlParameter[2]; SqlItems[0] = new SqlParameter("@beginIndex", SqlDbType.BigInt);
SqlItems[0].Value = beginIndex; SqlItems[1] = new SqlParameter("@endIndex", SqlDbType.BigInt);
SqlItems[1].Value = endIndex; oCommand.SqlParameters.AddRange(SqlItems); if (Order == string.Empty)
{
Order = " order by ID DESC ";
} StringBuilder SqlTxtPrefiex = new StringBuilder(
"WITH NoPagedTable AS " +
"(" +
"SELECT ROW_NUMBER() OVER (" + Order + ") AS rowIndex," + column + " FROM View_t_info where 1 = 1 " + sqlWhere + " "); SqlParameter tSqlItem = null; if (tDV.t_info_title != null)
{
SqlTxtPrefiex.Append(" and t_info_title = @t_info_title");
tSqlItem = new SqlParameter("@t_info_title", SqlDbType.NVarChar);
tSqlItem.Value = tDV.t_info_title;
oCommand.SqlParameters.Add(tSqlItem);
} if (tDV.t_info_title_like != null)
{
SqlTxtPrefiex.Append(" and t_info_title like @t_info_title_like");
tSqlItem = new SqlParameter("@t_info_title_like", SqlDbType.NVarChar);
tSqlItem.Value = "%" + tDV.t_info_title_like + "%";
oCommand.SqlParameters.Add(tSqlItem);
} SqlTxtPrefiex.Append(")"); oCommand.SqlTxt = SqlTxtPrefiex.ToString() + cSqlTxtPrefiex.ToString(); return cDI.GetTable(oCommand);
} /// <summary>
/// [返回DataTable]
/// </summary>
/// <param name="tDV"></param>
/// <param name="topNum">返回行数,默认【0】全部</param>
/// <param name="column">显示的列,默认为【*】全部</param>
/// <param name="sqlWhere">where语句</param>
/// <param name="order">排序,如【order by ID desc】</param>
/// <returns></returns>
public DataTable GetDataTable(t_infoDV tDV, int topNum, string column, string sqlWhere, string order)
{
if (string.IsNullOrEmpty(column))
column = " * "; string topNumSql = "";
if (topNum > 0)
topNumSql = " top " + topNum.ToString(); DataTable DT = new DataTable(); mCommand oCommand = new mCommand(); StringBuilder SqlTxtPrefiex = new StringBuilder(" select " + topNumSql + " " + column + " from View_t_info where 1 = 1 " + sqlWhere + " ");
SqlParameter tSqlItem = null; if (tDV.ID != -1)
{
SqlTxtPrefiex.Append(" and ID=@ID");
tSqlItem = new SqlParameter("@ID", SqlDbType.BigInt);
tSqlItem.Value = tDV.ID;
oCommand.SqlParameters.Add(tSqlItem);
} if (tDV.t_info_title != null)
{
SqlTxtPrefiex.Append(" and t_info_title = @t_info_title");
tSqlItem = new SqlParameter("@t_info_title", SqlDbType.NVarChar);
tSqlItem.Value = tDV.t_info_title;
oCommand.SqlParameters.Add(tSqlItem);
} if (tDV.t_info_title_like != null)
{
SqlTxtPrefiex.Append(" and t_info_title like @t_info_title_like");
tSqlItem = new SqlParameter("@t_info_title_like", SqlDbType.NVarChar);
tSqlItem.Value = "%" + tDV.t_info_title_like + "%";
oCommand.SqlParameters.Add(tSqlItem);
} if (string.IsNullOrEmpty(order))
order = " order by ID desc "; SqlTxtPrefiex.Append(" " + order + " "); oCommand.SqlTxt = SqlTxtPrefiex.ToString(); DT = cDI.GetTable(oCommand);
return DT;
} #endregion }
}

  

三、cWeb业务展示层

cWeb业务展示层,用于业务逻辑展示的层,调用BN层的函数直接显示在web页面中。

web层示例:

infolist.aspx.cs代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; using System.Data; using AA.cData;
using AA.cBN;
using cPage; namespace AA.cWeb.manage.info
{
public partial class infolist : System.Web.UI.Page
{
cUser cu = new cUser(); public int p = 1; //页码 protected void Page_Load(object sender, EventArgs e)
{
#region [判断是否登录]
if (!cu.isLogin())
{
cGlobal.frameGoUrl(this, "../../default.aspx");
return;
}
#endregion #region 分页获得页码
string _p = Request.QueryString["p"]; if (string.IsNullOrEmpty(_p))
_p = "1"; if (cGlobal.IsIntType(_p))
{
p = Convert.ToInt32(_p);
}
else
{
cGlobal.showBoxBack(this, "页码不正确!");
return;
}
#endregion #region [判断是具有访问权限]
if (!cDataCommon.userPagePower(cu.userID, "0202"))
{
cGlobal.showBoxBack(this, "您没有权限访问!");
return;
}
#endregion #region [获得在【系统设置=》角色管理=》权限设置】中点击某一菜单后,“菜单功能权限设置”设置的功能]
string userPageFunctionPower = cDataCommon.userPageFunctionPower(cu.userID, "0202");
//判断是否具有“添加”功能
if (userPageFunctionPower.IndexOf("|add|") > -1)
btnAdd.Visible = true;
else
btnAdd.Visible = false;
#endregion if (!Page.IsPostBack)
{ dataBind();
} } protected void dataBind()
{
string _url = "infolist.aspx?p=[#p#]";
int _pageNum = 10; // 中间页码数量
int _pageSize = 10; //每页记录数
int _beginIndex = 0;
int _endIndex = 0; t_infoBN tBN = new t_infoBN();
t_infoDV tDV = new t_infoDV(); DataTable rcDT = tBN.GetDataList(tDV, ""); lblpage.Text = mPage.getPage(Convert.ToInt32(rcDT.Rows[0][0].ToString()), _pageSize, _pageNum, p, out _beginIndex, out _endIndex, _url); DataTable DT = tBN.GetDataList(tDV, "", "", _beginIndex, _endIndex, ""); rlist.DataSource = DT;
rlist.DataBind(); } protected void rlist_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemIndex > -1)
{
((LinkButton)e.Item.FindControl("lnkbtnDel")).Attributes["onclick"] = "return confirm('确认要删除吗?');";
}
} protected void rlist_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "del")
{
try
{
long _ID = Convert.ToInt64(((HiddenField)(e.Item.FindControl("hfID"))).Value); t_sys_logBN tBN = new t_sys_logBN();
t_sys_logDV tDV = new t_sys_logDV(); tDV.ID = _ID; string msg = "";
int iResult = -2; iResult = tBN.Del(tDV, out msg); if (iResult >= 0) //0,执行完成,>1,执行完成影响的记录数
{
cGlobal.showBoxGo(this, "删除成功!", Request.Url.ToString());
}
else
{
cGlobal.showBoxBack(this, "删除失败!");
} }
catch
{
cGlobal.showBoxBack(this, "数据格式不正确(异常)");
}
}
} }
}

  

更详细的介绍和cWeb源代码,去这里下载

原帖地址:cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)

bubufx提供,禁止转载。

cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(二)的更多相关文章

  1. 基于ASP.NET MVC的快速开发平台,给你的开发一个加速度!

    基于ASP.NET MVC的快速开发平台,给你的开发一个加速度! bingo炸了 2017/4/6 11:07:21 阅读(37) 评论(0) 现在的人做事情都讲究效率,最好能达到事半功倍那种效果,软 ...

  2. cWeb开发框架,基于asp.net的cWeb应用开发平台介绍(一)

    cWeb开发框架是基于asp.net的B/S应用开发平台,采用三层架构理论,应用简单.代码简洁.运行快速. cWeb是bubufx提供,是分享资源,无任何版权限制,bubufx继续传承互联网精神,可随 ...

  3. 基于Asp.Net Core,利用ZXing来生成二维码的一般流程

    本文主要介绍如何在.net环境下,基于Asp.Net Core,利用ZXing来生成二维码的一般操作.对二维码工作原理了解,详情见:https://blog.csdn.net/weixin_36191 ...

  4. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  5. JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台

    此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...

  6. 微微信.NET:开源的ASP.NET微信公众号应用平台

    题记: 平时喜欢使用 C# 编程.近半年玩微信公众平台,看到一些微信的应用系统大多是PHP.Python的,于是就有想法做一套开放的 C# ASP.NET的微信应用系统. 微微信.NET  基于ASP ...

  7. UCML 2.0 For ASP.NET开发平台简介

    互联网时代,我们能跟上网络变革的步伐吗?我们的产品领先于竞争对手吗?我们能够满足日益个性化的客户需求吗? 采用新的软件开发方法是我们的首要选择. 第一个全面支持ASP.NET的应用框架开发平台诞生了— ...

  8. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)

    基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二) 之前文章中给大家说明了下我这个小小的想法,发现还是有不少人的支持和关注.你们的鼓励是对我最大的支持. 我总结了了 ...

  9. 基于ASP.NET Core 3.0快速搭建Razor Pages Web应用

    前言 虽然说学习新的开发框架是一项巨大的投资,但是作为一个开发人员,不断学习新的技术并快速上手是我们应该掌握的技能,甚至是一个.NET Framework开发人员,学习.NET Core 新框架可以更 ...

随机推荐

  1. 将时区格式的时间转换为易于阅读的标准格式"yyyy-MM-dd"

    Date的显示格式就是时区格式, String 标准格式 = new SimpleDateFormat("yyyy--MM--dd").format(new Date());

  2. 禁用 baloo_file_extractor 加速 ubuntu 14.04 (KDE)

    在复制了一堆零散文件后,系统同然变得奇卡,看看cpu和ram都占用不高,但看到这个进程 baloo_file_extractor 时不时地冒一下泡,怀疑是它在频繁访问硬盘.禁止它自动启动的方式: $ ...

  3. nginx做nodejs(express等通用)反向代理

    首先配置环境nginx+nodejs...(没有请看我的其他文章,此处不重复) cd 到nginx的site-available目录 ubuntu的在 cd /etc/nginx/site-avail ...

  4. window 下如何安装ghost博客

    1.安装nodejs # Node v0.12.x and v4.2+ LTS - supported 我本地安装的是4.2 安装其他版本可能提示系统不兼容 2.安装mysql 3.安装bower 4 ...

  5. Html 开发工具 之Hbulider

    下载地址 : 百度搜索该名字即可 或 点击此处 选择  文件->新建Web项目 输入项目名称即可  如下图 它会自动生成一些 文件夹 或文件,不需要的删除即可.

  6. css实现隐藏显示

    <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" ...

  7. 将对象序列化,反序列化到XML

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  8. javascript原始数据类型compareto引用数据类型--近3天不太会的地方

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两 ...

  9. 解决Android应用安装快完毕时提示签名冲突

    最近开发了一个Android手机应用,自己用Eclipse调试安装没问题,使用其他人调试生成的bin下的apk就会出现问题,安装到最后提示"安装签名冲突"错误,想了一下估计是没有给 ...

  10. Centos 6.7 安装smokeping (最完整教程)

    本教程需要的源码包一并上传了,届时可以直接上传到linux系统里面! 需要编译的fping.echoping.smokeping源码包,链接:http://pan.baidu.com/s/1pL4HL ...