C# Builder构建Web服务和客户端
添加时间: 2007-7-13 1:09:34 作者: C#教程 阅读次数:38 来源: http://www.d9soft.com
Web服务很酷;Web方法也风靡一时。但是它们仅仅是另一个短时间流行的技术,一个无永久价值的事物吗?如果我们忽视它们足够久,它们能消失吗?不,这个技术有持久的生命力,到处都有使用它编写的东西。它不仅仅是炒作。 Web服务是开发技术的瑞士军刀上的一个真正有用的刀刃。使用何种方法呢?
利用Web服务,你不需要重新开发不属于你的程序设计语言的内部功能或者开发工具运行时间库的功能,然而公共的功能足够对许多--至少有一些开发者来说是够用了。 而且,在很多情况下Web服务的返回值是动态的,比如给定邮政编码地区的天气情况、当前时间、这个或那个东西的价格、道路状况等等。在这些情况下,无论如何,你都将访问一些动态信息源(从因特网上读取),所以消费一个已经创建来提供你的应用程序需要的信息的Web服务就很少或者没有性能缺陷了。
在本示例中,我们将创建一个返回任何给定日期是星期几这样的Web服务(在.netspeak中,一个"Web方法")。 我们还将创建一个WinForm客户端,传递所需的年、月和日的值到这个Web方法中。
创建Web Method/Service
启动C# Builder,选择File|New Other ASP.NET Service Application
改名为"DOW",意思是"Day Of the Week"。
创建两个文件:WebService1.asmx和WebService1.asmx.cs。选择File Save As,并且另存WebService1.asmx为DOW.asmx。这还将改变*.cs文件为DOW.asmx.cs。
如果你此时就想运行这个工程,那么你将得到错误信息"unable to attach to ASP.net process ( typically aspnet_wp.exe)"。在Project Manager中右击DOW.asmx,并且选择"Set as start page"。 现在如果你运行它,你将得到一个IE里的页面,如下:
改变你的*.asmx和*.asmx.cs的Web方法(WebService1)的默认名为DOW。 此外,添加下面的属性(使用你的名称替换我的)。
| public class DOW: System.Web.Services.WebService: [WebService(Namespace="http://www.ClayShannon.com") |
删除DOW.asmx.cs文件中的位置标志符web methods(注释掉),并且在unit的底部添加下面的方法和属性:
[WebMethod] public string GetDow(int intYear, int intMonth, int intDay) { DateTime d8 = new DateTime(intYear, intMonth, intDay, new GregorianCalendar()); GregorianCalendar gregCal = new GregorianCalendar(); return gregCal.GetDayOfWeek(d8).ToString(); } |
此外,在unit的顶部添加下面的代码:
Using System.Globalization;
现在,当你运行这个应用程序的时候,你将在你的web浏览器中看到下面这个屏幕:
单击ServiceDescription,显示Web方法后的SOAP XML:
单击GetDow显示这个页面:
C# Builder允许你从Web方法/服务本身测试你的Web方法。 你不必首先创建一个客户端来测试它,这样多省时间呀,因为不这样的话你就要在Web服务工程和客户端工程之间来回切换。
下面是我输入一些测试数据并选择Invoke按钮后的结果的屏幕截图:
顺便说一下,www.ClayShannon.com是一个虚构的URL(它是一个上面显示的WebService NameSpace属性中的位置标志符)。然而幸运的是,C# Builder不计较URL的真伪,它仍然返回正确结果。
Web方法/服务已经成功地创建。DOW.dll已经在C:InetpubwwwrootDOWbin中创建。 现在,让我们编写一个简单的客户端来调用这个方法。
上一篇文章: C# Builder创建井字游戏Web服务 下一篇文章: C# Builder WinForm开发入门
相关文章:

