EasyWcf——无需配置,无需引用,动态绑定,轻松使用

C#

浏览数:126

2019-9-17

AD:资源代下载服务

设计原则:万物皆对象

前言:在上一篇的0配置使用Wcf中,虽然使用已经很方便了,但是对于最求极致简洁得人来说(比如我),客户端需要通过手动引用服务才能够调用服务接口,那么有没有办法能够绕过手动引用这一步,并且直接通过调用地址使用呢?答案肯定是有的,不然我这篇文章就毫无意义了,而我是从来不做无意义之事,人狠话不多,下面介绍如何简单、优雅、高效的使用Wcf

正文:

首先需要引入框架,框架代码以及Demo源码在最后的Git地址中!

服务端:

定义接口:

using System.ServiceModel;

namespace WcfServer
{
    [ServiceContract]
    public interface IMyService
    {
        [OperationContract]
        string Hello();
    }
}

实现接口:

namespace WcfServer
{
    public class MyService : IMyService
    {
        public string Hello()
        {
            return "Hello World!";
        }
    }
}

这里只是简单输出Hello World,别的操作只需要仿造即可!

服务端启动:

using Coldairarrow.Util.Wcf;
using System;

namespace WcfServer
{
    class Program
    {
        static void Main(string[] args)
        {
            WcfHost<MyService, IMyService> wcfHost = new WcfHost<MyService, IMyService>("http://localhost:14725", "http://localhost:14725/mex");

            wcfHost.HandleHostOpened = new Action<object, EventArgs>((obj, tar) =>
            {
                Console.WriteLine("服务已启动!");
            });

            wcfHost.StartHost();

            while (Console.ReadLine() != "quit")
            {

            }
        }
    }
}

服务端与上次的使用没多大区别

注意:服务端启动必须要以管理员身份运行!

客户端:

using Coldairarrow.Util.Wcf;
using System;
using WcfServer;

namespace WcfClient
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = WcfClientFactory.CreateClientByUrl<IMyService>("http://localhost:14725/MyService");
            var data = client.Hello();
            Console.WriteLine(data);

            Console.ReadKey();
        }
    }
}

客户端的使用不需要再从地址引用服务了,直接通过调用WcfClientFactory.CreateClientByUrl方法就可以返回操作接口,其中需要传入泛型接口类,也就是服务端中的IMyService。

服务端运行后,客户端直接运行即可!

运行截图如下:

服务端截图:

客户端截图:

可以看到,使用起来十分地简单方便,可以极大的提高开发效率!

老规矩,全部源码及Demo在GitHub:https://github.com/Coldairarrow/EasyWcf

大家用得爽了别忘了点星星哦~~~

分割线————————————————————————————————————————————————————————————————————————————————————

经过了差不多半年,毕业设计也终于完成了,我的毕设是后台快速开发框架,不出意外这个框架会永远伴随着我,我也会一直完善它,希望它能够在我的职业生涯中发放光彩!

毕设虽然完成了,但是探索技术的步伐是永远不会停止的!大家一起加油~~~

END

作者:寒空飞箭