随笔分类 - ASP.NET
大型网站架构系列
摘要:这个系统总结了在搭建大型网站的过程中,对于架构的搭建,以及选择支撑架构实现的中间件的相关经验。 大型网站架构演进(1)单机网站 大型网站架构演进(2)数据库与应用服务器分离 大型网站架构演进(3)使用缓存改善网站性能 大型网站架构演进(4)使用应用服务器集群 大型网站架构演进(5)数据库读写分离 大
阅读全文
大型网站架构演进(2)数据库与应用服务器分离
摘要:随着用户量和并发数的增加,单台服务器出现了性能问题,此时必须要将应用程序和数据库分离,分离后整个网站变成三台服务器了:应用服务器(或称web服务器),数据库服务器和文件服务器。这三台服务器对服务器的配置要求是不一样的,应用服务器需要处理大量的业务逻辑,所以需要更快更强大的CPU,数据库服务器需要快速
阅读全文
大型网站架构演进(1)单机网站
摘要:初始阶段的网站一般访问量都很小(QPS<500),此时只需要一台服务器就足够,应用程序,数据库和文件都放在这一台服务器上。如果是.net的话,通常操作系统使用windows server,应用程序开发使用asp.net,然后应用程序部署在IIS上,数据库使用sql server。 单机网站 单体单库
阅读全文
IIS与asp.net管道
摘要:我们在基于asp.net开发web程序,基本上都是发布部署到安装了IIS的windows服务器上,然后只要用户能够访问就算任务完成了,但是很少静下心来想想这背后到底发生了什么,那么这个系列就来总结下asp.net的基础原理。 asp.net是什么 我们做web开发的可以说时时刻刻都在跟asp.net
阅读全文
问题汇总
摘要:1,StackExchange.Redis客戶端不支持連接Sentinel請指定Master和Slave的服務器IP和端口,IConnectionMultiplexer會管理和監聽Failover的行為? 解决方法:Redis.config,去掉节点HostGroup中的isSentinel="true" ,因为这个是for ServiceStack.redis的,现在是StackExchang...
阅读全文
C#驱动及应用
摘要:一,使用开源客户端:StackExchange.Redis 二,使用方法: 1,获取访问redis数据库连接,代码如下。 /// /// 获取访问redis数据库连接 /// public ConnectionMultiplexer Connection { get ...
阅读全文
发布和订阅
摘要:发布/订阅,故名思义,就是一个发布消息,多个订阅的客户端都收到这个消息。 举两个实际的例子,第一个想到的是电台,电台在专属的调频上播出节目,多个收音机只要在这个调频上,就可以收听到这个电台节目。 另一个例子是博客的RSS,只要博言主发表了博客,只要订阅了该博客的人都会收到通知邮件。 下面就结合redis的相关命令来看一下。 publish channel message,将信息messag...
阅读全文
事务
摘要:redis只实现了简单版的事务机制,毕竟它追求的是简单,快速和高效。 下面一起来看下几种情形。 正常流程的事务 使用命令multi和exec就可以实现。multi生成一个事务,exec来执行接受到的命令。如下图所示。 异常流程的事务 上面我们一次执行了三条命令,那假如其中一条命令执行时报错会怎么样,redis会rollback吗?我们来看一下。 所以,redis并没有实现rol...
阅读全文
Hash哈希类型
摘要:hash类型是使用得非常非常多的一种redis数据类型,相当于C#中的Dictionary和Hashtable。 hset命令(语法:hset key field value)将哈希表key中的field的值设为value。 hget命令(语法:hget key field)返回哈希表key中给定字段field的值。 hgettall(语法:hgetall key)返回哈希表key中,所有字...
阅读全文
SortedSet有序集合类型
摘要:SortedSet相当于C#中的SortDictionary类型,表示一个有序集合。 常用操作有,zadd命令将一个或多个元素及其score值加入到有序集key中。 zrange命令返回有序集key中,指定区间内的成员,其中成员的位置是按score的值递增来排序的。 zrangebyscore返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 m...
阅读全文
list列表类型
摘要:list类型最典型的应用场景是做队列,相当于C#中的Queue(一般用ConcurrentQueue)队列。 我们可以使用lpush,lpop,rpush,rpop这四个命令来实现,如下图。
阅读全文
string字符串类型
摘要:一次设置一个key-value 使用set命令可以一次设置一个key-value,使用get命令可以查询key所关联的字符串值。如下图所示。 一次设置多个key-value 使用mset命令可以设置多个key-value对,然后使用mget命令可以返回多个key的值,如下图所示。 append 如果key不存在则直接赋值,如果key存在则append到原来值的末尾,如下图。 ...
阅读全文
Redis的简单介绍及在Windows下环境搭建
摘要:简单介绍 1,Redis是什么 最直接的还是看官方的定义吧。 Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashe...
阅读全文
项目中Enum枚举的使用
摘要:在.NET中,枚举一般有两种常见用法,一是表示唯一的元素序列,比如表示订单状态(未提交,待处理,处理中...)。另外一种是表示多种组合的状态,比如表示权限,因为可同时有多个不同权限。 基本用法 这里拿项止中订单的订单状态来举例。 1,使用枚举表示订单的订单状态,并保存到数据库 public void SaveOrder() { using (v...
阅读全文
.NET开发知识体系
摘要:记得几年前写过一篇关于.NET开发方面的知识总结,但是随着技术的发展以及自己技术理解的提升,觉得有必要对那篇文章加以更新和完善。 最近在园子里也看到有人写关于.NET知识体系的文章,特别是灵感之源写的两篇文章,一篇是关于web前端的Web前端开发大系概览 (前端开发技术栈),和一篇关于.NET服务端的.NET技术大系概览 (迄今为止最全的.NET技术栈),都总结得非常好。现在我将前端和...
阅读全文
重点关注之OData with List
摘要:OData是什么 官方解释:The Open Data Protocol (OData) is a data access protocol for the web. OData provides a uniform way to query and manipulate data sets through CRUD operations (create, read, update, and d...
阅读全文
重点关注之Filter的使用(性能计数和错误处理)
摘要:Web API中的filter与MVC中的filter非常类似,最主要的不同是,MVC中的filter放在命名空间System.Web.Mvc下,而Web API中的filter则放在命名空间System.Web.Http.Filters下,如果你仍使用MVC下的filter,则程序不会工作。由于在PackageFH项目中,性能计数和错误处理的filter使用得非常好,下面我就以它们为例来演示如何...
阅读全文
重点关注之客户端调用
摘要:包括xml,json,protobuf.net,msgpack四种序列化器的调用。如下代码。 XML JSON protobuf.net msgpack
阅读全文
重点关注之自定义序列化方式(Protobuf和Msgpack)
摘要:除了默认的JSON和XML序列化器外,如果想使用其它格式的(比如二进制)序列化器,也是可以的。比如著名的Protobuf和Msgpack,它们都是二进制的序列化器,特点是速度快,体积小。使用方法如下。 1.定义MediaTypeFormatter,这里以定义MsgPack的formatter为例,主要代码如下。 2.WebApiConfig中注册,代码如下。 3.客户端调用(请求头中...
阅读全文