WCF教程一:新建并部署

一、概述

Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。
WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。
WCF专门用于面向服务开发。



客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性。

二、新建WCF

说明:本文环境是建立在VS2017的基础上,不同版本VS操作上可能会有点不同

  1. 新建项目,直接选择创建WCF服务应用程序,



    创建之后,生成这样的目录:


2.删除系统生成的两个文件IService1.cs与Service1.svc。

3.添加自定义的WCF【服务文件】User.svc,此时vs2010会自动生成WCF接口文件IUser.cs,我们在IUser中定义WCF方法PlusNumber,在User.svc.cs对该接口的方法进行实现。

代码如下:

//IUser.cs
namespace WcfService1
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IUser”。
    [ServiceContract]
    public interface IUser
    {
        //[OperationContract]
        //void DoWork();
        [OperationContract]
        string PlusNumber(int a, int b);
    }
}

//User.svc.cs
namespace WcfService1
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“User”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 User.svc 或 User.svc.cs,然后开始调试。
    public class User : IUser
    {
        //public void DoWork()
        //{
        //}
        public string PlusNumber(int a, int b)
        {
            int c = a + b;
            string result = "WCF服务计算结果:"+c.ToString();
            return result;
        }
}
}

大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。
[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。
[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。

此时我们的第一个WCF服务程序就建立好了,将User.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS自动调用了WCF的客户端测试工具以便我们测试程序,然后双击PlusNumber()方法名,就会出现下图:

在请求窗口中的值中输入参数“a”与“b”,然后点击“调用”,在响应窗口中会出现返回值“WCF服务计算结果:a+b的值”,说明测试成功,点击下面的XML也可以看到XML的数据传输。我们现在建立好了服务的应用程序和业务逻辑。

三、将WCF部署到IIS

到IIS右击网站,然后添加网站,将下图的参数填上。



然后再右击WcfService1文件将它设为应用程序:



然后就可以浏览此服务:

点击User.svc,跳转到以下调用页面:


点击 http://localhost:8001/WcfService1/User.svc?wsdl,从这里可以看到我写的方法,这个地址也是我们后用将要引用的地址:

现在我们的WCF服务就算是已经部署完成了。

四、调用WCF

这边我是打算创建一个web服务程序来调用,所以我新建一个空白MVC web项目,


创建后目录:


然后添加服务引用,将添加好参数,可以修改引用命名空间名称,


完成添加后,这里我是选择创建一个Test控制器以及对应视图来达到调用那个WCF的服务,要记得using刚添加的WCF引用,这样才能使用。
控制器代码如下:

using WebForTest.ServiceReference1;
public class TestController : Controller
    {
        // GET: Test
        public ActionResult Index()
        {
            ViewBag.result = "暂无计算";
            return View();
        }
        // POST: Test
        [HttpPost]
        public ActionResult Index(int a,int b)
        {

            UserClient user = new UserClient();
            string result = user.PlusNumber(a, b);
            ViewBag.result = result;
            return View();
        }
    }

视图代码如下:

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<p>@ViewBag.result</p>
@using (Html.BeginForm("Index", "Test", FormMethod.Post))
{
    <p>
        <input id="a" name="a" type="text" />+<input id="b" name="b" type="text" />
        <br/><input id="submit_txt" type="submit" />
    </p>
}

运行效果如下:




通过以上例子我们就已经完成了对WCF的一个简单新建,部署及调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容