仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 569|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之在Web Service中完成Transaction

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。web在WebService中完成Transaction
.NetFramework为类,WebForm和WebService供应了事件处置功效。
在传统的windows使用程序中,要写一个有事件处置功效的组件不但要写代码并且要在组件服务中创立一个事件包。这就意味着在任何一台要处置这个事件的呆板上,你都不能不翻开mmc在COM+使用程序节点下创立一个新包。
.NETFramework使得这统统变得很复杂,现实上我们不必在组件服务中作任何事,这统统都是主动完成的。对WebService来讲,.NETFramework用EnterpriseServices(COM+的替换者)来办理事件,而无需创立一个COM+包。一切办理事件形态的事情都是在幕后完成的。
在webservice中完成这个很复杂。
1)在[WebMethod()]属性中指定transaction的范例。如[WebMethod(false,TransactionOption.RequiresNew)]
以下是TransactionOption的具体列表。
TransactionOption.DisabledIgnoreanytransactioninthecurrentcontext.
TransactionOption.NotSupportedCreatethecomponentinacontextwithnogoverningtransaction.
TransactionOption.SupportedShareatransactionifoneexists;createanewtransactionifnecessary.
TransactionOption.RequiredCreatethecomponentwithanewtransaction,regardlessofthestateofthecurrentcontext.
TransactionOption.RequiresNewShareatransactionifoneexists.
2)用[AutoComplete]属性确保Transaction能完成,除非抛出非常。
由此我们能够看出在WebService中完成Transaction的一点特别性,即Transaction属性是使用于WebMethod上的。这意味着在webservice中只要设置了TransactionOption后才会使用事件。
注重:我们能够不要[AutoComplete],本人写代码完成事件或中断事件,例子以下
try
{
//Updatethebalances:
//IfanAccount.Balancegoesbelow0,
//anexceptionisthrownbytheAccountobject
_credit.Balance=_actDB.getBalance(_credit.ID);
_debit.Balance=_actDB.getBalance(_debit.ID);
ContextUtil.SetCommit;
}
//CatchtheexceptionfromtheAccountobject
catch(Exceptionex)
{
ContextUtil.SetAbort;
}


附上我的一段代码:
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Diagnostics;
usingSystem.Web;
usingSystem.Web.Services;
usingSystem.EnterpriseServices;

namespaceMichael.WebServiceTrans
{
publicclassFinancialUtil:System.Web.Services.WebService
{
//Createaclass-levelinstanceoftheAccountDBclass
Michael.Data.AccountDB_actDB=newMichael.Data.AccountDB();


[WebMethod(false,TransactionOption.RequiresNew)]
[AutoComplete]
publicDecimal[]TransferMoney(Decimal_amount,
String_fromActNum,
String_toActNum)
{
Account_debit=newAccount(_fromActNum);
Account_credit=newAccount(_toActNum);

Decimal[]_array=newDecimal[2];
_actDB.debitOrCreditAccount(true,_credit.ID,_amount);
_actDB.debitOrCreditAccount(false,_debit.ID,_amount);

try
{_credit.Balance=_actDB.getBalance(_credit.ID);
_debit.Balance=_actDB.getBalance(_debit.ID);
}
catch(Exceptionex)
{
throw(newSystem.Exception(ex.Message));
}

//Returnthenewbalancesinthearray
_array[0]=_debit.Balance;
_array[1]=_credit.Balance;

return_array;
}


[WebMethod()]
publicDataSetGetAllAccountNumbers()
{
return_actDB.getAllAccountNums();
}


//******************************************************//
//***********VISUALSTUDIODESIGNERCODE**************//
//******************************************************//

publicFinancialUtil()
{
InitializeComponent();
}

#regionComponentDesignergeneratedcode
///<summary>
///RequiredmethodforDesignersupport-donotmodify
///thecontentsofthismethodwiththecodeeditor.
///</summary>
privatevoidInitializeComponent()
{
}
#endregion

protectedoverridevoidDispose(booldisposing)
{
}

}
}
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。
乐观 该用户已被删除
沙发
发表于 2015-1-19 16:05:17 | 只看该作者
网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项!
简单生活 该用户已被删除
板凳
发表于 2015-1-24 20:48:24 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
admin 该用户已被删除
地板
发表于 2015-2-2 13:21:28 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
不帅 该用户已被删除
5#
发表于 2015-2-7 21:29:00 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-23 11:43:37 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
老尸 该用户已被删除
7#
发表于 2015-3-7 08:45:59 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
若相依 该用户已被删除
8#
发表于 2015-3-14 16:24:55 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
蒙在股里 该用户已被删除
9#
发表于 2015-3-21 12:48:11 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 09:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表