因为ORM的原因,对Attribute编程有一种情节..所以这节的出现,完全是因为在WCF对自定义Attribute的一种应用. WCF 项目应用连载[7] - 绑定.服务.行为 大数据传输与限流 - 上 前面一节已经讲得差不多够了. 对WCF的限流,这节,提供一个类.ServiceThrottlingAttribute 让你以硬编码方式使用WCF服务限流 [ServiceThrottling(50,200,100)] [ServiceContract(CallbackContract = ty…
WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 第二节我们已经创建了Lig项目,并且能稳定工作了.现在我们来改进ILigAgent接口,实现WCF的双向通信. 3.1 双向通信 _________________________________________________________________________________ ILigAgent 增加订阅-发布 接口 3.1.1 关于订阅 – 发布 1) 发布-订阅设计模式又称观察者模式…
WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 现在我们创建一个Lig工程 - Litelog 2.1 创建Lig服务 _________________________________________________________________________________ 不好意思.我尽最大的程度说明清楚问题. Lig这些内容是写 How to use the WCF rather than to explain what the WCF…
背景 伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端的API,其内部的RPC调用层层嵌套,调用链条可能会非常长.这会造成以下几个问题: API接口可用性降低 引用Hystrix官方的一个例子,假设tomcat对外提供的一个application,其内部依赖了30个服务,每个服务的可用性都很高,为99.99%.那整个applicatiion的可用性就是:99.99%的30次方 = 99.7%,即0.3%的失败率. 这也就意味着,每1亿个请求,有30万个失败:按时间来算,就是每个月的故障时间…
hystrix 简介 Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过隔离服务之间的访问点.停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性. Hystrix为了什么 Hystrix被设计的目标是: 对通过第三方客户端库访问的依赖项(通常是通过网络)的延迟和故障进行保护和控制. 在复杂的分布式系统中阻止级联故障. 快速失败,快速恢复. 回退,尽…
无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值. 在web.config中添加 aspNetCompatibilityEnabled="true"属性即可,如下: <servi…
一.性能概述 WCF服务的性能取决于很多因素.出了CPU.RAM和网络性能等常见的因素外,实例上下文模式.并发模式.数据契约的设计或使用的绑定等与WCF有关的因素都起着重要的作用. 实例上下文模式用来控制服务对象的实例化行为有PerCall.PerSession和Singleton三种模式可供选择. 绑定决定了传输协议和编码格式.此外,通过绑定可以使用很多的WS*协议. 并发模式决定了是否允许多个线程同时访问同一个对象.并发模式是有[ServiceBehavior]特性来控制的,它的默认值为Co…
目录 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 1. 熔断降级 1.1 降级策略 2. 热点参数限流 2.1 项目依赖 2.2 热点参数规则 3. 系统自适应限流 3.1 背景 3.2 系统规则 3.3 原理 3.4 示例 4. 黑白名单控制 4.1 规则配置 4.2 示例 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR…
1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追踪.Cron 调度.限流.事件总线.CQRS .DDD.类似MVC的开发体验,插件化开发 一个不可监控的微服务平台是可怕的,出了问题 难以准确定位问题的根源, Anno则提供了一套完整的监控体系,包括链路追踪.服务占用的系统资源.系统自身 CPU.内存.硬盘使用率实时可监控等等. 今天要说的是.ne…
在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实项目实践过程,这中间被不少网络Demo示例级别水文误导过,为了以正视听特将实践过程加以总结,希望能够帮到有类似需要的朋友!(PS:此文有点长,看下概念部分后可以点击关注+收藏,以备需要) 一.Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变…
Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的"雪崩效应". 而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行"流量…
一.前言 学习了前面的活动与服务后,你会发现服务对于活动而言似乎就是透明的,相反活动对于服务也是透明的,所以我们还需要一中机制能够将服务和活动之间架起一座桥梁,通过本节的学习,你将会学到广播与绑定服务,这两种方式恰恰是解决上面问题的关键. 二.简单的广播接收器 实现一个最简单的广播接收器需要继承BroadcastReceiver类,并且还要实现OnReceive方法,我们可以在项目中新建一个MainReceiver类,然后写入如下代码: public class MainReceiver : B…
一.什么是REST 表述性状态转移(Representational State Transfer,REST),不是一种标准,而是一种软件架构风格. 基于REST的服务与基于SOAP的服务相比,性能.效率和易用性上都更高,而SOAP协议非常的复杂和不透明.REST受到越来越多的Web服务供应商欢迎.目前大部分供应商,如淘宝.腾讯.google.Amazon等都提供REST风格的服务. REST的主要原则是: 1.网络上的所有事物都可被抽象为资源: 2.每个资源都有一个唯一的资源标识符URI: 3…
在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而由于WCF服务的特殊性,调试起来也不是那么方便,因此往往会花费不少时间来进行跟踪处理.本文介绍我在我在我的框架里面使用WCF服务的时候,出现的一个常见错误的处理方法,它的提示信息是:基础连接已经关闭: 连接被意外关闭.这种情况我碰到的有两种,一种是返回DataTable的时候出现的,一种是返回实体类类中带有枚举类型的情况,下面分别对它们的处理进行介绍. 1.DataTable…
WCF学习心得----(四)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承载是没有例子的.仍在努力解决所在的问题,后续会把例子给补上的.好了,进入正题. 要变为活动状态,服务必须承载于创建它并控制它的上下文和生存周期的运行环境中.WCF有以下三种承载方式:在IIS中承载.在Windows进程激活(WAS)中承载.在托管应用程序中承载(自承载).下面就分别对这三种承载方式,…
原文:WCF技术剖析之九:服务代理不能得到及时关闭会有什么后果? 我们想对WCF具有一定了解的人都会知道:在客户端通过服务调用进行服务调用过程中,服务代理应该及时关闭.但是如果服务的代理不等得到及时的关闭,到底具有怎样的后果?什么要关闭服务代理?在任何时候都需要关闭服务代理吗?是否有一些例外呢?本篇文章将会围绕着这些问题展开. 一.会话信道(Sessionful Channel) V.S. 数据报信道(Datagram Channel) WCF通过信道栈实现了消息的编码.传输及基于某些特殊功能对…
这是这个系列的第二篇,其他的文章请点击下列目录 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(二)实现IRequestChannel WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(三)实现ReplyChannel 从今天开始,一步步介绍我是如何实现自定义的ZeroMQ绑定和protocolBuffer消息编码的. 本系列的想法主要来源于蒋金楠Artech的系列…
这是这个系列的第三篇,其他的文章请点击下列目录 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(一)概要设计 WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(二)实现IRequestChannel WCF扩展之实现ZeroMQ绑定和protocolBuffer消息编码(三)实现ReplyChannel 相对于RequestChannel,ReplyChannel比较复杂一些. 1 启动zmq的rep结点 首先需要重载OnOpen方法,启动zmq的r…
WCF学习心得----(三)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承载是没有例子的.仍在努力解决所在的问题,后续会把例子给补上的.好了,进入正题. 要变为活动状态,服务必须承载于创建它并控制它的上下文和生存周期的运行环境中.WCF有以下三种承载方式:在IIS中承载.在Windows进程激活(WAS)中承载.在托管应用程序中承载(自承载).下面就分别对这三种承载方式,…
在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能够让部署更加简单,当然WCF的寄宿方式一般分为以下四种方式,针对每一种方式我来简单介绍以下: 具体的寄宿方式详细信息请参考MSDN:https://msdn.microsoft.com/zh-cn/library/ms733109(v=vs.100).aspx 一.WCF服务寄宿方式: 1):寄宿在…
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. WCF的所有服务都会公开契约.契约包含以下四种类型 1.服务契约 2.数据契约 3.错误契约 4.消息契约 今天主要介绍服务契约实现WCF项目,服务契约描述了客户端能够执行的服务操作. 项目结构截图: 1.定义和实现服务契约 通过将ServiceContractAttribute属性标记到接口或者类型上.遵循了面向服务的原则,所有的契…
Serivce中onRebind被调用的时机非常特别,想知道什么时候onRebind被调用,能够接以下的次序来学习.最后自然就明确了! 1. 首先要知道.同一个服务既可能被启动也能够被绑定; 2. Service中onRebind方法被调用.仅仅要符合两个必要条件即可 (1)服务中onUnBind方法返回值为true (2)服务对象被解绑后没有被销毁.之后再次被绑定 .以下举例说明: 例1:同一个Activity对象 先自启动服务(onCreate, onStartCommand):再绑定服务(…
WCF之Windows宿主(可安装成服务自动并启动) 创建解决方案WCFServiceDemo 创建WCF服务库(类库或WCF服务库)WCFService  ,添加引用System.ServiceModel.System.Runtime.Serialization 图1:图2:  创建实体模型Book using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serializat…
一个月前,公司的运行WCF的windows服务器down掉了,由于 AWS 没有通知,没有能第一时间发现问题. 所以,客户提出将WCF服务由C#改为JAVA,在Linux上面运行:一方面,AWS对Linux有较多的监控措施,另一方面,假如出现问题,可以设置自动重启等服务. 老旧的WCF服务 目前WCF服务,主要提供windows桌面软件的数据接口,应该有五六年的历史了.我进入公司后,WCF服务的代码,一直由我一个人来维护.存在很多历史遗留问题,也有不同版本的共存. 如果java重写的话,其中的业…
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单. Taurus.MVC 微服务框架 入门开发教程:项目集成:1.服务端:注册中心.网关(提供可运行程序下载). Taurus.MVC 微服务框架 入门开发教程:项目集成:2.客户端:ASP.NET(C#)编程语言项目集成:应用中心. Taurus.MVC 微服务框架 入门开发教程:项目集成:3.客…
WCF的service端的webconfig如下: <?xml version="1.0"?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior"> <serviceMetadata httpGetEnabled="true&qu…
绑定服务的细节 1. 如果onbind方法返回值是null,onServiceConnect方法就不会被调用: 2. 绑定的服务,在系统设置界面,正在运行条目是看不到的: 3. 绑定的服务,不求同时生,但求同时死.如果调用者Activity退出了,服务就自动跟着退出: 4. 解除绑定服务后,服务就会停止: 5. 服务只可以被解除绑定一次,多次的解绑服务代码会抛出异常:(解除绑定服务之后,服务就会停止,接着销毁:服务都不存在了,再次解绑必然报错) 6. 用的是什么conn绑定,就必须使用哪个con…
1.接口 接口可以隐藏代码内部的细节,只暴露程序员想暴露的方法 2.利用上面的思想优化之前的案例:服务(service)之绑定服务调用服务里面的方法,如下: (1)这里MainActivity.java: package com.itheima.bind; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.…
1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 :                     bindService(intent, new MyConn(), BIND_AUTO_CREATE): 参数intent:意图对象,服务对应的意图对象  new  Intent(this,Service.class) 参数ServiceConnection (接口,自定义其接口实现内部类MyConn() ):通讯…
前言 开篇名义,这篇博客介绍一下Android下使用绑定服务进行时数据交互的几种方法.关于Android下Service的内容,前面两篇博客已经介绍了,不清楚的可以移步过去先看看:Android--Service之基础.Android--Service之提高. 在前面的博客中已经介绍到了,对于Service组件而言,它只有在绑定模式下才可以与客户端进行时交互,这里讲解几个方法进行绑定服务与客户端间的交互方法: 使用IBinder接口 使用Messenger类 使用AIDL 虽然根据官方文档给出了…