欢迎来到皮皮网网首页

【erc3525源码】【erp管理源码】【有哒源码】c webservice源码

来源:涨停盘整指标源码 时间:2024-11-25 00:01:11

1.用C#写简单的Web Service

c webservice源码

用C#写简单的Web Service

       åœ¨å¼€å§‹ä¸‹é¢è¿™ä¸ªä¾‹å­ä¹‹å‰ï¼Œä½ çš„系统需要:

        1、WIN + IIS;

        2、VS.Net;

        3、SQL Server(我这里用的是SQL数据库);

       è¿™ä¸ªWeb Service的例子用的是MS大吹的C#写的,如果你喜欢VB,那么用VB也是一样的哦,只不过语法上一些小的差别而已,道理都是一样的,不过即然MS都鼓吹C#,如果你能够用C#写还是用这为好哦。

       ä¸‹é¢æ˜¯å†™çš„步骤:

       ä¸€ã€æ‰“å¼€VS。NET的集成开发环境,FILE菜单上选择New,新建一个C#的ASP.NET Web Service工程,工程名为WebServiceDemo(完整的是ponents = null;

        /// <summary>

        /// Required method for Designer support - do not modify

        /// the contents of this erc3525源码method with the code editor.

        /// </summary>

        private void InitializeComponent()

        {

        }

       /// <summary>

        /// Clean up any resources being used.

        /// </summary>

        protected override void Dispose( bool disposing )

        {

        if(disposing && components != null)

        {

        components.Dispose();

        }

        base.Dispose(disposing);

        }

        #endregion

       // 连接字符串常量

        const string szConn = "server=(local)\\taoyi;uid=sa;pwd=;"

        + "initial catalog=mydata;data source=taoyi";

       [WebMethod]

        public String About()

        {

        return "这是一个C#编写的Web Service演示程序!";

        }

        // 返回其中一个WebServiceDemo表

        [WebMethod]

        public DataSet GetServiceDemoTable()

        {

        DataSet sqlDs = new DataSet();

        DataAccess dataAcc = new DataAccess(szConn);

        string szSql = "Select * From WebServiceDemo";

        sqlDs = dataAcc.GetDataset(szSql,"Demo");

       return sqlDs;

        }

        // 返回由用户指定的查询

        [WebMethod]

        public DataSet GetByUser(string szCommandText)

        {

        DataSet sqlDs = new DataSet();

        DataAccess dataAcc = new DataAccess(szConn);

        sqlDs = dataAcc.GetDataset(szCommandText);

       return sqlDs;

        }

        }

       æ˜¯ä¸æ˜¯å¾ˆç®€å•å“¦ï¼Œå°±åªè¿™ä¹ˆç‚¹ï¼Œå‘µå‘µ~,不过也可以说明问题的了。这个类中声明了三个WEB方法,有没有发觉呢?每个方法的前面都加了[WebMethod],表示该方法为WEB方法。呵呵,如果你想要你写的函数可以让WEB应用程序调用的话,这个可不能少的啦~,不然WEB应用程序就无法调用的。

       åˆ°æ­¤ä¸€ä¸ªWEB服务就完成了,点击运行看看,如果没什么错的话,就会出现如下的WEB页面服务描述:

       Service1

       The following operations are supported. For a formal definition, please review the Service Description.

       * GetByUser

       * GetServiceDemoTable

       * About

       .....(下面还有很多)

       å…¶ä¸­ä»£æ˜Ÿå·çš„就是先前在函数前加了[WebMethod]的函数。在出现在页面中你可以单击相应的函数,然后就会跳到调用页面,你可以在相应的文本框中(如果函数有参数的话)输入相应的参数,点而调用按钮,那么就可以看到函数返回的结果了(前提是函数调用无错的话),不过全是XML格式的文本。比如我的GetServiceDemoTable函数调用的结果如下:

       <?xml version="1.0" encoding="utf-8" ?>

       - <DataSet xmlns=":xml-msdata">

       - <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">

       - <xs:complexType>

       - <xs:choice maxOccurs="unbounded">

       - <xs:element name="Demo">

       - <xs:complexType>

       - <xs:sequence>

        <xs:element name="ID" type="xs:int" minOccurs="0" />

        <xs:element name="szUser" type="xs:string" minOccurs="0" />

        <xs:element name="szSex" type="xs:string" minOccurs="0" />

        <xs:element name="szAddr" type="xs:string" minOccurs="0" />

        </xs:sequence>

        </xs:complexType>

        </xs:element>

        </xs:choice>

        </xs:complexType>

        </xs:element>

        </xs:schema>

       - <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">

       - <NewDataSet xmlns="">

       - <Demo diffgr:id="Demo1" msdata:rowOrder="0">

        <ID>1</ID>

        <szUser>taoyi</szUser>

        <szSex>男</szSex>

        <szAddr>四川泸州</szAddr>

        </Demo>

       - <Demo diffgr:id="Demo2" msdata:rowOrder="1">

        <ID>2</ID>

        <szUser>xiner</szUser>

        <szSex>女</szSex>

        <szAddr>四川宜宾</szAddr>

        </Demo>

        </NewDataSet>

        </diffgr:diffgram>

        </DataSet>

       åˆ°æ­¤ä¸ºè‡³ï¼ŒWeb Service程序就已经算是完成了。

       ä¸‹é¢è¦åšçš„是写一个WEB应用程序来测试我写的这个Web Service了,看看能不能达到想要的结果。建立Web应用程序的步骤如下:

       ä¸€ã€æ–°å»ºä¸€ä¸ªASP.Net Web Application工程,与创建Web Service的第一步一样,只是工程类型不一样罢了。我这里工程名为WebServiceDemoTest,完整的为pub\wwwroot\WebserviceDemoTest)下生成了所需文件。

        二、在设计视图下打开WebForm1.aspx文件,在里面放置一个panel容器,为了达到测试的目的,我们需要三个服务端按钮和一个服务端文本框,分别调用我们在Web Service中写的三个函数,另外,为了展示调用方法所得达的数据,还需要一个服务端标签控件和一个DataGrid控件。页面的布置就随便你了,想怎么放置就怎么放置,只要能达到演示的目的就行。

        三、引用先前写的Web Service程序,菜单步骤如下project->add web reference...,然后输入我们Web Service的路径,这里是http://localhost/WebServiceDemo/Service1.asmx,点击添加就OK了。这时你将在类视图中看到localhost命名空间了。

        四、编写测试代码。

       ä¸ºäº†ä¾¿äºŽåŽé¢å°‘写些代码,如(xxxx.xxxx.xx xx = new xxxx.xxx.xx()这种),那么首先你得引用localhost命名空间的service1类,以后直接写xxxx xx = new xxxx()就可以了。

        下面是几个按钮的代码:

       // 测试GetServiceDemoTable()

        private void Button2_Click(object sender, System.EventArgs e)

        {

        DataSet ds = new DataSet();

        Service1 oService = new localhost.Service1();

       // 返回记录集

        ds = oService.GetServiceDemoTable();

        if (ds != null)

        {

        // 显示记录集的记录

        DataGrid1.DataSource = ds.Tables["Demo"];

        DataGrid1.DataBind();

        }

        else

        {

        this.Response.Write("加载数据错误!");

        }

        }

        // 测试GetByUser()

        private void Button1_Click(object sender, System.EventArgs e)

        {

        DataSet ds = new DataSet();

        Service1 oService = new localhost.Service1();

        String szCommand = TextBox1.Text;

       ds = oService.GetByUser(szCommand);

        if (ds != null)

        {

        DataGrid1.DataSource = ds;

        DataGrid1.DataBind();

        }

        else

        Response.Write("错误!有可能是SQL命令有问题!");

        }

        // 测试About()

        private void Button3_Click(object sender, System.EventArgs e)

        {

        Service1 oService = new localhost.Service1();

        Label1.Text = oService.About();

        }

       OK,最后就是运行了,如果一切OK,点击第一个按钮得到的将是在一个包函用户执行的SQL命令的表结果。第二个按钮得到的就是上面运行Web Service时的GetServiceDemoTable得到的XML描述,即

        ID szUser szSex szAddr

        1 taoyi 男 四川泸州

        2 xiner 女 四川宜宾

       ç‚¹å‡»ç¬¬ä¸‰ä¸ªæŒ‰é’®ï¼Œåˆ™åœ¨Label1中显示"这是一个C#编写的Web Service演示程序!”的字符串。