之前的Post掀起掀然大波,砸砖者纷至沓来好不热闹。之前的Post观点不够明确,准确,先say sorry,重新整理思路后再分别说明

观点:对于一个WebApplication,提高整体吞吐能力,应该从提高单页的响应能力开始,对于WebApplication使用上的一个原子操作:打开一个页面而言,在整个页面的生存周期中打开的数据连接数量越少,开闭的次数越少效率自然越高。

约束:页面默认是同步的操作,我们在这里约定再不采用异步操作的时候,如果用异步操作优化,那么又是另外的问题了,会有其他的问题产生,比如当两次操作有前因后果的关系的时候。

首先就是关于数据库联接的问题,我这里用数据库联接而不用Connection就是为了滴水不漏,省得错把关公当秦琼把数据库连接和.NET的XXConnection对象混淆起来。
这里用代码来说明,为了保证观点的中性,我将使用NHibernate的实现来做例子。
这里暂时委屈一下NHibernate暂时这样子来用。
我们这里面临两个问题数据库连接的访在那里对象放在那里,其二就是如何使用,如果按照一些人的观点就是随需开,在需要的时候打开。比如

ISession vSession= mCfg.BuildSessionFactory().OpenSession();//创建会话工厂, 一般来说应该使用一个单例对象来封装会话工厂.

              ITransaction vTransaction = vSession.BeginTransaction();//创建事物处理

              try

              {

                   vSession.Save(vEntity);//向数据库添加数据

                   vTransaction.Commit();

                   Labmessage.Text="OK";

              }

              catch(Exception ex)

              {

                   vTransaction.Rollback();

                   Labmessage.Text="Error"+ex.ToString();

              }

              finally

              {

                   vSession.Close();

              }

这段代码来自http://www.cnblogs.com/surprise/archive/2004/10/13/51701.aspx

一般我们会将这段代码放进一个处理业务逻辑的对象。里面,当需要添加一个Entity的时候调用,当然Entity有更多的用法,不过我们在这里就对这样子的简单的来做第一个例子。

那么如果我们针对这一个简单实体封装了一个逻辑:添加XX(用户信息、Post)等,当我们需要在一个页面操作多个的时候,就会有一个问题,一个是事务,这里我们暂且跳开不管,然后的情况就是在这个页面频繁的关闭打开了多次数据库。

这个时候我所提出的一个页面一个Connection的方式就是指的,将:

ISession vSession= mCfg.BuildSessionFactory().OpenSession();//创建会话工厂, 一般来说应该使用一个单例对象来封装会话工厂.

              ITransaction vTransaction = vSession.BeginTransaction();//创建事物处理

              try

              {

                业务逻辑对象.操作(vSession)
                   vTransaction.Commit();

                   Labmessage.Text="OK";

              }

              catch(Exception ex)

              {

                   vTransaction.Rollback();

                   Labmessage.Text="Error"+ex.ToString();

              }

              finally

              {

                   vSession.Close();

              }

这样子的代码写在页面上。

so,就是这个样子了,在业务逻辑里将操作做完了,以后不需要做数据库操作的时候就将数据库连接关闭,事务提交。
我不知道很多人是怎么理解的。

就写到这里,等大虾来拍砖,还有就是这样子的代码如果存在线程问题的话。那么是不是应该对page_load方法这样子的方法都要处理线程安全问题了?效率的问题不知道是频繁关闭打开数据库来的有效率?一个建议,如果不在乎这点开销的话也无所谓,如果为了结构上的清晰而让步,这点我不反对,但是这个指标绝对是在优化效率的时候应该考虑到的
很多人在上一片post里说这样子做要我会死得很难看,我就不明白了,还有其他不死的很难看的方法?

之前Post的连接http://www.cnblogs.com/Alexander-Lee/archive/2007/03/31/694847.html

