VS2008实现简单的WebService

来源:互联网 发布:易语言直播源码 编辑:程序博客网 时间:2024/05/19 01:14

【本文内容整理自网络、书籍及本人实践】

关于WebService,其实了解并不深刻,只是临时赶鸭子上架,故实现的功能比较简单。总的说来,WebService可以让程序使用远程的Web服务。WebService在应用层使用SOAP协议(不确定是不是全部)。.NET的编程中,只需编写Web服务的处理部分和调用部分,而细节部分由.NET完成。.NET负责实现序列化,也负责信息的来回传递。但当客户端和服务器不得不使用静态代码来遵循同一协议时,就需要用到哪些复杂的SOAP编码惯例了[此句不懂]。在本文中并不涉及到SOAP的操作。

1.创建Web服务

在VS中创建一个ASP.NET Web服务应用程序(C#语言)。IDE会自动生成一个asmx(代码在asmx.cs),里面有一个WebService的子类,并实现了一个成员函数HelloWorld()
namespace WebService{    /// <summary>    /// Service1 的摘要说明    /// </summary>    [WebService(Namespace = "http://tempuri.org/")]    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    [ToolboxItem(false)]    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。    // [System.Web.Script.Services.ScriptService]    public class Service1 : System.Web.Services.WebService    {        [WebMethod]        public string HelloWorld()        {            return "Hello World";        }    }}
WebService函数需要由[WebMethod]声明。[WebMethod]可以添加四个属性,详见链接。当然你可以自己创建一个Web服务,只需添加-新建项-Web服务即可。
除了HelloWorld之外,为Service1再添加一个函数Add
        [WebMethod]        public  string Add(int a,int b)        {            return (a + b).ToString();        }
然后按Ctrl+F5不调试直接运行,浏览器出现如下界面,点击函数名可进行测试。

2 引用服务

2.1 创建客户端

在解决方案中添加一个叫Test的Windows 窗体应用程序,将Test设为启动项目。在其窗口添加四个按钮(为简单起见,都不改名,我承认我比较懒好吧)。分别双击按钮,IDE会自动添加响应函数。

2.2使用“添加Web引用”

“添加服务引用”和“添加Web引用”相比,“添加Web引用”将基于.NET FrameWork 2.0 生成代码。
在VS2005中可按 项目-添加Web引用 操作
在VS2008中可按 项目-添加服务引用-高级-添加Web引用
最终可进入到如下界面。

填入要引用的ASMX文件的URL。点击前往,不论是引用服务器上或本机的文件,都需要保证所使用的端口开放运行着。比如要引用前面定义的Service1.asmx,只需在VS中运行Service1.asmx文件,任务栏会出现一个ASP .NET Development Server,不要停止该进程即可。然后点击此解决方案中的Web服务(因为我创建的Web服务项目和窗口应用程序在同一个解决方案中),选择要引用的服务,此处是Service1,然后修改Web引用名(本文填localhost),点击添加引用即可。
添加成功后,在解决方案资源管理器,Test项目下会多出一个Web References的文件夹,里面有localhost。
button1和button2的响应函数改成下面这样
        private void button1_Click(object sender, EventArgs e)        {            localhost.Service1 s = new localhost.Service1();            button1.Text = s.HelloWorld();        }        private void button2_Click(object sender, EventArgs e)        {            localhost.Service1 s = new localhost.Service1();            button2.Text = s.Add(2, 4);        }
运行Test,点击button1,button1文本变为hello world,点击button2,button2文本变为6

2.3 使用添加服务引用

VS2005中似乎没有此项功能,VS2008 按 项目-添加服务引用,出现类似“添加Web引用”的对话框。
和“添加Web引用”一样,填入asmx文件URL或点“发现”找到解决方案中的服务,修改命名空间,本文填SR,点击“确定”,添加成功后,Test项目下多出一个Service References文件夹,里面有SR。
button3和button4的响应函数改成下面这样
        private void button3_Click(object sender, EventArgs e)        {            SR.Service1SoapClient ssc = new Test.SR.Service1SoapClient();            button3.Text = ssc.HelloWorld();        }        private void button4_Click(object sender, EventArgs e)        {            SR.Service1SoapClient ssc = new Test.SR.Service1SoapClient();            button4.Text = ssc.Add(7, 8);        }
运行Test,点击button3,button3文本变为hello world,点击button4,button2文本变为15

3 小结

本文整理了在VS中实现简单的WebService功能。但只是粗浅的皮毛,还需要学习很多东西。
比如“添加Web引用”和“添加服务引用”除了代码所基于的框架不同之外,有什么实质性区别?
原创粉丝点击