Browse Source

Update README.zh-cn.md

master
AlexLEWIS 7 years ago
committed by GitHub
parent
commit
cfc12aa99c
1 changed files with 26 additions and 22 deletions
  1. +26
    -22
      README.zh-cn.md

+ 26
- 22
README.zh-cn.md View File

@@ -1,44 +1,48 @@
# CAP                       [English](https://github.com/dotnetcore/CAP/blob/master/README.md)
<p align="right">
<a href="https://github.com/dotnetcore/CAP/blob/master/README.md">English</a>
</p>

# CAP 銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€銆€
[![Travis branch](https://img.shields.io/travis/dotnetcore/CAP/master.svg?label=travis-ci)](https://travis-ci.org/dotnetcore/CAP)
[![AppVeyor](https://ci.appveyor.com/api/projects/status/4mpe0tbu7n126vyw?svg=true)](https://ci.appveyor.com/project/yuleyule66/cap)
[![NuGet](https://img.shields.io/nuget/vpre/DotNetCore.CAP.svg)](https://www.nuget.org/packages/DotNetCore.CAP/)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/dotnetcore/CAP/master/LICENSE.txt)

CAP 是一个在分布式系统(SOA、MicroService)中实现最终一致性的库,它具有轻量级、易使用、高性能等特点。
CAP 鏄�竴涓�湪鍒嗗竷寮忕郴缁燂紙SOA銆丮icroService锛変腑瀹炵幇鏈€缁堜竴鑷存€х殑搴擄紝瀹冨叿鏈夎交閲忕骇銆佹槗浣跨敤銆侀珮鎬ц兘绛夌壒鐐广€�

## 预览(OverView)
## 棰勮�锛圤verView锛�

CAP 是在一个 ASP.NET Core 项目中使用的库,当然他可以用于 ASP.NET Core On .NET Framework 中。
CAP 鏄�湪涓€涓� ASP.NET Core 椤圭洰涓�娇鐢ㄧ殑搴擄紝褰撶劧浠栧彲浠ョ敤浜� ASP.NET Core On .NET Framework 涓�€�

你可以把 CAP 看成是一个 EventBus,因为它具有 EventBus 的所有功能,并且 CAP 提供了更加简化的方式来处理 EventBus 中的发布和订阅。
浣犲彲浠ユ妸 CAP 鐪嬫垚鏄�竴涓� EventBus锛屽洜涓哄畠鍏锋湁 EventBus 鐨勬墍鏈夊姛鑳斤紝骞朵笖 CAP 鎻愪緵浜嗘洿鍔犵畝鍖栫殑鏂瑰紡鏉ュ�鐞� EventBus 涓�殑鍙戝竷鍜岃�闃呫€�

CAP 具有消息持久化的功能,当你的服务进行重启或者宕机时它可以保证消息的可靠性。CAP提供了基于Microsoft DI 的 Publisher Service 服务,它可以和你的业务服务进行无缝结合,并且支持强一致性的事务。
CAP 鍏锋湁娑堟伅鎸佷箙鍖栫殑鍔熻兘锛屽綋浣犵殑鏈嶅姟杩涜�閲嶅惎鎴栬€呭畷鏈烘椂瀹冨彲浠ヤ繚璇佹秷鎭�殑鍙�潬鎬с€侰AP鎻愪緵浜嗗熀浜嶮icrosoft DI 鐨� Publisher Service 鏈嶅姟锛屽畠鍙�互鍜屼綘鐨勪笟鍔℃湇鍔¤繘琛屾棤缂濈粨鍚堬紝骞朵笖鏀�寔寮轰竴鑷存€х殑浜嬪姟銆�

这是CAP集在ASP.NET Core 微服务架构中的一个示意图:
杩欐槸CAP闆嗗湪ASP.NET Core 寰�湇鍔℃灦鏋勪腑鐨勪竴涓�ず鎰忓浘锛�

![](http://images2015.cnblogs.com/blog/250417/201707/250417-20170705175827128-1203291469.png)

> 图中实线部分代表用户代码,虚线部分代表CAP内部实现。
> 鍥句腑瀹炵嚎閮ㄥ垎浠h〃鐢ㄦ埛浠g爜锛岃櫄绾块儴鍒嗕唬琛–AP鍐呴儴瀹炵幇銆�

## Getting Started

### NuGet

你可以运行以下下命令在你的项目中安装 CAP。
浣犲彲浠ヨ繍琛屼互涓嬩笅鍛戒护鍦ㄤ綘鐨勯」鐩�腑瀹夎� CAP銆�

如果你的消息队列使用的是 Kafka 的话,你可以:
濡傛灉浣犵殑娑堟伅闃熷垪浣跨敤鐨勬槸 Kafka 鐨勮瘽锛屼綘鍙�互锛�

```
PM> Install-Package DotNetCore.CAP.Kafka -Pre
```

如果你的消息队列使用的是 RabbitMQ 的话,你可以:
濡傛灉浣犵殑娑堟伅闃熷垪浣跨敤鐨勬槸 RabbitMQ 鐨勮瘽锛屼綘鍙�互锛�

```
PM> Install-Package DotNetCore.CAP.RabbitMQ -Pre
```

CAP 默认提供了 Entity Framwork 作为数据库存储:
CAP 榛樿�鎻愪緵浜� Entity Framwork 浣滀负鏁版嵁搴撳瓨鍌�細

```
PM> Install-Package DotNetCore.CAP.EntityFrameworkCore -Pre
@@ -46,7 +50,7 @@ PM> Install-Package DotNetCore.CAP.EntityFrameworkCore -Pre

### Configuration

首先配置CAP到 Startup.cs 文件中,如下:
棣栧厛閰嶇疆CAP鍒� Startup.cs 鏂囦欢涓�紝濡備笅锛�

```cs
public void ConfigureServices(IServiceCollection services)
@@ -69,9 +73,9 @@ public void Configure(IApplicationBuilder app)

```

### 发布
### 鍙戝竷

在 Controller 中注入 `ICapPublisher` 然后使用 `ICapPublisher` 进行消息发送
鍦� Controller 涓�敞鍏� `ICapPublisher` 鐒跺悗浣跨敤 `ICapPublisher` 杩涜�娑堟伅鍙戦€�

```cs
public class PublishController : Controller
@@ -87,7 +91,7 @@ public class PublishController : Controller
[Route("~/checkAccount")]
public async Task<IActionResult> PublishMessage()
{
//指定发送的消息头和内容
//鎸囧畾鍙戦€佺殑娑堟伅澶村拰鍐呭�
await _publisher.PublishAsync("xxx.services.account.check", new Person { Name = "Foo", Age = 11 });

return Ok();
@@ -96,11 +100,11 @@ public class PublishController : Controller

```

### 订阅
### 璁㈤槄

**Action Method**

在 Action 上添加 CapSubscribeAttribute 来订阅相关消息。
鍦� Action 涓婃坊鍔� CapSubscribeAttribute 鏉ヨ�闃呯浉鍏虫秷鎭�€�

```cs
public class PublishController : Controller
@@ -127,7 +131,7 @@ public class PublishController : Controller

**Service Method**

如果你的订阅方法没有位于 Controller 中,则你订阅的类需要继承 `ICapSubscribe`:
濡傛灉浣犵殑璁㈤槄鏂规硶娌℃湁浣嶄簬 Controller 涓�紝鍒欎綘璁㈤槄鐨勭被闇€瑕佺户鎵� `ICapSubscribe`锛�

```cs

@@ -151,7 +155,7 @@ namespace xxx.Service

```

然后在 Startup.cs 中的 `ConfigureServices()` 中注入你的 `ISubscriberService` 类
鐒跺悗鍦� Startup.cs 涓�殑 `ConfigureServices()` 涓�敞鍏ヤ綘鐨� `ISubscriberService` 绫�

```cs
public void ConfigureServices(IServiceCollection services)
@@ -160,9 +164,9 @@ public void ConfigureServices(IServiceCollection services)
}
```

## 贡献
## 璐$尞

贡献的最简单的方法之一就是是参与讨论和讨论问题(issue)。你也可以通过提交的 Pull Request 代码变更作出贡献。
璐$尞鐨勬渶绠€鍗曠殑鏂规硶涔嬩竴灏辨槸鏄�弬涓庤�璁哄拰璁ㄨ�闂��锛坕ssue锛夈€備綘涔熷彲浠ラ€氳繃鎻愪氦鐨� Pull Request 浠g爜鍙樻洿浣滃嚭璐$尞銆�

### License



Loading…
Cancel
Save