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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

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

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

?

目錄:
  • 創建不依賴于asmx文件的WebService?
  • 通過Spring.Net提供WebService服務?
?

?

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

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

2、使用面前方面編程(AOP)的框架 3、對不同事務之間的處理可以使用同一的管理方式 4、提供驗證框架用來做驗證如怎樣配置Spring.Net。如果你對Spring.Net不夠了解,請參見;http://www.cnblogs.com/tyb1222/category/270053.html1、創建不依賴于asmx文件的WebService首先通過Spring.Net創建不依賴具體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避免創建多余的服務對象,Spring推薦這樣做。訪問服務:

2、通過Spring.Net提供WebService服務

這種方式是本節敘述的重點。由于服務的松散耦合性,很多人都認為服務更適合使用接口進行規范。Spring.Net也是基于這一點來實現的。首先我們定義服務接口(有點類似WCF中的服務契約,但無需標記ServiceContract等等任何標記)? ?接口定義:public?interface?IPerson
????{
????????string?SayHello(string?name);
????????int?Add(int?x,?int?y);
????????void?SavePerson(Person?person);
????????Person?GetPerson(string?name);
????????string?GetPersonString();
????}服務實現沒有什么特殊的地方,如下: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對服務進行配置:<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="計算量整數之和"></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模塊,通過它來講請求轉發給Handler。訪問服務:?

注意:使用Spring.NEt實現WebService時,在3.5平臺上開發的服務能正常運行在4.0上有可能會有如下異常

?

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

?

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

轉載于:https://www.cnblogs.com/tyb1222/archive/2012/06/05/2537395.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。