Asp.net学习之第一个web service发布

近段时间来开始接触Web service ,这个东东现在越来越热,很多人认为可能是下一代www的基础,五一的时间花了点时间初步学习了一下,感觉很有意思,就试着自己写了一个。哈哈,欢迎大家试用。
我的这个web service主要是查询相关的汉字编码,通过输入一个汉字,可以查询到这个汉字的拼音,五笔编码,笔划数,部首,GBK,Unicode,笔画顺数等,相关的的信息。由于我这空间好像支持的SQL空间不是很大,我就不发布了,我把源码提供给大家下载吧。希望对大家有用
先看看运行成功的截图:



点击后,通过输入一个汉字,再调用




结果就是下面这样了





这个webservice的代码方面主要是由一个conndb.cs跟word.cs两个类来实现,其中调用了在SQL中的一个存储过程。

其中生成SQL数据库的语句是这样的




/****** 对象: 存储过程 dbo.searchkey    脚本日期: 2006-5-9 23:36:51 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[searchkey]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[searchkey]
GO

/****** 对象: 表 [dbo].[OK]    脚本日期: 2006-5-9 23:36:51 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OK]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[OK]
GO

/****** 对象: 表 [dbo].[OK]    脚本日期: 2006-5-9 23:36:51 ******/
CREATE TABLE [dbo].[OK] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [hanzi] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [pinyin] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [wubi] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [zhengma] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [unicode] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [GBK] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [bihuashu] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [bushou] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [bishunbianhao] [nvarchar] (6) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO

/****** 对象: 存储过程 dbo.searchkey    脚本日期: 2006-5-9 23:36:52 ******/
/*
查询关键字
创建日期:2006-5-9
创建者:德仔
*/
create procedure searchkey
@searchword char(2)
as
select ID,hanzi,pinyin,wubi,zhengma,[unicode],GBK,bihuashu,bushou,bishunbianhao from ok
where
hanzi=@searchword
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO




这上面包含了存储过程的创建,只要运行就可以了。

word.cs的代码



using System;
using System.Data;
using System.Data.SqlClient;


namespace character
{
    ///
    /// words 的摘要说明。
    ///

    public class words
    {

        private int _id;
        private string _hanzi;
        private string _pinyin;
        private string _wubi;
        private string _zhengma;
        private string _unicode;
        private string _gbk;
        private int _bihuashu;
        private string _bushou;
        private string _bishunbianhao;

        public int id
        {
            get
            {
                return _id;
            }
            set
            {
             _id =value;
            }
        }


        public string hanzi
        {
            get
            {
                 return _hanzi;
            }
            set
            {
                  _hanzi =value;
            }
        }

        public string pinyin
        {
            get
            {
               return _pinyin;


            }
            set
            {
                _pinyin = value;
            }
        }


        public string wubi
        {
            get
            {

                return _wubi;

            }
            set
            {
                _wubi = value;

            }
        }


        public string zhengma
        {
            get
            {

                return _zhengma;

            }
            set
            {

                _zhengma = value;

            }
        }


        public string unicode
        {
            get
            {

                return _unicode;

            }
            set
            {
                _unicode = value;

            }
        }


        public string gbk
        {
            get
            {

                return _gbk;

            }
            set
            {
                _gbk = value;

            }
        }


        public int bihuashu
        {
            get
            {

                return _bihuashu;

            }
            set
            {
                _bihuashu = value;

            }
        }


        public string bushou
        {
            get
            {

                return _bushou;

            }
            set
            {
                _bushou = bushou;

            }
        }


        public string bishunbianhao
        {
            get
            {

                return _bishunbianhao;

            }
            set
            {
                _bishunbianhao = value;

            }
        }

    

        public words()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        public words(string hanzi,string pinyin,string wubi,string zhengma,string unicode,string gbk,int bihuashu,string bushou,string bishunbianhao)
        {
            this._hanzi = hanzi;
            this._pinyin = pinyin;
            this._wubi = wubi;
            this._zhengma =zhengma;
            this._gbk = gbk;
            this._bihuashu = bihuashu;
            this._bushou = bushou;
            this._bishunbianhao = bishunbianhao;

        }

        public words(DataRow record)
        {
            this._id =Convert.ToInt32(record["ID"]);
            this._hanzi = record["hanzi"].ToString();
            this._pinyin=record["pinyin"].ToString();
            this._wubi=record["wubi"].ToString();
            this._zhengma=record["zhengma"].ToString();
            this._unicode=record["unicode"].ToString();
            this._gbk=record["gbk"].ToString();
            this._bihuashu=Convert.ToInt32(record["bihuashu"]);
            this._bushou=record["bushou"].ToString();
            this._bishunbianhao=record["bishunbianhao"].ToString();


        }
    }
}





