• C#恶补WCF


    一,前言。

      以前一直在用WebService,突发奇想能用WCF不再用WebServer,毕竟微软一直在推崇WCF。(当然具体情况具体分析,毕竟为了学习)

      C#里的WebService可以理解为WCF的一个分支(没见过任何一篇文章表露过“WCF包含WebService”的意思,所以只能这样理解一下,大多数还是认为WebService和WCF是不同的东西,wcf可以用来简化WebService的开发)

    1.WebService与WCF的区别

      Service是早期的技术实现了,也是soap的东西,采用的主要是http协议。微软的Web服务实现称为ASP.NET Web Service,采用Web Service 规范。它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。更新完善几代后,微软就推崇WCF了。

      WCF的话是相对较新的技术,它的目标不仅仅是在支持和集成Web Service,因为它还兼容和具备了微软早期很多技术的特性。(这里也是认为WebService与WCF是不同东西的原因之一,它并不能简单组合Web Service的东西,需要改动许多东西来兼容更多东西。就像.NET Framework与.NET5一样)它整合了.Net平台下所有的和分布式系统有关的技术。如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列。

      以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;

      以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host);

      WCF可以支持的协议包括TCP,HTTP,msmq、命名管道等,里面的basichttpbinding可以跟以前的ws进行通信。跨进程以及自定义;

      安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。

      也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了。

      这里只能摘抄记录这么多了,详见WCF和webservice的区别 —— 斜阳雨陌

      请问WCF 跟 WebService之间的相同跟异同这个讲的挺细,它里面认为Web Service 就是 ASP.NET Web Service,与WCF比,前者规范,后者是框架,不是一个范畴,这又是认为WebService与WCF是不同东西的原因之一

       注:WebService传输数据支持json等不单单支持xml

        WCF 比Service传输快,但当WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议速度差不多一样。

        对应上文的分析,我并不关心WebService与WCF是不是包含关系(无聊的面试官才会去问你这些,大胆的说就好了),我只关心它的运行速度,安全性,开发效率。这些过几年在告诉你吧。

      二,第一个WCF程序

    1.开发环境:

    操作系统:Windows 7

    开发环境:VS2017

    编程语言:C#

    IIS版本:7.0

    2.参照:使用C#创建WCF服务控制台应用程序,完成第一个程序,下面我只会放几张截图。

      浏览器输入“http://localhost:81/MyWCFService.MyWCFService.svc”进行验证部署完的结果:

    下面这里不要点击右侧发现,发现的只是本方案中的,不是部署在IIS中的。

     WCFTestClient.Program代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using WCFTestClient.MyWCFReference;
    
    namespace WCFTestClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                MyWCFServiceClient client = new MyWCFServiceClient();
                Console.WriteLine(client.GetData(123456));
                CompositeType cType = new CompositeType()
                {
                    StringValue = "Hello World!",
                    BoolValue = true
                };
                Console.WriteLine(client.GetDataUsingDataContract(cType).StringValue);  // 运行到这里花了11.144秒的时间,额。。。
                client.Close();
                Console.ReadLine();
            }
        }
    }

    结果:

     

     与webservice对比可以发现写法基本一样。

    捕抓到一个和我差不多的人@你若安好,便是晴天!  by cnxy.me

    不同的时间做了一些相同的事:获取键盘事件,WPF,SQLite,LINQ,加密,WCF,DevExpress,都习惯用Winfrom,SQLServer啥的。哈哈哈。。。把大佬的知识都学过来。哈哈哈哈。

    三,WCF程序——

     未完。

    365个夜晚,我希望做到两天更一篇博客。加油,小白!
  • 相关阅读:
    [BJOI2019] 删数
    [HNOI2019] 校园旅行
    [ARC093D] Dark Horse
    rpn模块
    通俗易懂谈强化学习
    np.random.choice()的用法
    深度学习模型量化
    np.array中的[::1]的一点理解
    如何增加深度学习模型的泛化能力(L1/L2正则化,dropout,数据增强等等)
    深度学习中的网络剪枝(pruning)简介
  • 原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/14421613.html
Copyright © 2020-2023  润新知