大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> 用Microsoft.net实现数据库事务(三)

用Microsoft.net实现数据库事务(三)

时间: 2021-07-31 作者:daque

企业级效劳企业级效劳是独一一种天才扶助散布式两阶段提交的工作体制。当你发端源代码之前,要害的是要领会企业级效劳的处事体制,即使你用过vb编制程序,而且熟习com+编制程序,你就会领会企业级效劳所供给的功效。用vb去创造com+步调和用clr创造企业级效劳的一个各别之处是你不用再控制于单线程暗间儿(sta),深刻引见企业级效劳之前,你最佳去搞领会单线程暗间儿(sta)和多线程暗间儿(mta)的辨别。运用企业级效劳,你的.net安装会驻留在com+运用步调中来赢得诸如dtc和东西池的效劳,正文重要会合计划com+工作效劳,但也会提一下其余效劳。为了实行企业级效劳组件,要在你的class文献顶用using system.enterpriseservice来引入system.enterpriseservice定名空间,每个类都须要接受servicedcomponet,那些类须要是大众的,而且须要供给一个大众的缺省的结构器,一单你扩充了servicedcomponet类,开拓企业级效劳仅须要摆设一部下性。你也不妨经过clr来赢得com+元数据,如许一切的com+运用步调的属性就不妨在步调中来树立,运用visual studio.net,那些属性不妨设置在一个叫assemblyinfo.cs的文献中,也不妨设置在.cs文献中,你必需的安装属性是:[assembly: applicationname("yourapplicationnamehere")][assembly: applicationactivation(activationoption.library)][assembly: assemblykeyfile("..\\..\\keyfilename.snk")]l applicationname 树立了表露在com+目次中步调的名字。l applicationactivation 设置了是做为库运用仍旧效劳运用激励的。在开拓中常常设为效劳运用以不妨监督每个组件的震动,而在尝试和变成产物后要设为库运用来博得最佳的本能。l assemblykeyfile 给编写翻译器供给了一个密钥文献,用来给安装一个强名字,你须要供给一个对立于安装路途的对立路途。典范地是\bin\release\myassembly.dll。运转在clr中的企业级效劳步调都须要一个强名字,编写翻译你的安装之前,你须要创造一个密钥文献。创造的吩咐行语句是:sn –k keyfilename,如许在暂时的目次中会爆发一个keyfilename.snk文献,这个文献必需在assemblykeyfile属性中援用。此刻咱们不妨举行属性的树立了,咱们开始减少类属性,为了创造一个工作型组件,要在类设置之前加属性[transaction(transactionoption.required)].类内里的每个本领就会运转在一个工作中,遏制每个本领的提交大概回滚的最大略的本领是在本领之前减少属性[autocomplete(true)],如许即使本领实行时没有特殊就缺省提交,即使有特殊这个本领就会回滚。基础l 须要强名字上风l 实行散布式工作l 赢得com+效劳,诸如东西建立和东西池控制l 丧失了少许本能l com+ 1.0诉求每个工作的分隔级别都要树立为serializable例子:assemblyinfo.cs file[assembly: applicationname("myenterpriseapplication")][assembly: applicationactivation(activationoption.server)][assembly: assemblykeyfile("..\\..\\myentapp.snk")]component.cs file using system;using system.enterpriseservices;using system.reflection;using system.runtime.interopservices;using system.data;using system.data.sqlclient;using system.text;namespace petshop.componentstx{// com+ 1.5 (win xp) supports setting transaction isolation level// to use with windows 2000, remove isolation attribute[ transaction(transactionoption.required, isolation = transactionisolationlevel.readcommitted) ] public class ordertx : servicedcomponent { //must supply default constructor public ordertx() { } //set autocomplete to allow auto commit or rollback [ autocomplete(true) ] public int purchaseitem(int customerid, int itemid, int itemqty) { sqlconnection con = null; int orderid = 0; try {con = new sqlconnection("data source=localhost; user id=sa;password=;initial catalog=trans_db;"); con.open();string updatesqltext = "update inventory set qtyinstock = qtyinstock - " + itemqty.tostring() + " where inventory.productid = " + itemid.tostring(); sqlcommand cmd = new sqlcommand(updatesqltext, con); cmd.executenonquery();string insertsqltext = "insert into orders values (" + customerid.tostring() + ", " + itemid.tostring() + "," + itemqty.tostring() + " , getdate() ); select @@identity"; cmd.commandtext = insertsqltext; orderid = convert.toint32(cmd.executescalar()); cmd.dispose(); } catch (exception ex) { orderid = 0; throw (ex); } finally { con.close(); } return orderid; }}尝试截止 咱们把各别工作本子的宠物店放到试验室里尝试她们的本能。 一个负载天生东西用来记委派户与步调的交互,用户考察宠物店处置的办法是:1. 到登录页面2. 登录3. 减少四种随机的产物到购物车中4. 从购物车中去掉结果一个产物5. 购置购物车中的产物尝试剧本在一切功夫运用同一个帐户,产物被减少到购物车是用了径直的url本领,比方:http://localhost/petshop/cart.aspx?action=purchaseitem&itemid=est-123尝试随机天生语句(范畴从est-1到 est-50000)提交到效劳器上。负载天生东西模仿各别的用户登录到体例里,每个用户假如都没有时机去特殊减少体例的负载。尝试摆设中央层:2 x 550 mhz intel pentium iii500 mb ram4gb scsi hard drivewindows 2000 advanced server (sp2).net framework sdk rtm数据层:4 x 550 mhz intel pentium iii3 gb ram8 gb scsi hard drive (os)disk array (database files)windows 2000 advanced server (sp2)数据层(dtc): 4 x 550 mhz intel pentium iii3 gb ram8 gb scsi hard drive (os)disk array (database files)windows 2000 advanced server (sp2)图8:工作本能尝试截止大纲和论断正文计划了少许.net平台对于企业级开拓本领的扶助,诸如散布式工作,并贯串宠物店体例作了少许本能上的弥补。要领会.net有几种工作体制来很好地为企业所用,一切那些并没有在本能上和可舒卷性上有所贬低。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.