黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

.NET Core中使用gRPC的方法

瀏覽:310日期:2022-06-08 10:55:41
目錄
  • 1.什么是gRPC
    • 1.基本介紹
    • 2.proto文件
    • 3.上手實踐
  • 2.gRPC流
    • 1.服務(wù)端流、客戶端流、雙向流
    • 2.NetCore Web項目作為客戶端
  • 3.gRPC AOP攔截

    1.什么是gRPC

    1.基本介紹

    gRPC 一開始由 google 開發(fā),是一款語言中立、平臺中立、開源的遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng),所以叫g(shù)(google)RPC。支持主流開發(fā)語言(C, C++, Python, PHP, Ruby, NodeJS, C#, Objective-C、Golang

    2.proto文件

    用于定義協(xié)議接口和數(shù)據(jù)格式,不同的語言,相同的文件,可以理解為一項約定,序列化支持 PB(Protocol buffer)和 JSON,PB 是一種語言無關(guān)的高性能序列化框架,基于 HTTP/2 + PB, 保障了 RPC 調(diào)用的高性能。

    說這么多感覺還是很模糊,上面只是介紹了gRPC是什么,在我看來其實它大致的作用跟WebServices、WCF差不多,在某個維度上可以說都是作為遠(yuǎn)程調(diào)用,只不過所處的時代和本身的特性,以及生態(tài)的發(fā)展下,導(dǎo)致它成為目前比較火熱的原因之一,具體的內(nèi)容后面再討論,先用起來,再深入了解,接下來我們使用.Net Core 先搭建一個簡單的Demo,來親自上手實踐一下。

    其實背景就是最近在做一個項目,需要做一個公司內(nèi)部的Nuget包,大概的業(yè)務(wù)就是Nuget包請求微服務(wù)數(shù)據(jù),開始想直接使用http的方式,基于整體項目結(jié)構(gòu)后面定了使用gRPC,既學(xué)即用,剛好也可以在實際項目應(yīng)用中,查漏補缺。

    3.上手實踐

    1.使用vs首先創(chuàng)建一個NetCore gRPC項目,得到一個項目結(jié)構(gòu)如下,框架默認(rèn)包含一個已經(jīng)預(yù)先定義協(xié)議文件服務(wù)接口,如果使用其他的方式也很簡單直接引用相關(guān)的包,然后添加以下服務(wù)就可以了

    2.我們自己創(chuàng)建一個自己的接口,定義一個協(xié)議文件mytestdemo.proto,然后定義一些方法,主要包含如下幾類,其他的一些用法可以在網(wǎng)上搜到,或者去看文檔,只是簡單列一下

    1.有參數(shù)有返回值

    2.無參數(shù)有返回值 ,無參使用google.protobuf.Empty

    3.集合作為返回值,必須使用repeated 標(biāo)記

    如果你真的不熟悉protobuf的定義方式和寫法,這個無傷大雅,可以使用工具生成

    syntax = "proto3";//引入集合包import "google/protobuf/empty.proto";//命名空間option csharp_namespace = "GrpcDemo";//包名package MyTest;//接口定義service MyTestDemo {  rpc MultipleParam(MultipleRequestPara) returns (MultipleRespone);  rpc NoParam(google.protobuf.Empty) returns (SingeRespone);  rpc CollectionParam(google.protobuf.Empty) returns (CollectionResponePara);}//多參數(shù)請求參數(shù)message MultipleRequestPara {  int32 Id = 1;  string Name = 2;//參數(shù)個數(shù)  bool IsExists =3;}message SingeRespone {  bool Success =1;  TestEntity a1 = 2;  message TestEntity{	int32 Id =1;  }}//多參數(shù)返回message MultipleRespone {	bool Success =1;}//返回集合參數(shù)message CollectionResponePara {	repeated CollectionChildrenRespone1 param1 =1;	repeated CollectionChildrenRespone2 param2 =2;	repeated int32 param3 =3;}//集合屬性1message CollectionChildrenRespone1 {	int32 Id =1;}//集合屬性2message CollectionChildrenRespone2 {	string Name =1;	}

    3.右鍵類,選擇添加,選擇連接的服務(wù),添加gRPC,或者直接修改項目文件,將新建的proto添加到類中

    3.1 重新生成,然后創(chuàng)建服務(wù)代碼MyTestService,如下代碼
    3.2 在啟動類中映射gRPC app.MapGrpcService<MyTestService>(); 否則會報service is unimplemented.

    /// <summary>/// 繼承自MyTestDemo.MyTestDemoBase/// </summary>public class MyTestService : MyTestDemo.MyTestDemoBase{    public override async Task<MultipleRespone> MultipleParam(MultipleRequestPara request, ServerCallContext context)    {return await Task.FromResult(new MultipleRespone{    Success = true,});    }    public override async Task<SingeRespone> NoParam(Empty request, ServerCallContext context)    {       TestEntity t = new TestEntity();       t.Id = 1;       return await Task.FromResult(new SingeRespone { Success = true, entity = t  }); ;    }    public override async Task<CollectionResponePara> CollectionParam(Empty request, ServerCallContext context)    {CollectionResponePara collectionResponePara = new CollectionResponePara();CollectionChildrenRespone1 a = new CollectionChildrenRespone1 { Id = 1 };CollectionChildrenRespone2 b = new CollectionChildrenRespone2 { Name = "jeck" };collectionResponePara.Param1.Add(a);collectionResponePara.Param2.Add(b);return  await  Task.FromResult(collectionResponePara);    }}

    4.創(chuàng)建客戶端,將proto文件拷貝過去調(diào)用,添加服務(wù)為客戶端模式,然后添加如下代碼

    using (var channel = GrpcChannel.ForAddress("https://localhost:7245")) {     var client =  new MyTestDemo.MyTestDemoClient(channel);     //多參數(shù)調(diào)用     var reply = client.MultipleParam(new MultipleRequestPara { Id = 123, Name = "sa", IsExists = true });       //無參調(diào)用     var singeRespone = client.NoParam(new Google.Protobuf.WellKnownTypes.Empty());     //調(diào)用集合     var collectionResponePara = client.CollectionParam(new Google.Protobuf.WellKnownTypes.Empty()); }

    2.gRPC流

    gRPC中支持4種流,分別是:

    1.簡單 RPC(Unary RPC)它的特點是傳入一個請求對象,返回一個請求對象

    2.服務(wù)端流式 RPC (Server streaming RPC)客戶端傳入一個請求對象,服務(wù)端可以返回多個結(jié)果對象,形象的表示就是客戶端傳入一個股票的id,服務(wù)端就將股票的信息遠(yuǎn)遠(yuǎn)不斷地返回

    3.客戶端流式 RPC (Client streaming RPC) 客戶端源源不斷的傳入多個請求對象,服務(wù)端返回一個結(jié)果對象,形象的表示例如上位機采集實時將采集數(shù)據(jù),源源不斷的傳入服務(wù)器

    4.雙向流式 RPC (Bi-directional streaming RPC) 結(jié)合服務(wù)端和客戶端流,傳入多請求,返回多個結(jié)果,相當(dāng)于建立長連接,可以進行相互的操作

    下面我們就主要介紹幾類主要的流的使用以及步驟

    1.服務(wù)端流、客戶端流、雙向流

    服務(wù)端流主要的特征就是服務(wù)端會源源不斷的響應(yīng)數(shù)據(jù)到客戶端

    1.首先還是創(chuàng)建protobuf文件,聲明一個服務(wù)端流的rpc接口ExcuteServerStream 和一個客戶端流接口ExcuteClientStream

    syntax = "proto3";option csharp_namespace = "GrpcDemo";package streamtest;service StreamTest {  //服務(wù)端流定義  rpc ExcuteServerStream(StreamForClientRequest) returns (stream StreamForClientRespones);  //客戶端流定義  rpc ExcuteServerStream(StreamForClientRequest) returns (stream StreamForClientRespones);  //雙向流  rpc ExcuteMutualStream(stream StreamForClientRequest) returns ( stream StreamForClientRespones);}//調(diào)用流的請求對象message StreamForClientRequest{    int32 Id=1;}//調(diào)用端流的返回對象message StreamForClientRespones{	repeated int32 Number=1;//集合}

    2.重新生成服務(wù)引用,然后創(chuàng)建對應(yīng)的實現(xiàn)接口StreamTestService并重寫生成的服務(wù),然后在啟動程序映射服務(wù)接口

    //服務(wù)端流接口public override async Task ExcuteServerStream(StreamForClientRequest req,IServerStreamWriter<StreamForClientRespones> resStream,ServerCallContext context){    //list集合作為模擬數(shù)據(jù)源    var list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };    foreach (var item in list)    {Console.WriteLine($"********{item}*******");var ele = new StreamForClientRespones();ele.Number.Add(item);//寫入流中await resStream.WriteAsync(ele);//模擬源源不斷的數(shù)據(jù)響應(yīng)await Task.Delay(1000);    }}//客戶端流接口public override async Task<StreamForClientRespones> ExcuteClientStream( IAsyncStreamReader<StreamForClientRequest> requestStream, ServerCallContext context){    StreamForClientRespones intArrayModel = new StreamForClientRespones();    //獲取請求流中的數(shù)據(jù)    while (await requestStream.MoveNext())    {intArrayModel.Number.Add(requestStream.Current.Id + 1);Console.WriteLine($"ExcuteClientStream Number {requestStream.Current.Id} 獲取到并處理.");Thread.Sleep(100);    }    return intArrayModel;}//雙向流public override async Task ExcuteMutualStream(IAsyncStreamReader<StreamForClientRequest> reqStream,IServerStreamWriter<StreamForClientRespones> resStream,ServerCallContext context){    int i = 0;    //從流中獲取請求    while (await reqStream.MoveNext())    {i++;var ele = new StreamForClientRespones();ele.Number.Add(i);//寫入響應(yīng)流await resStream.WriteAsync(ele);await Task.Delay(500);    }}

    3.創(chuàng)建客戶端調(diào)用,把服務(wù)端的protobuf文件拷貝到客戶端,然后生成,啟動調(diào)用

    //調(diào)用服務(wù)端流 using (var channel = GrpcChannel.ForAddress("https://localhost:7245")) {     var client = new StreamTest.StreamTestClient(channel);     //調(diào)用服務(wù)端流     var reply =  client.ExcuteServerStream(new StreamForClientRequest { Id =1});     //利用線程取消     //CancellationTokenSource cts = new CancellationTokenSource();     //指定在2s后進行取消操作     //cts.CancelAfter(TimeSpan.FromSeconds(2.5));      //var reply = client.ExcuteServerStream(new StreamForClientRequest { Id = 1 }, cancellationToken: cts.Token);     await foreach (var resp in reply.ResponseStream.ReadAllAsync())     { Console.WriteLine(resp.Number[0]);     } } //調(diào)用客戶端流 using (var channel = GrpcChannel.ForAddress("https://localhost:7245")) {     var client = new StreamTest.StreamTestClient(channel);     //調(diào)用客戶端流接口     var reply = client.ExcuteClientStream();     //模擬源源不斷的數(shù)據(jù)發(fā)送     for (int i = 0; i < 10; i++)     { await reply.RequestStream.WriteAsync(new StreamForClientRequest() { Id = new Random().Next(0, 20) }); await Task.Delay(100);     }     Console.WriteLine("*************發(fā)送完畢*******************");     await reply.RequestStream.CompleteAsync();     //接受結(jié)果     foreach (var item in reply.ResponseAsync.Result.Number)     { Console.WriteLine($"This is {item} Result");     } }//雙向流using (var channel = GrpcChannel.ForAddress("https://localhost:7245")){    var client = new StreamTest.StreamTestClient(channel);    //調(diào)用雙向流接口    var reply = client.ExcuteMutualStream();    //獲取流放入線程    var bathCatRespTask = Task.Run(async () =>    {await foreach (var resp in reply.ResponseStream.ReadAllAsync()){    Console.WriteLine(resp.Number[0]);}    });    //寫入流    for (int i = 0; i < 10; i++)    {await reply.RequestStream.WriteAsync(new StreamForClientRequest() { Id = new Random().Next(0, 20) });await Task.Delay(100);    }    //發(fā)送完畢    await reply.RequestStream.CompleteAsync();    //開始接收響應(yīng)    await bathCatRespTask;}

    2.NetCore Web項目作為客戶端

    1.首先還是先引入proto文件,然后生成客戶端

    2.在web項目中的控制器中,我們就不能直接簡陋的使用 using的方式來連接gRPC服務(wù)端了,可以利用內(nèi)置的依賴注入的模式來完成

    3.下載Grpc.Net.ClientFactory包,然后在`Program將客戶端添加到依賴注入容器

    builder.Services.AddGrpcClient<MyTestDemo.MyTestDemoClient>(option => {    option.Address = new Uri("https://localhost:7245");});

    4.然后在控制器中直接注入,就可以使用

     public class gRPCTestController : ControllerBase {     private readonly MyTestDemoClient _client;     public gRPCTestController(MyTestDemoClient client)     { _client = client;     }     [HttpGet(Name = "Excute")]     public async Task<string> Get()     { var a = await _client.NoParamAsync(new Google.Protobuf.WellKnownTypes.Empty()); var str = a.Success.ToString(); return str;     } }

    5.調(diào)用出現(xiàn)如下問題 ,使用dotnet dev-certs https --trust

    3.gRPC AOP攔截

    有時候我們想在gRPC服務(wù)執(zhí)行前后做一些操作,這時候可以使用其Aop攔截,如果你要問攔截器可以做什么,我不太想解釋,繼續(xù)往下看,攔截器方法定義在Interceptor類中,服務(wù)端和客戶端攔截是一樣的原理,下面列舉一些攔截器:

    名稱特點BlockingUnaryCall攔截阻塞調(diào)用AsyncUnaryCall攔截異步調(diào)用AsyncServerStreamingCall攔截異步服務(wù)端流調(diào)用AsyncClientStreamingCall攔截異步客戶端流調(diào)用AsyncDuplexStreamingCall攔截異步雙向流調(diào)用UnaryServerHandler用于攔截和傳入普通調(diào)用的服務(wù)器端處理程序ClientStreamingSerHandler用于攔截客戶端流調(diào)用的服務(wù)器端處理程序ServerStreamingSerHandler用于攔截服務(wù)端流調(diào)用的服務(wù)器端處理程序DuplexStreamingSerHandler用于攔截雙向流調(diào)用的服務(wù)器端處理程序

    1.聲明一個UnaryServerHandlerInterceptor類型的自定義攔截器,用于攔截和傳入普通調(diào)用的服務(wù)器端處理程序,然后繼承自Grpc.Core.Interceptors.Interceptor類, 重寫已經(jīng)定義的方法UnaryServerHandler

    public class UnaryServerHandlerInterceptor : Interceptor{    public override async Task<TResponse> UnaryServerHandler<TRequest, TResponse>(       TRequest request,       ServerCallContext context,       UnaryServerMethod<TRequest, TResponse> continuation)    {Console.WriteLine("執(zhí)行調(diào)用前");var result = await continuation(request, context);Console.WriteLine("執(zhí)行調(diào)用后");// 或向 客戶端附加 一些信息// 也可以 用try catch 做異常日志// 可以從 context中取出 調(diào)用方ip,做ip限制// 可以 監(jiān)控continuation 的 執(zhí)行時間return result;    } }

    2.然后在注入容器時加入選項

    builder.Services.AddGrpc(option => {     option.EnableDetailedErrors = true;    //加入服務(wù)端攔截器選項    option.Interceptors.Add<UnaryServerHandlerInterceptor>();});

    到此這篇關(guān)于.NET Core中使用gRPC的文章就介紹到這了,更多相關(guān).NET Core使用gRPC內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: ASP.NET
    主站蜘蛛池模板: 狠狠色综合色综合网站久久 | 成人天堂资源www在线 | 波多野结衣在线播放 | 亚洲国产成人av在线观看 | 男女性色大片免费网站 | 日韩欧美在线观看一区二区 | 亚洲乱码中文字幕在线 | 巨胸美女狂喷奶水www网站 | 亚洲精品福利视频 | 日韩一级在线观看视频 | 欧美三根一起进三p | 午夜尤物丰满大乳美女 | 天天操操夜夜操操 | 国产高清区 | h肉动漫无码无修6080动漫网 | 中文字幕在线观看免费 | 久久精品中文字幕第一页 | 欧美人动与zoxxxx乱 | 超碰在线免费播放 | 香港三日本三级少妇少99 | 欧美精品二区三区四区免费看视频 | 全球色影院 | 清清草视频| 免费观看色 | 一本色综合亚洲精品蜜桃冫 | 在线a网站 | 国产免费不卡视频 | 97香蕉久久国产在线观看 | 不卡中文字幕在线 | 一个人看的www片免费高清视频 | 亚洲香蕉视频天天爽 | 中文字幕在线视频网站 | 五十路丰满中年熟女中出 | 黑人干亚洲女人 | 西西午夜视频 | 国产人妖乱国产精品人妖 | 国产成人亚洲精品自产在线 | 欧美亚洲国产成人 | xxxxxx国产| 精品成人免费一区二区在线播放 | 国产色播av在线 | 白嫩嫩翘臀美女在线视频 | 久久三级网站 | 成长快手短视频在线观看 | 一级片美女 | 日韩在线中文字幕视频 | 一区二区在线国产 | 五月天激情综合网 | 91免费视频观看 | 欧美绝顶高潮抽搐喷水合集 | 丰满岳乱妇在线观看视频国产 | 久久精品天天中文字幕人妻 | 成人午夜高潮a∨猛片 | 国产伦理无套进入 | 91深夜视频 | 欧美韩国一区二区 | 美女的隐私免费看 | 久久国产精品久久久久久 | 天堂av8| 波多野结衣精品一区二区三区 | 视频在线观看一区二区三区 | 男人午夜视频 | 亚洲 自拍 另类 欧美 丝袜 | 国产成人在线精品 | 亚洲欧美日韩国产成人精品 | 日韩毛片子 | 热久久美女精品天天吊色 | 成人午夜sm精品久久久久久久 | 超高清欧美videossex4 | 久久久久久久久91 | 亚洲精品国产av成拍色拍 | 久草毛片 | 特黄 做受又硬又粗又大视频 | 日韩三级网 | 波多野结衣中文一区 | 精品人伦一区二区三区蜜桃免费 | 亚洲欧美国产精品 | 狠狠操91| 偷窥少妇高潮呻吟av久久免费 | 999久久久免费看 | 日本欧美色十大禁片毛片 | 国产a18片免费观看 国产aⅴxxx片 | 亚洲风情av| xxx久久久| 三级全黄做爰龚玥菲在线 | 一级做受大片免费视频 | 亚洲成人免费影院 | 国精产品999国精产品蜜臀 | 精品国产免费看 | 婚后打屁股高h1v1调教 | 一道本在线伊人蕉无码 | 亚洲成人激情av | 99mav| 欧美久久久网站 | 国产女人18水真多18精品一级做 | 92看片淫黄大片看国产片 | 怡红院成永久免费人全部视频 | 中文字幕国产 | 少妇的性生话免费视频 | 99热99re6国产在线播放 | 伊人久久伊人 | 久久久精品久久久 | 欧美久久免费观看 | 国产乱码精品一区二区三区中文 | www国产亚洲精品久久网站 | 亚洲精品一区中文字幕乱码 | 视色av| 色在线影院 | 亚洲国产精品va在线看黑人 | 人人干av| 亚洲 成人 av | 91视频h| 欧美激情在线狂野欧美精品 | 女十八毛片 | 久久亚洲成人网 | 成人一级影片 | 欧美性淫爽www视频免费播放 | 中文字幕精品久久一二三区红杏 | 欧洲一区二区在线观看 | 啪啪tv网站免费入口 | 精品国产一二 | 国产精品第二页 | 久久艹国产 | 国产精品久久久久久久久久免费 | 成人短视频在线观看 | 国产极品美女高潮无套小趴菜 | 久久精品一区二区三区不卡牛牛 | 国产超碰人人做人人爽aⅴ 国产超碰人人做人人爽av牛牛 | 亚洲最大中文字幕 | 人妻教师痴汉电车波多野结衣 | 啦啦啦www在线观看免费视频 | 波多野结衣中文一区 | 欧美丝袜一区二区 | 97久久久久 | 国产日| 无码粉嫩虎白一线天在线观看 | 亚洲国产精品高潮呻吟久久 | 精品国产乱码久久久久久蜜臀 | 国产伦精品一区二区三区无广告 | 国产亚洲成av片在线观看 | 少妇伦子伦精品无吗 | 婷婷久久综合 | 国产色秀视频 | 欧美午夜三级 | 波多野吉衣av| 中文字幕综合在线分类 | 日韩成人福利视频 | 久久爱另类一区二区小说 | 国产精品久久久久久久久久久久久久 | 青娱乐久久 | 成人免费毛片东京热 | 337p西西人体大胆瓣开下部 | 久热国产vs视频在线观看 | av日韩精品| 性高湖久久久久久久久 | 国产精品国产三级国产传播 | 久久国产中文 | 免费国产一级 | 国产精华av午夜在线观看 | 亚洲国产精品综合久久网络 | 影音先锋国产资源 | 久久99影视 | 97超碰站 | 国产艳情片 | 51国偷自产一区二区三区的来源 | 欧美69视频| 中文字幕丝袜精品久久 | 毛片高清| 国产视频h| 中文字幕在线观看第一页 | 午夜精品久久久久久久久久久久久蜜桃 | 美女做爰久久久久久 | 免费国产91 | 久久中文字幕免费 | 国产三级精品一区二区三区视频 | 女神呻吟娇喘高潮毛片 | 亚洲香蕉在线视频 | 国产精品第1页 | 国产精品国产免费无码专区不卡 | 极品销魂美女少妇尤物优美 | 亚州视频一区二区三区 | 少妇精品一区 | 亚洲另类激情专区小说图片 | 中国黄色网页 | av三级在线观看 | 韩国三级在线视频 | 激情欧美一区二区免费视频 | 日本欧美国产一区二区三区 | 欧美体内she精高潮 欧美体内谢she精2性欧美 | 日韩精品一区二区三区视频 | 国模精品视频一区二区 | 狠狠色视频 | 免费观看午夜视频 | 女人与牲口性恔配视频免费 | 午夜久久久精品 | 少妇性l交大片久久免费 | chinese麻豆新拍video | 夜夜春夜夜爽 | 日韩高清在线中文字带字幕 | 午夜精品一区二区三区免费视频 | 麻豆国产露脸在线观看 | a资源在线 | 色播亚洲视频在线观看 | 日本一级大毛片a一 | 亚洲日韩视频免费观看 | 国产午夜精品一区二区 | 挺进邻居丰满少妇的身体 | 国产精品免费大片 | 国产欧美日韩精品丝袜高跟鞋 | 粉嫩av一区二区三区入口 | 91丨国产丨捆绑调教 | 男人的天堂日韩 | 国产又粗又硬又大爽黄老大爷视 | 女人久久久 | 老女人x88av导航 | 欧美日韩不卡合集视频 | 国产99久久九九精品的功能介绍 | 俺来俺也去www色在线观看 | 嘿咻视频在线观看 | 天天插天天色 | 中文字幕人成人乱码亚洲电影 | 日本japanese丰满少妇 | 成人国产精品入口 | 成人网ww555视频免费看 | 最新亚洲人成无码网www电影 | 亚洲综合视频一区 | 精品久久久久久久无码人妻热 | 国产精品成人一区二区网站软件 | 777奇米888色狠狠俺也去 | 国产精品一区二区在线免费观看 | 鸭子tv国产在线永久播放 | 韩日视频在线 | 欧美做爰全过程免费看 | 好吊色欧美一区二区三区视频 | 日韩一二三区视频 | 全村肉体暴力强伦轩np小说 | 成年入口无限观看免费完整大片 | 久久精品女人的天堂av | 久久精品成人一区二区三区蜜臀 | 欧美性猛烈| 用舌头去添高潮无码视频 | 男女裸体影院高潮 | 国语播放老妇呻吟对白 | 亚洲aav| 日本黄色免费视频 | 色视频www在线播放国产人成 | 免费在线黄色av | 男人天堂综合网 | 99久久国产精 | 久久久久久久久久网站 | 午夜三级做爰视频在线看 | 亚洲人成在线播放 | 久操视频免费看 | 老女人三级全黄 | 人人爱国产 | 国产无遮挡又黄又爽又色 | 欧美巨大另类极品videosbest | 在线观看一区二区三区四区 | 中文字幕人成乱码熟女 | 最近中文字幕在线观看 | 一本色道久久hezyo加勒比 | 喷水视频在线观看 | 国产精品无码无在线观看 | 国产精品剧情对白无套在线观看 | 欧美极品少妇性运交 | 国产日日日 | 国产精品亚洲自拍 | 亚洲精品tv久久久久久久久久 | 国产精品丝袜在线观看 | 天海翼精品久久中文字幕 | 91嫩草国产露脸精品国产 | 91视频在线 | 国产色视频在线 | 精品一区视频 | 欧美色图五月天 | 亚洲人成人 | 日韩黄站 | 国产第二页 | 99久久人妻无码精品系列 | 色视频一区二区三区 | 毛片一区二区 | 免费在线色| 国产性av在线| 少妇特殊按摩高潮惨叫无码 | 一边cao一边粗话打奶视频 | www91视频com| 久久精品伦理 | 四虎国产精品永久在线国在线 | 久久婷婷麻豆国产91天堂 | 国产麻豆精品传媒 | 少妇被黑人到高潮喷出白浆 | 欧美日本精品 | 99精品国产热久久91蜜凸 | 中文字幕一区二区av | 小蝌蚪av| 理论片午午伦夜理片影院 | 久久久久久久久一区 | 亚洲精品污一区二区三区 | 免费播放av | 成人免费毛片日本片视频 | 久久精品第一页 | 日本高清视频一区二区三区 | 国产原创一区二区 | 国产影视一区 | 久久精品99久久 | www国产精品内射老熟女 | 亚洲中文字幕久久精品无码喷水 | 精品国自产在线观看 | 亚洲国产成人一区 | 翔田千里高潮在线播放 | 日韩欧美视频免费在线观看 | 国产露脸对白刺激2022 | 亚洲日韩欧美一区二区在线 | 毛片tv网站无套内射tv网站 | 国产一级特黄aaa大片 | hd最新国产人妖ts视频 | 无码av岛国片在线播放 | 欧美性猛交性大交 | 国产精品三级在线观看无码 | 极品av在线 | 按摩师高h荡肉呻吟在线观看 | 啪啪网视频 | 国产精品奇米一区二区三区小说 | 久久精品黄aa片一区二区三区 | 日韩精品一区在线观看 | 黑人粗长大战亚洲女 | 欧美亚洲日本一区 | 祥仔视觉av | 少妇高潮久久久久久一代女皇 | www.色网站| 一级黄色毛片 | 91九色丨porny丨朋友 | 成人黄色av网站 | 寂寞少妇按摩spa高潮91 | 无码熟妇人妻av | 欧美亚洲国产精品久久高清浪潮 | 国产视频在线观看网站 | 亚洲欧美视频在线观看 | 欧美日韩综合在线 | 鸭子tv国产在线永久播放 | 日本美女日b视频 | 国内毛片毛片 | 高潮又爽又无遮挡又免费 | 欧美综合网站 | 免费国产一区二区 | 91亚洲精品久久久中文字幕 | 精品久久伊人 | 日韩精品久久中文字幕 | 国产一区在线免费观看 | 91精品视频在线免费观看 | 天躁夜夜躁狼狠躁 | 国产一区二区午夜 | 国产乱淫精品一区二区三区毛片 | 亚一区二区三区 | 午夜剧院免费观看 | 青娱乐伊人 | 欧美久久久网站 | 无码专区亚洲综合另类 | 亚洲乱码国产乱码精品精软件 | 免费精品视频一区二区三区 | 五月婷婷亚洲综合 | 波多野成人无码精品电影 | 99精品视频网站 | 一区二区视频免费 | 欧美最猛性xxxxx免费 | 欧美国产精品 | 欧美性一级| 国产情侣呻吟对白高潮 | 乱码一区二区三区四区 | 大肉大捧一进一出视频 | 正在播放国产一区 | 国偷自产av一区二区三区麻豆 | 大j8福利视频导航 | 人妻熟女一区 | 极品无码av国模在线观看 | 亚洲 自拍 另类小说综合图区 | 欧美成人一二三区 | 红杏aⅴ成人免费视频 | 亚洲精品国产精品乱码不99 | 日韩视频中文字幕在线观看 | 91在线观看免费视频 | 亚洲国产成人丁香五月激情 | 欧美精品动漫 | 日韩中文字幕在线观看 | 91麻豆蜜桃一区二区三区 | 中文在线а√在线 | 国产热の有码热の无码视频 | 欧美在线视频你懂的 | 粗大黑人巨精大战欧美成人 | av网站在线观看不卡 | 日本亚洲一区二区 | 91精品国产92久久久久 | 久久小草成人av免费观看 | 99久久久99久久国产片鸭王 | 色噜噜狠狠一区二区三区狼国成人 | 亚洲色图com | 国产黄色大片网站 | 一本色综合久久 | 激情文学av | 国产精品夜色一区二区三区 | 亚洲成av人影院 | 动漫美女爆羞羞动漫在线蜜桃 | 四虎永久在线精品免费网站 | 亚洲国产精品日韩av不卡在线 | 久久手机免费视频 | 久久久人成影片一区二区三区 | 我我色综合 | 久久天天躁狠狠躁亚洲综合公司 | 日本特级a一片免费观看 | 91a视频| 国产真实夫妇视频 | 国产性―交―乱―色―情人 | 九九九热精品免费视频观看网站 | 精品一区二区三区在线播放 | 奇米影视第4色 | 日本嫩草影院 | 国产一区在线观看视频 | 国产卡一卡二 | 日本黄色免费看 | 总裁各种姿势顶弄呻吟h1v1 | 国产天码青椒老色批青椒影视 | 日本大奶视频 | 亚洲三级在线看 | 国产精品久久久久久无毒偷食禁果 | 27美女少妇洗澡偷拍 | 黑人jizz60性黑人 | 91影院在线播放 | 一本久道综合色婷婷五月 | 99色在线观看 | 国产爆乳无码一区二区麻豆 | 91干干干| 久操资源网 | 中文字幕成人在线观看 | 狠狠色噜噜狠狠狠狠色综合网 | 国产精品女人精品久久久天天 | 国产精品av久久久久久久久久 | 亚洲天堂导航 | 亚洲一区二区三区黄色 | 色之综合天天综合色天天棕色 | 国产真人无遮挡作爱免费视频 | 一本色道久久综合亚洲精品 | www.色就是色 | 成人性免费视频 | 成人网站www污污污网站 | av久久天堂三区 | 亚洲高潮呻吟xoxo | 国产在线导航 | 国产同性女女互磨在线播放 | 日本网站在线看 | 国产粉嫩高中无套进入 | 免费一级淫片a人观看69 | 亚洲视频免费在线观看 | 国产欧美日韩a片免费软件 九九久久精品无码专区 | 色播亚洲 | 17c在线视频| 偷拍亚洲综合20p | 国产在线青青草 | 国产精品久久久爽爽爽麻豆色哟哟 | 久久久久97国产 | 性生交大片免费看女人按摩 | 91视频成人 | 久久免费福利视频 | 在线观看毛片av | 谁有免费的黄色网址 | 91丨porny丨尤物 | 8mav精品成人 | 双腿张开被9个男人调教 | 日韩欧美视频一区 | 亚洲五月婷| 91视频青青草 | 99国产精品99久久久久久娜娜 | 欧美国产三级 | 超碰在线一区 | 久久人人爽人人爽人人片av不 | 亚洲高清视频一区二区 | 日韩一卡2卡3卡4卡2021免费观看国色天香 | 国内国内在线自偷第68页 | 成人午夜视频在线观看 | 日本视频又叫又爽 | 春草| 呦呦在线视频 | 国产精品theporn | 午夜成人1000部免费视频 | 欧美在线三区 | а√天堂8资源中文在线 | 免费观看成人摸66m66 | 中文字幕第一页在线播放 | 日女人网站 | 天海翼一区二区三区四区演员表 | 正在播放亚洲 | 伊人成年网站综合网 | 色阁av| 99久久亚洲精品视香蕉蕉v | 久久久精品久久日韩一区 | 欧美另类xxxxx | 成人拍拍 | 亚洲国产精品一区二区尤物区 | 丁香五月亚洲综合在线 | 国产99久久久久久免费看农村 | 国产成人无码a在线观看不卡 | yy6080午夜| 国产aaa大片| 狠狠亚洲超碰狼人久久 | 伊人久久精品无码二区麻豆 | 亚洲性无码av中文字幕 | 91成人海角社区 | 久草网在线视频 | 精品在线免费视频 | 色婷婷综合久久久中文字幕 | 国产成人精品2021 | 国产91精品久久久 | 亚洲第一二三四区 | 日韩色综合网 | 亚洲欧洲日韩在线 | 亚洲天堂毛片 | 果冻传媒18禁免费视频 | 国产在线麻豆 | 国产妞干网 | 午夜精品久久久久久久99 | 九九热视频在线观看 | 国产乱子伦精品无码码专区 | 91精品国产一区二区三区蜜臀 | 欧美日韩综合视频 | 亚洲人成人毛片无遮挡 | 性一爱一性一乱 | 亚洲卡一 | 日韩精品无码免费一区二区三区 | 尤物国产 | 日本激情视频一区二区三区 | 欧美在线另类 | 一区二区在线观看免费视频 | 色综合网站 | 色琪琪久久草在线视频 | 女人洗澡一级特黄毛片 | 污视频免费在线观看 | 国产淫语对白粗口video | 国产馆av | 在线vr极品专区 | 亚洲毛片一区 | 国产一区二区三区在线观看 | 久久亚洲少妇 | 亚洲国产图片 | 精品国产a∨无码一区二区三区 | 亚洲乱码一区二区三区在线观看 | 天天干天天操天天干 | 超碰97久久国产精品牛牛 | 激情开心成人网 | 亚洲国产精品久久精品怡红院 | 成人在线激情视频 | 国内自产少妇自拍区免费 | 日韩欧美国产精品 | 正在播放adn156松下纱荣子 | 国产老妇伦国产熟女老妇高清 | 综合色亚洲 | 夜夜夜夜猛噜噜噜噜噜婷婷 | 国产又色又爽又黄刺激视频免费 | 天天爽天天爽夜夜爽毛片 | 欧美大胸大乳人奶波霸 | 色小姐综合网 | 麻豆www.| 国产二区三区在线 | 三级a做爰一女二男 | 久久久久麻豆v国产精华液好用吗 | 91中文字幕在线播放 | 精品无码成人久久久久久 | 午夜在线视频观看 | 淫片aaa| 麻豆国产av超爽剧情系列 | 亚洲国产综合无码一区 | 男人的天堂avav | 9色视频在线 | 国产 麻豆 日韩 欧美 久久 | 亚洲日产精品一二三区 | 日本特黄特色aaa大片免费 | 99精品视频在线 | 国产夫妻性爱视频 | 国产好爽…又高潮了毛片 | 天天色综合色 | av激情久久| 久久久久久久久久久久久大色天下 | 99久久精品无免国产免费 | 农村黄毛aaaaa免费毛片 | 一女被多男玩喷潮视频 | 一级全黄色片 | 中文字幕av第一页 | 狠狠干综合网 | 免费看av在线 | 精品国产一区二区三区av性色 | 色一情一乱一伦 | 亚洲精品无码永久中文字幕 | 国产偷窥熟女精品视频 | 成人一区二区三区久久精品嫩草 | 亚洲 欧美 日韩 综合 国产aⅴ | 两性囗交做爰视频 | 在线观看免费视频一区 | 麻豆tv入口在线看 | 久久www免费人成人片 | 亚洲精品久久久久中文字幕欢迎你 | 国产精品涩涩屋www在线观看 | 又粗又爽又猛高潮的在线视频 | 你懂的网址在线播放 | 国产午夜影院 | 草草浮力地址线路①屁屁影院 | 亚洲精品国产剧情久久9191 | 国产成人精品日本亚洲999 | 开心色站| 午夜一二三| 99re6在线视频精品免费 | 色版视频 | 国产做爰视频免费播放 | 中文字幕一区二区三区手机版 | 一色道久久88加勒比一 | 中文字幕av无码人妻 | 亚洲一区二区影视 | 久草福利在线 |