关于Web应用程序数据库连接的使用相关推荐

  1. 引用:编写高性能Web应用程序的10个技巧(一)

    在网上看到这样一篇文章:编写高性能Web应用程序的10个技巧 感觉很不错就引用到我的blog里面,和大家一起学习,同时也谢谢作者本人 数据层性能 技巧 1 - 返回多个结果集 技巧 2 - 分页的数据 ...

  2. 指定应用程序网络连接_总结Java开发Web应用程序应该理解的几个知识点

    前言 前面我们对Web应用开发的底层技术做了一些串联,也就是从应用程序的本质出发来理解为什么我们的应用程序架构的演变. 特别是Spring框架的出现,它在Web应用开发中扮演的角色,特别是Servle ...

  3. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  4. 将社交登录添加到Spring MVC Web应用程序:配置

    过去,用户使用用户名和密码组合登录. 尽管如今有些人仍然偏爱传统方式,但越来越多的用户希望使用其社交媒体帐户登录. 这就是使Spring Social(及其子项目)成为Spring项目组合有用的补充的 ...

  5. Tomcat配置和Web应用程序开发

    引自友人blog: [url]http://blog.csdn.net/senton[/url] ◆tomcat是一个专门用于web服务的服务器软件. 1.运行 : 设置完毕后就可以运行tomcat服 ...

  6. 全连接层的输入和输出_理解Web应用程序的本质,网络数据流处理与基础网络连接...

    前言 前面一篇文章,我从整个应用程序的整体以及跟运行环境的关系简单聊了一下我们现在常用的Spring框架的设计基础和原则,其中主要是控制反转和依赖注入,以及容器化编程等概念. 这里我不想去复述这些概念 ...

  7. Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库

    一.搭建测试环境和项目 1.1.搭建JavaWeb测试项目 创建一个[H2DBTest]JavaWeb项目,找到H2数据库的jar文件,如下图所示: H2数据库就一个jar文件,这个Jar文件里面包含 ...

  8. python实现第一个web_使用Python的Flask框架来搭建第一个Web应用程序

    1.初始化在这章,你将学到Flask应用程序的不同部分.同时,你将编写和运行你的第一个Flask web应用程序. 所有的Flask应用程序都必须创建一个 应用程序实例 .使用web服务器网关接口协议 ...

  9. asp.net web.config连接mysql数据库_ASP.NET中使用web.config配置数据库连接

    本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接.web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一 ...

最新文章

  1. 检测是否输入字母c语言程序,C语言判断字符是否为可打印字符的方法
  2. FICO 最常用配置表
  3. vba宏语言_三分钟了解Excel的程序语言VBA
  4. burp suite 二级域名扫描插件
  5. 【转】一篇比较清晰简单的C++文件操作
  6. [原]Asp.net替换不同版本的Dll文件碰到的问题以及解决办法.
  7. JDK安装、java环境配置(转)
  8. Android写的一个设置图片查看器,可以调整透明度
  9. verilog异步复位jk触发器_同步复位和异步复位常见问题总结
  10. vi vim 使用方法
  11. 如何查看K/3数据库表及字段详细信息
  12. C#操作十六进制数据以及十进制与十六进制互相转换
  13. 使用ArcMap将txt数据转换成shp数据
  14. 编码的奥秘:字节与十六进制
  15. 关于ModifyStyle
  16. 测试ips显示器的软件,IPS屏幕显示测试
  17. ape flac 音频截取_为什么选择FLAC音频
  18. JavaScript系列之条件运算符
  19. c++11并发与多线程
  20. 使用libmp3lame库编码mp3

热门文章

  1. 南邮java大作业实验报告_南京邮电大学java第三次实验报告
  2. mysql 删除数据后myd_Windows下的MySQL删除data文件夹后……
  3. 2021长郡浏阳中学高考成绩查询,2021长沙市高中排名一览表
  4. java 时间api源码,时间API(示例代码)
  5. 计算机网络期中考察方案,计算机网络期中考试题 b卷_ans.docx
  6. java按钮位置_java窗口按钮位置设置
  7. IIS服务器下做301永久重定向设置方法[图解]
  8. w3wp进程发生死锁ISAPI aspnet
  9. postgres外部表
  10. 201521123108《Java程序设计》第14周学习总结