当前位置:坤哥网-kungge-WebService介绍

WebService介绍

2017/7/26 22:50:16 kungge阅读(305) 评论(0)


WebService传输数据是基于XML,在.NET下的WebService结构比较简单,易于理解和应用,开放容易控制。WebService采用SOAP协议(Simple Object Access Protocol),宿主在IIS上。

WebService出来已经很多年,应用广泛,是一个很成功的产品,甚至现在还有很多企业都是采用WebService进行数据交互的。我前两年所在的公司开发的一个仓储管理系统,用的就是WebService和金蝶K3进行数据交互。


设计模式


WebService主要用到了三种设计模式:装饰模式(Adaptec)、外观模式(Facade)、代理模式(Proxy)。


安全性


WebService采用SOAP协议,但是SOAP协议规范中并没有提及安全性,但是我们却可以做一些改进。


创建WebService


WebService是宿主在IIS上的,因此我们只需要创建一个能部署到IIS上的程序即可,然后在程序中添加WebService服务。本次创建一个空的MVC项目,在这个项目中创建发布WebService。

在vs中选择添加新建项,选择Web服务:

f951286d-ae61-4a38-a8c7-2dc323db387a.png


默认添加了一个HelloWorld方法,和普通方法没什么区别,只要在方法上添加WebMethod特性即可。我们添加一个返回两个int相加结果的Add方法:

        [WebMethod]
        public int Add(int a, int b)
        {
            return a + b;
        }

右键WebServiceTest.asmx在浏览器中查看:

ca2d07e6-8167-4783-b5aa-7628c9bc4025.png

由于HelloWorld方法没有输入参数因此可以直接点击调用查看:

3eb0e789-6fde-44e5-a14d-6a01b14892a0.png

返回的是一个XML格式的数据。

调用Add方法则需要输入参数:

2c15c849-d7d0-4c98-8354-2030524a37f8.png

f0a16800-c51b-4689-a9b6-48952d9bdd99.png

通过这种方式我们可以调试我们写的接口方法。


调用WebService


创建一个空的Web MVC项目,解决方案资源管理器右键引用,添加服务引用:


e4d561e5-e72c-4ed9-b22d-77c5348cfd8e.png


添加WebService地址,点击转到,连接成功的话则在服务对话框中会显示调用的WebService。在实际开发中,若是调用远程的WebService,则地址可能是个"ip+端口"或者"域名+端口",内网项目开发则localhost是一台内网服务的IP:

f3629b0e-9440-4d5f-bc8c-2cd186fd9c48.png


双击刚才添加的服务引用,则可以查看内部有什么方法:

0c76a69b-3435-4077-be60-4efaed9551ca.png


创建一个控制器和视图分别用来调用WebService方法和显示WebService结果:

public class TestWebServiceController : Controller
    {
        // GET: TestWebService
        public ActionResult Index()
        {
            using (ServiceReference1.WebServiceTestSoapClient client = new ServiceReference1.WebServiceTestSoapClient())
            {
                string str = client.HelloWorld();
                int addResult = client.Add(520, 1314);

                ViewBag.ShowStr = string.Format($"HelloWrold方法返回:{str}    Add方法返回:{addResult}");
            }
            return View();
        }
    }
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}

<h2>测试WebService</h2>

@ViewBag.ShowStr

调用结果:

2d623b84-b241-46e8-a853-ae8fa8a88a71.png

若是Web Service更新了,则只需更新服务引用即可:

3bdeb048-904c-48f9-a5a6-f1b45f64e094.png



单元测试调用WebService


要测试WebService建议添加单元测试项目用来测试,参考:《在.NET中使用单元测试项目》

向上面一样添加web服务引用。在UnitTest1类中添加要测试的方法:

 [TestMethod]
        public void TestHelloWorld()
        {
            using (ServiceReference1.WebServiceTestSoapClient client = new ServiceReference1.WebServiceTestSoapClient())
            {
                string str = client.HelloWorld();

                Assert.AreEqual("Hello World", str);
            }

        }

        [TestMethod]
        public void TestAdd()
        {
            using (ServiceReference1.WebServiceTestSoapClient client = new ServiceReference1.WebServiceTestSoapClient())
            {
                int result = client.Add(520, 1314);

                Assert.AreEqual(1800, result);
            }
        }

运行测试即可。

标签: WebService
分类: ASP.NET

发表评论 没有账号,注册评论