金色的骷髅 发表于 2015-1-16 22:31:11

ASP.NET网站制作之在Web Service中完成Transaction

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




publicDecimal[]TransferMoney(Decimal_amount,
String_fromActNum,
String_toActNum)
{
Account_debit=newAccount(_fromActNum);
Account_credit=newAccount(_toActNum);

Decimal[]_array=newDecimal;
_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=_debit.Balance;
_array=_credit.Balance;

return_array;
}



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应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

不帅 发表于 2015-2-7 21:29:00

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。

灵魂腐蚀 发表于 2015-2-23 11:43:37

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

老尸 发表于 2015-3-7 08:45:59

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

若相依 发表于 2015-3-14 16:24:55

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

蒙在股里 发表于 2015-3-21 12:48:11

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
页: [1]
查看完整版本: ASP.NET网站制作之在Web Service中完成Transaction