关于.net并发,有几个问题不是很清楚:
1、.net B/S架构的系统默认是单线程的还是多线程的?
2、开发的时候如果不做多线程,那如果同时有50个人提交报名信息到MS SQLServer,生成报名号并insert到数据库中会出现并发问题吗?(生成报名号的过程需要读取数据库中报名号后六位最大的记录),换句话说就是如果不做多线程,系统是不是按照顺序依次执行的?
3、事务的处理到底是在.net程序中实现还是在数据库中实现?两种有什么区别?

解决方案 »

  1.   

    1、.net B/S架构的系统默认是单线程的还是多线程的?
    当然是多线程的。
    2、开发的时候如果不做多线程,那如果同时有50个人提交报名信息到MS SQLServer,生成报名号并insert到数据库中会出现并发问题吗?(生成报名号的过程需要读取数据库中报名号后六位最大的记录),换句话说就是如果不做多线程,系统是不是按照顺序依次执行的?
    程序有一个线程池,线程的执行顺序真不好说。3、事务的处理到底是在.net程序中实现还是在数据库中实现?两种有什么区别?
    是在数据库中,程序中的只能保证原子性,而数据库是保证完整性。
      

  2.   

    在数据库中加锁是要用触发器吗?还有,锁只能在事务中用?我的sql 语句全写在程序中呢。加锁后会不会出现别的用户提交失败的情况?
      

  3.   


    1、不全面,B/S 架构本身是没有所谓单或者多线程。单或者多线程关系到部署的web服务器和自己代码的编写方式
    2、并发访问一般在于web服务器的并发处理带来的问题。程序自己写的多线程要注意资源同步的问题就行。
    也就是说,即使你程序不使用线程,部署在web服务器上的应用依然会有并发的情况出现,因为web服务器大部分本身是多线程,当然也有多进程的如apache。
    3、事务处理c#有api支持,不过本质上是映射为sql,最终在sql服务器上面实现事务