不谋万世者,不足谋一时;不谋全局者,不足谋一域。君子敏于事而慎于言 新浪微薄:土司阿哈

Web Service创建和发布以及调用

上一篇 / 下一篇  2008-08-14 15:23:54 / 个人分类:软件开发相关

1208328177
  • 自动化测试:
  • 测试文档:
51Testing软件测试网{d]$t,C;Fe+BZ

一、创建和发布Web Service51Testing软件测试网s5s,\.C4m;} t
    Web服务方法中可以返回一个DataSet对象
|a_5yz&A7f$x0
    WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用、ASP.NET Web Form程序、甚至其他语言的客户端,都可以与同一个WEB服务通信,其平台和语言无关性使其有了广阔的发展空间。

x{7beA,G.pE0

Z2E^ Ul0p:k0利用VS2005和IIS我们可以很容易地发布一个WEB SERVICE,因为其中有几个细节需要注意,所在初学者常常在这里出现问题,现通过一个简单的例子说明如何创建和发布一个WEB SERVICE。

S.QZ-a?051Testing软件测试网|.|h/`w7~0d.J

环境:Windows Server 2003,.Net FrameWork 2.0,IIS6.051Testing软件测试网iP^T.n2jmT

+_T$u Rz#T0工具:VS2005

@0F B'ke/]3\051Testing软件测试网#wCxRi.fS'P-}P

1.首先VS2005中新建一个WEB服务项目。51Testing软件测试网d|F B@y

I.k0NJ3O A!y0打开“文件”-“新建”-“网站”,在对话框中选择“ASP.NET Web服务”,VS2005会自动生成一个Service.cs文件,包含如下代码:

}v;C,M C n0

B]yk$G6V P051Testing软件测试网$H wc:}k0U

usingSystem;51Testing软件测试网2v d&F4Ez+o$gl5[
usingSystem.Web;51Testing软件测试网J QS?v
usingSystem.Web.Services;
p"j(f(_9lE:n2z3P-E0
usingSystem.Web.Services.Protocols;
]tJ1^z,?w%@t0
j5M VTG-`!S l0[WebService(Namespace
=http://www.baidu.com/)]51Testing软件测试网;U1ld)|J(S cQ
[WebServiceBinding(ConformsTo
=WsiProfiles.BasicProfile1_1)]
Z7_s z"_M0
publicclassService : System.Web.Services.WebService51Testing软件测试网%o)}R,m G6W7~p(_s
{51Testing软件测试网!Z*|-xY7l&G
    
publicService () {
g2sh;gQ3k J/Q0
X*UND G N+_0        
//如果使用设计的组件,请取消注释以下行51Testing软件测试网*Sb)WonYJ
        
//InitializeComponent();
1C~'J;Lf"a~:P0
     }
J%tR]2b'Hj3_y``0
W TdQ~f0_P0     [WebMethod]
1aCG1f)O0    
publicstringHelloWorld() {
r2S;~z7^k9h0        
return"Hello World";
[4?f.FG#{R$o0     }51Testing软件测试网.L:C^b!M&J2|&_X
    51Testing软件测试网+?!m-ePt3c
}
9l9U*WZg ~)Be051Testing软件测试网7A.zY'{#w0S%H H
51Testing软件测试网m([x:q[\3z K

你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。51Testing软件测试网QFy x"f.x.q;N^hJG

51Testing软件测试网0u1C/@!Qsx)p$r

2.生成网站

OtG%{ Fy:w051Testing软件测试网0NVq(U Pa@0jY-U

很简单,“生成”-“生成网站”或直接Shift+F6

6s Hp'f^0hj#w/c0

^`}d0Aq Ae03.发布网站

E9k3s&M6Z&PM0

1R-r2Y+z_G4QZ0也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:\WebSite1\PrecompiledWeb\WebSite1,我们需要目录下的文件。51Testing软件测试网4sb2@vm X;i

51Testing软件测试网(z"Xr`&H"c

注意:生成网站的路径中不能有空格!我在第一次时使用的路径中有空格!切记!!!51Testing软件测试网Z2o0x7Fi \/g\

+p(o!Ld_}$W!Q e0 51Testing软件测试网9s8R?0_jK6`m{`

51Testing软件测试网$C9q/aQn Jf'OG

4.配置IIS

qfpyK{a0

6L j![ n/VeC0在默认网站中建一个虚拟目录, 比如webservice,将发布的目录路径指定到第3步发布这个目录中,然后确定即可。

jG,K1{+}4g!R'|T0

u\#\'{h_0到这时,已经大功告成,你可以通过访问http://域名/webservice/Service.asmx来验证。如:http://localhost/WebService/Service.asmx出现如图,则说明应经正常

vcEYSt,u Jt051Testing软件测试网"Cw6|.n4EeX

 51Testing软件测试网iSq(U^&m:CUr

)X5^%d@j0

;o.t$?jI0tNI3}-|051Testing软件测试网 Y;WM$C$B7tNDB

注意:除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。

~})y.tD9w^ z0

!ln't^SY0 

%Bd(Dy"DM7Wl:ET051Testing软件测试网9kF4gImoW

通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服务。51Testing软件测试网j_h1J']lF

二、c#的winform中调用Web Service API(VB6.0也可以调用该web服务)51Testing软件测试网|smg`f+ZJ
         现在以C# WinForm为例谈谈如何使用它 ,在服务中我们只有一个自动生成的方法:HelloWord(),其实现如下:
[WebMethod]
-p"y1fA\eY(r0
?J/X-O^@#\mj7lP0
publicstringHelloWorld(){
"^#b!U"Ke`]051Testing软件测试网6Us%}f8z(y
return"Hello World";
Bg_.^-H9EwC ~0
N;l?9i%E7VP` W0}

JP/b-Xl0在WINFORM中我们将添加一个按钮,添加单击事件,在事件处理函数中弹出一个对话框显示HelloWord的结果。51Testing软件测试网m*R&YJ2^sh

*Xi~]8G\'qGx01.添加WEB引用

Zv@,[6Bf @uy0

+[$L z L M sg0在VS2005中新建一个Windows应用程序项目,取名testwebservice,在项目中添加一个WEB引用,可在“解决方案资源管理器”的项目名上点右键添加,在弹出对话框中的URL输入框中输入WEB服务器的路径:如http://你的域名/web服务务路径/service.asmx,点击“前行”按钮后会搜索这个服务,并在右边报告找到的服务,并在左边显示service.asmx页面,我们在WEB引用名输入框中输入一个名字,这个将做为程序中WEB服务的命名空间名,这里我们取名mywebservice。

&v#~s1[&Yj(DM#f051Testing软件测试网Q{;D[7Cw'd-L Q

2.添加按钮单击事件

)z\8Il;G0

9k;_;MS(iJU#V,U0在Form中拖出一个Button按钮,双击单击事件处理方法,代码如下:

6m+`,T0X2A?0
        privatevoidbutton1_Click(objectsender, EventArgs e)51Testing软件测试网 K w6K p/Z kM%od:w*?
         {
](l&gE&_W%B{:}0             mywebservice.Service ws
=newtestwebservice.mywebservice.Service();
W]d RH4h,?_0             MessageBox.Show (ws.HelloWorld());
;|,H{I0e%mQ/O0         }51Testing软件测试网7kO8`Mn0f

:M/c]O4c|+R'ZH6U0其中mywebservice.Service ws = new testwebservice.mywebservice.Service()是实例化一个WEB服务对象,ws.HelloWorld()是调用WEB服务中的这个HelloWorld方法,其返回字符串将用MessageBox.Show()函数显示出来。51Testing软件测试网raJOdh1a4i

51Testing软件测试网t"fs3Owt$R,w_*M

好了,最简单的一个调用WEB服务API的WinForm例子已经完成了,编译运行,单击按钮,将会弹出对话框显示“Hello World”信息。51Testing软件测试网;jK}1IaHa:H0z1YN

U)X(O V4Su.j7Lq0重要的一点,在.net的WEB服务API中,除了一般的数据类型外,还可以返回结构和DataSet对象,有了这一点,就可以构建我们大多数的数据库应用了。51Testing软件测试网0dHsfJg!}O

;{7^:B Rm0好了,接下来的工作就是在WEB服务中添加你的API完成你的工作了。

N%pRVL0?k(w0

TAG: 软件开发相关

 

评分:0

我来说两句

Open Toolbar