基于MVC 的服务器和客户端的交互(一) - ASP教程_ASP编程_ASP开发技术文章 - 红黑联盟
2018-09-05 23:38
三层架构
提出了一种基于ASP.NET开发方式的三层架构的Web应用系统构造思想。其基本内容是:将面向对象的UML建模与Web应用系统开发相结合,将整个系统分成适合发方式的应用表示层、业务逻辑层、数据访问层和数据存储层四层结构。以此方式构造的Web应用不仅达到了代码组织结构清晰明朗、高重用性、适用性,易于维护和移植的目标,而且可以提高web应用系统的开发速度。解决了目前大型Web程序开发中,代码适用性、重用性差,及难于维护和移植的问题。
m编程模式中的一种。
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
MVC 模式同时提供了对 HTML、CSS 和JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
客户端与服务端的交互形式
在服务器端如何去获取数据库中的数据,并且对数据进行处理?如何建立与数据库的连接?如何对多个数据进行打包以实现服务器和客户端信息的交互?
如果是手机开发就是注重客户端的部分,后台的数据和程序基本没有改变。
我们以服务端连接SQL Server2012为例
connStr:就是我们连接数据库的字符串
当我们SQL Server数据库中使用SQL身份认证时,
uid:账号 ,pwd:密码
//数据库连接字符串fig来配置),多数据库可使用DbHelperSQLP来实现. public static string connectionString = PubConstant.ConnectionString; 例如可以通过查询某一字段来判断是否存在该字段 /// /// 判断是否存在某表的某个字段 /// ///表名称 ///列名称 /// 是否存在 public static bool ColumnExists(string tableName, string columnName) { string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'"; object res = GetSingle(sql); if (res == null) { return false; } return Convert.ToInt32(res) > 0; }
也可以将数据的相关操作代码进行封装在一个静态类中,然后进行调用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.OleDb; using System.Data; using System.Data.SqlClient; namespace CETP { class SqlHelper { /// /// 获取配置文件中的数据库连接字符串信息 /// private static string connStr = @"Data Source=CSIM;Initial Catalog=CETP;Integrated Security=True"; /// /// 自定义ExecuteNonQuery操作 /// ///需要执行的SQL语句(Insert,Update,Delete) ///长度可变数组,存储SQL语句中的变量值 /// 返回执行SQL语句后数据库受到影响的行数 /// 自定义ExecuteScalar操作 /// ///需要执行的SQL语句 ///长度可变数组,存储SQL语句中的变量值 /// 返回执行SQL语句所得数据集的第一行第一列 public static object ExecuteScalar(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); }//end of using }//end of using }//end of ExecuteScalar /// /// 自定义ExecuteReader操作 /// ///需要执行的SQL查询语句 ///长度可变数组,存储SQL语句中的变量值 /// 返回查询结果集 public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters) { SqlConnection conn = new SqlConnection(connStr); conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); return cmd.ExecuteReader(); }//end of using //end of using }//end of OleDbDataReader /// /// 自定义ExecuteDataTable操作,只用来执行查询结果比较小的时候 /// ///需要执行的SQL查询语句 ///长度可变数组,存储SQL语句中的变量值 /// 返回执行SQL语句后的数据集 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet dataset = new DataSet(); adapter.Fill(dataset); return dataset.Tables[0]; }//end of using }//end of using }//end of ExecuteDataTable /// /// 判断从数据库里取出的值是否为null,并进行转换 /// ///从数据库里取出的值 /// 如果数据库中该值为DBNull,则转换为null后返回;否则直接返回该值 public static object FromDbValue(object value) { if (value == DBNull.Value) { return null; } else { return value; }//end of if }//end of FromDbValue /// /// 判断将要写入数据库的值是否为null,并进行转换 /// ///将要写入数据库的值 /// 如果要写入的值为null,则将其转换成DBNull后返回;否则直接返回 public static object ToDbValue(object value) { if (value == null) { return DBNull.Value; } else { return value; }//end of if }//end of ToDbValue /// /// 返回数据库中所有表名 /// /// public static List GetShemaTableName() { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); DataTable dt = conn.GetSchema("Tables"); DataView dv = new DataView(dt); dv.RowFilter = "table_type='table'"; List names = new List(); foreach (DataRow item in dv.ToTable().Rows) { names.Add(item["Table_Name"].ToString()); Console.WriteLine(item["Table_Name"].ToString()); }; return names; } } /// /// 获得数据库某一张表的记录数 /// /// /// public static int GetCount(string selstr) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlDataAdapter oleda = new SqlDataAdapter(selstr, conn); DataSet ds = new DataSet(); DataTable dt = new DataTable(); oleda.Fill(ds, "11"); dt = ds.Tables["11"]; int MaxValue = dt.Rows.Count; return MaxValue; } } public static bool ExecuteScalarS(string sql, out SqlDataReader sdr, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); sdr = SqlHelper.ExecuteReader(sql); return sdr.Read(); }//end of using }//end of using }//end of ExecuteScalar } } 这一节简单地谈到了asp.net对数据的连接,如何对多个数据进行打包以实现服务器和客户端信息的交互?下回分解
上一篇:ASP:网上通讯簿1.00
下一篇:跨站脚本执行漏洞详解与防护
文章标题:基于MVC 的服务器和客户端的交互(一) - ASP教程_ASP编程_ASP开发技术文章 - 红黑联盟
文章链接:http://soscw.com/essay/8470.html