2024-08-21 17:40:06
勇哥注:现象就是,一个订阅都,他在数据到达的事件代码里下断点,你会发现其它订阅的客户端全部卡住(可能白屏)具体表现取决于客户端的编码。这个问题的解决方法是,在host这边,在for循环发布的代码里,用task开线程进行发布。例如有10个订阅者,就开10个线程进行发布。当然也可以考虑在客户端的接收数据的事件代码中开线程进行处理数据,但这种方式对下断点调试可能就支持不好。...
2024-08-21 15:10:41
错误1:没有终结点在侦听可以接受消息的 net.tcp://127.0.0.1:3726/IStatusMessageAPI。这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况,请参见 InnerException 以了解详细信息。这个经检查,发现是客户端终结点拼写错误:服务端是: net.tcp://127.0.0.1:3726/IStatusMessageAPI客户端是: ne...
2024-08-20 09:57:37
勇哥注:一般工厂会对电脑进行管控,包括: 1. 电脑必须以普通用户身份登陆,不允许使用管理员账号登录 2. 电脑必须加入企业的域在上面这些情况下,wcf程序采用tcpbinding,会不会出现问题呢?勇哥在写这篇文章之前是没有做过这种测试的,此篇会记录下实验结果,如果有问题我会写下解决方案。实验后的结论: 电脑登陆普通用户身份后,host运行需要输入管理员用户名密码,这是因为host...
2024-08-05 09:35:15
勇哥注:这个问题有些奇怪,虽然被AI解决了(还是引导数次才总算得到正确的方式)但是我清楚的记得下面的问题代码先前是正确的,为啥现在不灵了?AI说的办法,还真是个知识的盲区,之前一直以为指定基地址应该是在host open的时候,也就是这个wcf函数,ServiceHost(Type serviceType, params Uri[] baseAddresses)。问题代码: NetTcpBind...
2024-07-30 18:55:22
勇哥注:这个问题比较常见。它是在一个rest函数中,想使用多个参数,或者类似Tuple<>这样的复合类型,怎么弄?一般的做法是使用查询字符串,或者是单个包装类型,例如类。在WCF REST服务中,WebInvoke 或 WebGet 属性的 UriTemplate 参数不支持直接将 Tuple<string, int, int> 或任何复杂类型作为路径参数(即URL中的 {...
2024-07-25 15:55:38
勇哥注:这里补充几个WCF REST的知识点。rest到底要不要元数据?rest的帮助页怎么弄?rest怎么改成支持json消息?rest支持可靠的消息传递吗?rest服务怎么用webClient来访问?(其实就是模拟浏览器http的访问过程)(一)元数据wcf的rest服务不需要你指定元数据。在WCF中,特别是当您创建REST服务时,关于元数据的处理与传统SOAP服务有所不同。WCF REST服...
2024-07-22 08:15:24
在解释BizTalk Server涉及的B2B(Business-to-Business,企业对企业)和EAI(Enterprise Application Integration,企业应用集成)概念时,我们可以从以下几个方面进行阐述:B2B(Business-to-Business)定义:B2B,即企业对企业,是指企业之间通过专用网络或Internet,进行数据信息的交换、传递,开展交易活动的商...
2024-07-20 11:55:44
本文主要是对ESB的总结,下面我将从以下几点去理清ESB相关知识点。什么是ESBESB解决了什么问题以及什么是HSBESB产品有哪些?如何选择如何实现ESB的各个功能ESB与微服务的区别一、什么是ESBESB是Enterprise Service Bus的简称,中文翻译为企业服务总线,企业服务总线是一个实现系统间集成和互联互通的重要技术架构,可以理解为是一种消息和服务集成的中间件平台。二、ESB解...
2024-07-16 15:30:45
勇哥注:SOA的源起,就是解决企业系统的架构重构,避免信息孤岛,以及提高服务负载应对企业的业务发展需求。这个过程就涉及到了分布式应用。最早的是单体架构特点是:电商UI和订单等5个业务逻辑模块都是属于同一个项目的。业务增长后,数据库开始扩容,每个业务模块对应一个数据库当用户通过UI下单后,5个模块都得操作各自的数据库一次。 现在改为SOA,面向服务架构5个模块都以服务方式提供,它们可以在同一...
2024-07-15 21:02:47
勇哥注:com+技术已经是20年前的技术了,当初com的推出是为了解决跨语言之间的模块复用。后来在此基础上发展出DCOM(分布式组件对象模型)和MTS(Microsoft事务服务),这些加在一起就是com+了解这些老技术,即是对老旧系统支持的需要,也是对新技术产生的需求有更深刻的了解。COM+技术介绍COM+是Microsoft提出的一种组件技术,它并不是COM(Component Object...
2024-07-15 17:07:44
Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发。Spring Cloud并没有重复制造轮子,而是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。以下是对Spring C...
2024-07-15 16:14:42
在WCF(Windows Communication Foundation)中,Peer通常指的是对等网络(Peer-to-Peer,简称P2P)通信中的一个节点。WCF是一个用于构建面向服务的应用程序的框架,它支持多种通信协议和传输机制,包括对等网络通信。下面我将从几个方面介绍WCF中的Peer相关概念:一、Peer的基本概念对等网络(P2P Network):对等网络是一种分布式网络,其中的每...
2024-07-15 14:10:20
勇哥注:wcf可以是很多东西,这个主要是从不同角度来看。(一)wcf是windows下通讯技术集大成者统一编程模型:WCF为Windows平台上的各种通讯技术提供了一个统一的编程模型。在过去,开发者可能需要学习并应用多种不同的技术(如ASP.NET Web服务、.NET Remoting、WSE等)来满足不同的通讯需求。而WCF的出现,通过定义一个统一的编程接口和配置方式,极大地简化了这一过程。开...
2024-07-15 13:41:30
勇哥注:wcf主要用于.net framework中。这里谈一下如果想在.net core中应用,该怎么做?目前的wcf的hosting端只能用在.net framework里,.net core用不了。而client端,在两边都是可以使用的。在.net framework里,wcf功能主要引用System.ServiceMode。在.net Core里,引用的是System.ServiceMod...
2024-07-15 12:04:03
HTTPS和HTTP在多个方面存在显著的区别,这些区别主要体现在协议的安全性、连接方式、证书管理、连接状态、端口号、资源消耗以及兼容性等方面。以下是对这些区别的详细解释:1. 协议安全性HTTPS:是HTTP的安全版,它使用了SSL/TLS协议来加密数据传输,保证数据在传输过程中的安全性。这种加密方式可以有效防止数据被截获或篡改。HTTP:则没有这样的加密功能,数据在传输过程中是明文传输,因此存在...
2024-07-15 09:17:13
勇哥注:这篇贴子试图从四个方面来介绍wcf的全部知识点。这个目的是有点夸大,因为只是盘点没有细化。但是做为Wcf的完整功能介绍的总目录应该是可以的。wcf的知识回顾从下面的四个角度进行讲解:(1)首先是Wcf在SOA中的定位来谈(按发展时间的历史)如下图所示:(图1 wcf在soa技术中的定位)(2)然后是从wcf的架构方面来谈,如下图所示:(图2 wcf的架构)(图3 常见的绑定类型)(3)最后...
2024-07-12 15:41:26
勇哥注:这是因为默认情况下REST是启用了安全消息的。默认情况下,REST服务的传输数据是安全加密的。这个时候你用Fiddle抓包,看到resphonse部分是密文无法阅读。类似下面这样:CliperData后面就是一大串看不懂的密文数据。s:Body[u:Id=0]
e:EncryptedData
e:CliperData我们可以在服务端和客户端同时去掉安全项。要注意的是...
2024-07-06 15:50:46
勇哥注:条件获取:可以避免相同数据的重复传输,进而提高性能。条件更新:用于解决资源并发操作问题。 当我们对一个资源 进行修改或者删除的进修,通过条件更新的信息,我们可以知道在这之前该资源是否被其它人改动过。条件更新的流程:服务端: 2。返回body+(对等性判断值的)Etag报头 5。通过Etag报头与If-Match比较一致性,不一致就表示 被修改/删除的资源 已经被修改了,...
2024-07-05 18:16:05
勇哥注:条件获取(Conditional Retrieval):客户端访问一个资源会对它进行缓存,当再次访问这个资源的时候,如果资源相比缓存来说没任何变化,就不会返回真正的资源,而是回复一个“标识”,表明资源并没有改变。这个特性是http天生带有的,因此像wsHttpBind, webHttpBind, basicHttpBind,REST服务等,都可以使用。http的条件获取机制是这样的:下面是...
2024-07-04 20:43:21
勇哥注:并非wcf有一种专门的发布/订阅方式,它只是双工方式的一种变形。其实就是用一点编程技巧在双工方式上面改进而来的。如下图所示:上面是客户端,下面窗口是服务端。首先你在客户端点击两次“订阅”,服务端点“刷新”就可以看到最新的订阅客户列表。然后点“发消息”,客户端就能收到结果。客户端收到的结果是两个订阅者的信息。服务端winform代码:using System;
using System.C...
2024-07-04 14:56:16
勇哥注:wcf的双工通讯,有双工通讯和发布订阅两种方式。(一)勇哥先来演示“双工通讯”程序还是使用简单的add计算的例子。下面是程序的解决方案,为了简单就只有两个项目。我们把契约、服务、hosting合在一起,变成下面的WcfService项目。ContractAndService.csusing System;
using System.Collections.Generic;
using...
2024-07-02 16:44:24
勇哥注:这是一个比较容易忘记的点,特别是使用wcf配置工具的时候。Service的name并不是随便命名的。 <services>
<service name="Services.CalculatorService">
<endpoint address="http...
2024-07-02 16:04:10
先来引用一下关于超时问题的处理的一些资料处理WCF超时的最佳方法1. 调整WCF绑定配置:可以通过修改绑定配置来增加或减少超时时间。在WCF配置文件中,可以设置连接超时、读取超时和发送超时等参数。根据具体情况,可以适当增加这些超时时间,以确保请求能够在预定时间内完成。2. 使用异步操作:使用异步操作可以提高WCF服务的性能和响应能力。通过使用异步操作,可以将长时间运行的操作放在后台线程中进行处理,...
2024-07-02 14:09:06
本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置。介绍实现步骤使用方法效果 介绍在 OEA 框架中,是使用 WCF 作为数据传输框架。但是使用 WCF 内部的二进制序列化,序列化后的数据大小,要比使用传统的 System.Runtime.Serialization.Formatter...
2024-07-01 17:18:46
勇哥注:网上的教程都是教你怎么用Fiddle+浏览器来抓包;或者是怎么抓手机软件的包。就是很少教你怎么来抓.net程序的包,特别是抓wcf的soap包、rest包。下面的资料其实是Fiddle的官方文档的翻译。https://docs.telerik.com/fiddler/configure-fiddler/tasks/configuredotnetapp 要允许 .NET Framework...
2024-06-30 16:25:49
1、服务“CJ.Demo.Conso.WcfService.EmployeeMngService”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。<service name="CJ.Demo.Conso.WcfService.EmployeeMngService">...
2024-06-29 22:44:15
勇哥注:这里比较一下几种宿主环境谁最常用。1. windows service [Windows服务] topself 可以方便做服务部署【生产环境第一选择】使用方式见下面博客:https://blog.csdn.net/qq_40229737/article/details/105201894 官网 http://topshelf-project.com 目前已经没有了,域名都已经注销了,连...
2024-06-29 20:06:42
(一)这一种是基地+address写两个<endpoint>第一个是业务用的,第二个就是元数据交换,地址是: net.pipe://localhost/Dmc3000IAxisAPI/mex,如果你用浏览器可以访问到,地址就是对的。当然也可以不要基地址,直接写元数据的地址。<service name="SMotionHardwareLayer.MotionCardRes...
2024-06-27 14:01:18
勇哥注:wcf服务配置器中,有许多少见的概念。在此贴缕一下。(一)基本操作(1.1)服务用以配置<services>标签下的<service>每个<service>都会配置<endpoint>(1.2) 主机第个<service>下都可以设置<host>,可以配置<timeouts>(1.3) 终结点<ser...
2024-06-26 21:42:02
一、为什么要使用MSMQ在一个分布式的环境中,我们往往需要根据具体的情况采用不同的方式进行数据的传输。比如在一个Intranet内,我们一般通过TCP进行高效的数据通信;而在一个Internet的环境中,我们则通常使用Http进行跨平台的数据交换。而这些通信方式具有一个显著的特点,那就是他们是基于Connection的,也就是说,交互双方在进行通信的时候必须保证有一个可用的Connection存在...