简单解释一下,word cs 里面主要是创建了一个word的类,其中包括了数据库中所有字段,并对他们进行了属性设定(这里不知道乍解释,哈哈[em13])

conndb.cs主要是一个连接数据库的类了




using System;
using System.Configuration;
using System.Data.SqlClient;

namespace character
{
    ///
    /// conndb 的摘要说明。
    ///

    public class conndb
    {
        public conndb()
        {
            
            
                //
            // TODO: 在此处添加构造函数逻辑
            //
        }

        public static SqlConnection create()
        {
            return new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);

        }
    }
}




最后不要忘记在web.config中进行数据库连接的设定


里加入一个节点

                
        
  


这个web.service就可以成功运行了,哈哈,很有意思.

相关的webservices的资料,大家可以看下webservice专区

点击查看相关webservice教程


我自己看来在ws是主要是这几个东东:
SOAP WSDL UDDI WSFL
简单说就是web service的通讯协议是SOAP(Simple Object Access Protocol),消息格式是:XML,而描述语言是;WSDL,发现机制是UDDI,
我把这几个术语的解释找了一下:

SOAP
SOAP,是由万维网联盟(W3C)制定的的一个新通讯协议:Simple Object Access Protocol(中文:简单对象访问协议)的英文缩写,目前已经得到IBM 、Ariba 、Commerce One 、SAP 、康柏、惠普等公司的支持。它能够让不同应用程序之间通过HTTP通讯协议,以 XML格式互相交换彼此的资料。由于HTTP通讯协议在网络上无所不在,而且XML解析程序又相当容易取得,所以SOAP能够很容易地被套用与开发。当然这些便利性是有代价的:牺牲了部份运行速度,因此SOAP本身并不是用来代替原有的低级程序,但是如果程序设计师的主要考虑在于能够很容易地与其它系统相互沟通,那么SOAP的确能够发挥它的功效。SOAP 开发工具在许多开发环境下已经可以取得了,包括 Python,Java,Visual Basic,Perl。本身具备远程过程调用 API 程序(例如 Java 的 RMI 或者微软的 COM+)开发经验的程序设计员将会发现SOAP开发工具使用起来有一种类曾似曾相识的感觉。

WSDL
WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,由Ariba、Intel、IBM、MS等共同提出,通过WSDL,可描述Web服务的三个基本属性:

·服务做些什么——服务所提供的操作(方法)

·如何访问服务——和服务交互的数据格式以及必要协议

·服务位于何处——协议相关的地址,如URL

WSDL文档以端口集合的形式来描述Web服务,WSDL 服务描述包含对一组操作和消息的一个抽象定义,绑定到这些操作和消息的一个具体协议,和这个绑定的一个网络端点规范。WSDL 文档被分为两种类型:服务接口(service interface )和 服务实现(service implementations)

关于WSDL的详细内容可参考:http://www.w3.org/TR/wsdl

UDDI
UDDI(Universal Description, Discovery and Integration)统一描述、发现和集成协议,是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。它包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。

UDDI利用SOAP消息来查找和注册Web服务。并为应用程序提供了一系列接口来访问注册中心。

关于UDDI的详细内容可参考:http://www.uddi.org/

WSFL
Web服务流语言(WebServicesFlowLanguage,简称WSFL)是由IBM针对两个层面上的工作流提出的一项Web服务规范标准:
    ●它使用一个有向图模型来定义和执行商业流程;
    ●它定义了一个公共接口,该接口允许商业流程把自己发布为Web服务
在商务流程定义方面,并非只有一个WSFL规范,WSFL是IBM的商务流程定义语言;Microsoft在推出其BizTalkServer时,就为BizTalk提供了定义商务流程的XLANG;而Sun,这个不甘寂寞和落后的技术提供商,同样与BEA、SAP和Intalio合作开发了Web服务工作流的规范,称为WSCI


这些只是简单的概念解释,由于自己也是刚刚入门,还要与大家共同努力,有错误请多多指正,谢谢!


上一篇: ASP.Net学习之常用SQL存储过程(2)
下一篇: ASP.Net学习之常用模块整理(1)
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 1 | 引用: 651 | 查看次数: 49230
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