使用VS快速将类方法封装成Web服务

在项目中有时需要将整个业务逻辑类下面的方法封装成Web服务,由于只是简单的封装,在Web服务的后台代码中不会写上任何逻辑,这时我们就需要Web服务提供的方法与类下面提供的方法相同,这是就考虑到使用接口。申明一个接口,然后让业务逻辑类和Web服务类都实现该接口即可。这里我们就要用到VS中一个很好的功能:重构!

假设我们现在有一个业务逻辑类HelloLogic用于处理一些业务逻辑,如:

 

namespace Hello
{
    public class HelloLogic
    {
        public string SayHello()
        {
            return "Hello";
        }
        public string SayHello(string name)
        {
            return "Hello" + name;
        }
        public string SayBye()
        {
            return "Bye";
        }
    }

点击“Refactor”菜单下的“Extract Interface”选项提取该类的接口,将出现如图窗口

选中所有的方法,点击OK即生成接口代码:

using System;
namespace Hello
{
    interface IHelloLogic
    {
        string SayBye();
        string SayHello();
        string SayHello(string name);
    }

由于需要在Web服务项目中使用该接口,这里需要将interface改成pulic的。然后在web服务项目中添加对该程序集的引用。新建HelloWebService页面,在后台代码上申明实现该接口:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class HelloWebService : System.Web.Services.WebService,Hello.IHelloLogic
{

将光标放在IHelloLogic上,使用快捷键Shift+Alt+F10,将出现如图提示:

第一个是实现该接口,第二个是明确实现该接口,这里由于只有这个接口,而且就算有多个接口,只要接口中的函数不重复就可以直接使用第一个。选择第一个选项,系统将自动生成代码:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class HelloWebService : System.Web.Services.WebService,Hello.IHelloLogic
{
    IHelloLogic Members

 

接下来只需要将方法调用写到具体的函数里面就可以了。当然不能忘记了使用WebMethod特性。

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class HelloWebService : System.Web.Services.WebService, Hello.IHelloLogic
{
    HelloLogic logic = new HelloLogic();
    IHelloLogic Members

现在的代码已经可以编译通过了,但是有一个问题那就是在一般类方法中可以使用函数名重载,但是Web服务不能使用,我们这里对SayHello方法的重载需要进行修改。那么怎么实现Web服务下的函数重载拉?那就要用到MessageName属性对方法进行重命名了。使用MessageName 属性后还没有完,[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]这里的标注使得该Web服务不符合 WS-I Basic Profile v1.1,需要将属性值改为WsiClaims.None。最终完成的代码应该是:

 

using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using Hello;
/// <summary>
/// Summary description for HelloWebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class HelloWebService : System.Web.Services.WebService, Hello.IHelloLogic
{
    HelloLogic logic = new HelloLogic();
    IHelloLogic Members

调用的时候我们将看到一个SayHello方法,一个SayHello1方法,这里的SayHello1方法就是对应的SayHello(string)方法了。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            HelloService.HelloWebServiceSoapClient h = new ConsoleApplication1.HelloService.HelloWebServiceSoapClient();
            Console.WriteLine(h.SayBye());
            Console.WriteLine(h.SayHello());
            Console.WriteLine(h.SayHello1("test"));
        }
    }

好了,整个Web服务的调用就已经完成了,使用VS自带的重构功能来提取接口,实现接口有助于提供我们的开放效率,同时也降低了我们在封装成web服务的时候发生遗漏、拼写错误等失误。
由于本人对Web服务领域涉足未深,所以可能有错误之处,希望大家指正。

时间: 2024-12-03 12:10:04

使用VS快速将类方法封装成Web服务的相关文章

使用Axis2和JiBX将Java类转换成Web服务,第2部分

使用Axis2和JiBX将Java类转换成Web服务,第2部分: 把XML转换成功能全面的Web服务 本文配套源码 简介 Apache Axis2 提供了好几种 XML 解决方案,可以轻松的开发功能强大的 Web 服务.Axis2 是实现 Web 服务的一个非常不错的选择.由于 Apache Axis2 和 Apache Geronimo duo 是免费而且开放源码的,因此可以考虑使用这两者. 在本系列的前一部分中,我向您介绍了在本系列两篇文章中使用到的 Java 类.我们通过 WSDL 将这些

使用Axis2和JiBX将Java类转换成Web服务,第1部分

使用Axis2和JiBX将Java类转换成Web服务,第1部分: 使用XML通过Java类定义Web服务 本文配套源码 简介 Web 服务在日常开发中重要性与日俱增,Axis2 也成为了倍受人们欢迎的开发Web 服务的开放源码平台.Axis2 使用Java 语言编写,它能利用了 JiBX(一种框架,用于将XML和Java绑定在一起)的自由性.假设您有一个含有大量 Java 类和数据结构的 Java 项目,而且不想打乱或者更改它们.JiBX 会帮助您实现这一切,它把在 Axis2 中使用的 XML

如何将已有程序封装成web services

问题描述 我们这边有一个网站,现在想把其中的部分功能封装成webservices,然后再发布出去,请问该怎么做呢,步骤是什么,还要用到什么工具吗,谢谢. 解决方案 解决方案二:直接生成就可以了解决方案三:不这么简单吧解决方案四:要先懂怎么做webservice在研究你要把你的程序变成webservice解决方案五:个人感觉不是所有的都可以做成webservice的解决方案六:弄成DLL,再弄个SERCICE调它解决方案七:呵呵!增加一个层吧:用于WebService(文件->新建->网站-&g

node.js连接mongoDB数据库 快速搭建自己的web服务_node.js

一.写在前面   人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二.安装node.js   接触过后端开发的人都知道,首先要安装服务.作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是w

J2EE的Web服务原理和体系结构慨述

Web服务(Web Services)是目前程序设计领域中的一项新技术,是一个崭新 的分布式计算模式,在不同系统平台之间具有互操作性,通过因特网,实现不同 应用程序之间的远程过程调用.Web服务使用基于XML 的消息处理作为基本的数 据通讯方式,消除使用不同组件模型.操作系统和编程语言的系统之间存在的差 异,使异类系统能够作为单个计算网络协同运行.开发人员可以用象过去在创建 分布式应用程序时使用组件一样的方式创建将来自各种源的Web服务组合在一起 的应用程序. Web服务是建立在一些通用协议的基

使用 PowerDesigner 9.5 创建 Web 服务

web|创建 使用 PowerDesigner 9.5 创建 Web 服务   Sybase 公司PowerDesigner 总设计师Xiao Wang撰稿   Web 服务允许您以标准格式提供现有的或新增的功能,并且允许用户和应用程序从任何位置访问它们. PowerDesigner 9.5 同时针对 Microsoft .NET 和 Java 引入了完善的 Web 服务设计和生成机制.使用 PowerDesigner 9.5,您可以专注于 Web 服务的设计,而将所有必需的生成.实现构造的任务

怎样在J2EE组件中引用和查找Web服务

j2ee|web|web服务 本文将讨论怎么在J2EE组件中引用Web服务.并且通过JNDI来查找Web服务.在内容组织上,首先把一个EJB2.1无状态会话Bean发布成Web服务,然后开发基于JSP的Web服务客户端,最后着重介绍怎么在JSP的部署时引用Web服务,并且讨论怎么通过JNDI来查找和调用Web服务.阅读本文前您需要以下的知识和工具:J2EE1.4 SDK,并且会初步使用:掌握基本的JAX-RPC Web服务开发技能:了解JNDI的基本知识,能够使用它进行简单编程:一般的Java编

很老的文章了,不知道有人贴过没有:Web服务发展中的一些问题

web|web服务|问题 Web服务发展中的一些问题 日期: 2001年10月10日       以前从来没有产生过如此激动人心的协议. 但是仅仅是不停的念叨诸如SOAP, WSDL, 和UDDI--定义Web 服务的三种协议--之类的缩略语并不能让组件软件结构和通用的XML集成的想法成为现实. 要使Web服务开始工作, 与之相关的协议必须被重新定义, 相应的开发工具也必须被发布出来, 而IT经理和开发者中必须来一场文化革命. 特别是微软和IBM在交流Web服务所能带来的好处方面发挥了另人惊讶的

Adaptive Server Anywhere的web服务

Adaptive Server Anywhere 在数据库服务器中集成了一个 HTTP 服务器和一个 SOAP 管理器.它允许您通过 HTTP 发送一个 SOAP 请求给Adaptive Server Anywhere,然后 Adaptive Server Anywhere 将应答返回至请求 HTTP 的客户端. 您可以将数据库中的存储过程或查询暴露成 web 服务.作为一个简单的例子,以下语句创建了一个 web 服务,它提供了系统表的列表: CREATE SERVICE mytablesTYP