日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

你是否觉得.Net Web Service 中asmx文件是多余的?

發(fā)布時間:2023/12/18 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你是否觉得.Net Web Service 中asmx文件是多余的? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
用.Net開發(fā) WebService一般都會先添加一個.asmx文件,然后在其.cs文件里將類標記上WebService,WebMethod等特性來構(gòu)建WebService。是否想過.asmx文件是多余的呢。? 其實.asmx即不像aspx一樣用作UI,又不像.handler文件一樣處理業(yè)務(wù)邏輯,它的存在就是多余。使用Spring.Net構(gòu)建WebService完全可以不需要.asmx文件,直接通過它的IoC容器將它注入到對外提供服務(wù)的類中即可。本文將帶你走進一個沒有.asmx文件的WebService。

?

目錄:
  • 創(chuàng)建不依賴于asmx文件的WebService?
  • 通過Spring.Net提供WebService服務(wù)?
?

?

了解本機,需要對Spring.Net有一些基本的認識。我大致說說它的作用:

1、可以作用一種IoC(或者說的DI)的容器實現(xiàn)程序的解耦。

2、使用面前方面編程(AOP)的框架 3、對不同事務(wù)之間的處理可以使用同一的管理方式 4、提供驗證框架用來做驗證如怎樣配置Spring.Net。如果你對Spring.Net不夠了解,請參見;http://www.cnblogs.com/tyb1222/category/270053.html1、創(chuàng)建不依賴于asmx文件的WebService首先通過Spring.Net創(chuàng)建不依賴具體asmx文件的Web Service .添加一個原始WebService的文件,只是通過Spring.Net的配置完成對具體文件的無依賴性。? ? ? public?class?HelloWorldService?:?WebService?

????{
????????//[WebMethod]
????????public?string?HelloWorld(string?str)
????????{
????????????return?"Hello?World:????"?+?str;
????????}

????????[WebMethod]
????????public?Person?GetPerson()
????????{
????????????return?new?Person?{Age?=?25,?Name?=?"zhansan"};
????????}

????????[WebMethod]
????????public?void?SavePerson(Person?person)
????????{
????????????return;
????????}
????}

配置如下圖:

?

注意圖中abstract=true,可以讓Spring.Net避免創(chuàng)建多余的服務(wù)對象,Spring推薦這樣做。訪問服務(wù):

2、通過Spring.Net提供WebService服務(wù)

這種方式是本節(jié)敘述的重點。由于服務(wù)的松散耦合性,很多人都認為服務(wù)更適合使用接口進行規(guī)范。Spring.Net也是基于這一點來實現(xiàn)的。首先我們定義服務(wù)接口(有點類似WCF中的服務(wù)契約,但無需標記ServiceContract等等任何標記)? ?接口定義:public?interface?IPerson
????{
????????string?SayHello(string?name);
????????int?Add(int?x,?int?y);
????????void?SavePerson(Person?person);
????????Person?GetPerson(string?name);
????????string?GetPersonString();
????}服務(wù)實現(xiàn)沒有什么特殊的地方,如下:public?class?PersonService?:?IPerson?

????{
????????#region?IPerson?成員

????????public?string?SayHello(string?name)
????????{
????????????return?"Hello?word:????"?+?name;
????????}

????????public?int?Add(int?x,?int?y)
????????{
????????????return?x?+?y;
????????}

????????public?void?SavePerson(Person?person)
????????{
????????????return;
????????}

????????public?Person?GetPerson(string?name)
????????{
????????????return?new?Person?{Age?=?25,?Name?=?"zhangsan"};
????????}

????????public?string?GetPersonString()
????????{
????????????return?JsonConvert.SerializeObject(new?Person?{Age?=?25,?Name?=?"zhangsan"});
????????}
????????#endregion
????}

通過Spring.Net對服務(wù)進行配置:<configuration>?

? ? <configSections>
????????<sectionGroup?name="spring">
????????????<section?name="context"?type="Spring.Context.Support.WebContextHandler,?Spring.Web"/>
????????????<section?name="objects"?type="Spring.Context.Support.DefaultSectionHandler,Spring.Core"/>
????????</sectionGroup>
????</configSections>

????<spring>
????????<context>
????????????<resource?uri="config://spring/objects"></resource>
????????</context>
????????<objects?xmlns="http://www.springframework.net"?xmlns:aop="http://www.springframework.net/aop">
????????????<object?id="person"?type="SpringWebServiceIoC.PersonService,SpringWebServiceIoC">
????????????</object>
????????????<object?id?="personObj"?type="SpringWebServiceIoCContract.Person,SpringWebServiceIoCContract"></object>
????????????<object?id="PersonService"?type="Spring.Web.Services.WebServiceExporter,Spring.Web">
????????????????<property?name="targetName"?value="person"></property>
????????????????<property?name="MemberAttributes">
????????????????????<dictionary>
????????????????????????<entry?key="Add">
????????????????????????????<object?type="System.Web.Services.WebMethodAttribute,?System.Web.Services">
????????????????????????????????<property?name="Description"?value="計算量整數(shù)之和"></property>
????????????????????????????????<property?name="MessageName"?value="計算"></property>
????????????????????????????</object>
????????????????????????</entry>
????????????????????</dictionary>
????????????????</property>
????????????</object>
????????</objects>
????</spring>
????
????<system.web>
????????<compilation?debug="true"?targetFramework="4.0"?/>
????????<httpHandlers>????????
????????????<add?verb="*"?path="*.asmx"?type="Spring.Web.Services.WebServiceHandlerFactory,?Spring.Web"/>
????????</httpHandlers>
????????<httpModules>
????????????<add?name="SpringModule"?type="Spring.Context.Support.WebSupportModule,?Spring.Web"/>
????????</httpModules>
????</system.web>

</configuration>

此種方式除了需要配置處理amsx文件的Handler之外,還需配置httpModules模塊,通過它來講請求轉(zhuǎn)發(fā)給Handler。訪問服務(wù):?

注意:使用Spring.NEt實現(xiàn)WebService時,在3.5平臺上開發(fā)的服務(wù)能正常運行在4.0上有可能會有如下異常

?

但是在4.0上的服務(wù),如果無參數(shù)又能正常運行。這通常是因為使用的Spring.Net版本不同導(dǎo)致。提醒注意。

?

代碼下載:http://files.cnblogs.com/tyb1222/SpringWebService.rar?

轉(zhuǎn)載于:https://www.cnblogs.com/tyb1222/archive/2012/06/05/2537395.html

總結(jié)

以上是生活随笔為你收集整理的你是否觉得.Net Web Service 中asmx文件是多余的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。