Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
.Net Core ·Ö²¼Ê½Î¢·þÎñ¿ò¼Ü- Jimu
 
×÷ÕߣºGrissom007
  2384  次浏览      28
 2020-9-17  
   
 
±à¼­ÍƼö:
ÎÄÕÂÖ÷Òª½éÉÜÁËJimu ¹¦Äܼ¼Êõ¡¢¿ò¼Ü¼òͼ¡¢ÈçºÎʹÓá¢Ê¹Ó÷½Ê½ ¼°Í¼½â¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

.Net Core ·Ö²¼Ê½Î¢·þÎñ¿ò¼Ü½éÉÜ - Jimu

Ò»¡¢Ç°ÑÔ

½üЩÄêÒ»Ö±½þÒùÔÚ .Net ƽ̨×öÆóÒµÓ¦Óÿª·¢£¬ÓùýµÄ .Net ¿ò¼Ü²»¶à£¨¾ßÌåÊýÁ¿²»Ç壬ӡÏóÉî¿ÌµÄÓÐ Asp.Net MVC£¬WPF£¬ÆäËûºÜ¶à¶¼ÊÇ»ùÓÚ΢Èí¿ª·¢µÄ¿ò¼Ü×öЩ·â×°¶øÐγÉеĿò¼Ü£¬´ó¶¼ÊÇ»¹Ã»ÆðºÃÃû¾ÍäÎÃðÔÚÀúÊ·³¤ºÓÖУ©£¬¶ø×Ô¼º¿ª·¢µÄ¿ò¼Üµ¹ÊDz»ÉÙ£¨5 - 8 Ì×°É£©£¬ »»¿ò¼ÜÓë»»¹«Ë¾³ÉÕý±È£¨Ã¿»»Ò»¼Ò¹«Ë¾£¬ÖÁÉÙ»»Ò»Ì׿ò¼Ü£©£¬ºÜ¶à¶¼¼û²»µÃÈË£¨µ±Ê±¾õµÃ¸ß´óÉÏ£¬ºóÀ´¾õµÃºÜlow£©¡£ Ëæ²¨ÖðÁ÷´Ó winform Äê´úµ½ÏÖÔÚÈÈ»ð³¯ÌìµÄ΢·þÎñ£¬ÍøÉÏÔĶÁ¸÷ʽ¸÷ÑùµÄ²©¿Í¡¢ÐÂÎÅ¡¢ÆÀÂÛ¡¢´úÂ룬¶®Á˵ã΢·þÎñµÄ¸ÅÄ½áºÏÍøÉÏ¿ªÔ´´úÂëºÍ˼Ï룬Ããǿƴ´Õ³öÒ»¸öÃ»Ê²Ã´ÌØÉ«µÄ΢·þÎñ¿ò¼Ü - Jimu (ÖÐÎÄÃû£º»ýľ)¡£

²»¹ý¿ò¼ÜµÄÌØÉ«¾ÍÏñÈé¹µ£¬¼·¼·»¹ÊÇÓеģºJimu ÊÇÒ»¸ö»ùÓÚ.Net Core 2.0 ¼òµ¥Ò×ÓõÄ΢·þÎñ¿ò¼Ü£¬Ê¹ÓÃÁË´óÁ¿µÄ¿ªÔ´¿â, Ö§³Ö·Ö²¼Ê½¡¢¸ß²¢·¢ºÍ¸ºÔؾùºâ£¬ ʵÏÖÁË·þÎñÖÎÀíºÍ RPC µ÷Óá£Jimu ÔÚ³ÖÐøµü´ú¿ª·¢ÖУ¬ºÜ¶à¹¦ÄÜ»¹ÔÚÅÅÆÚ£¨Èç¿ÉÊÓ»¯¼à¿ØºÍ¹ÜÀí¹¤¾ß£¬ÈȸüУ¬·þÎñÈÛ¶Ï¡¢ÏÞÁ÷ºÍ½µ¼¶ ...£©£¬Èç·Ç°®ÕÛÌڵĸßÊÖ£¬²»½¨ÒéÉÏÉú²ú»·¾³¡£ÕýÈçÆäÖÐÎÄÃû - »ýľ£¬Ï£ÍûÓÃËýÀ´¿ª·¢ÏîÄ¿Ïñ´î»ýľһÑù¼òµ¥¿ìËٿɿأ¬Ê¹ÏîÄ¿°²È«¿É¿¿Îȶ¨£¬ÕûÌå¼Ü¹¹¿ÉÍØÕ¹¡¢¸ß²¢·¢¡¢·Ö²¼Ê½¡£

¶þ¡¢¹¦Äܼ¼Êõ

·þÎñ×¢²á£ºÖ¸¶¨·þÎñÆ÷µØÖ·£¬»òͨ¹ýÀ©Õ¹Ö§³ÖÆäËûÓ¦Óã¨Èç consul - ÒÑÖ§³Ö£¬redis£¬ zookeeper£©

·þÎñ·¢ÏÖ£ºÖ¸¶¨·þÎñÆ÷µØÖ·£¬»òͨ¹ýÀ©Õ¹Ö§³ÖÆäËûÓ¦Óã¨Èç consul - ÒÑÖ§³Ö£¬redis £¬zookeeper£©

·þÎñµ÷ÓãºÊ¹Óà DotNetty »ò Flurl.Http ʵÏÖ RPC µ÷ÓÃ

·þÎñ´úÀí£ºMicrosoft.CodeAnalysis ½âÎö·þÎñ½Ó¿ÚÉú³É¶¯Ì¬´úÀí

½¡¿µ¼à²â£ºQuartz.Net ¶¨Ê±µ÷¶È Socket ÈÎÎñ¼ì²é·þÎñÆ÷ÐÄÌø

¸ºÔؾùºâ£ºÂÖѯËã·¨£¨Î´ÊµÏÖµÄÓУº ¼ÓȨÂÖѯ·¨£¬ ×îСÁ¬½ÓÊý·¨£¬Ëæ»ú·¨£¬¼ÓÈ¨Ëæ»ú·¨£¬Ô´µØÖ·¹þÏ£·¨£©

ÊÚȨÈÏÖ¤£ºjose-jwt ʵÏÖ JWT ÊÚȨ

Ðò ÁÐ »¯£ºJson.Net

ϵͳÈÕÖ¾£ºlog4net¡¢NLog

Èý¡¢¿ò¼Ü¼òͼ

ÈçͼËùʾ£¬ÕâÀïÓÐËÄÖÖ½ÇÉ«£º

Client£º¸÷ÖÖ¿Í»§¶Ë£¬ ÕâÊdzéÏóµÄ˵·¨£¬Ö»Òª·ÃÎÊÁË ApiGateway ¶¼ÊôÓÚ¿Í»§¶Ë£¨ÊÖ»ú¡¢µçÄÔ ...£¬ Èç¹û Service Server1 ºÍ Service Server2 ·ÃÎÊÁË ApiGateway Ò²ÊôÓÚ¿Í»§¶Ë£©

ApiGateway£º ·þÎñÍø¹Ø£¬ÍⲿҪ¾­¹ýËü²Å¿É·ÃÎÊÄÚ²¿µÄ·þÎñ¡£Íø¹ØÊǷdz£ÖØÒªµÄÒ»¸ö½ÇÉ«£¬ËûÏ൱ÓÚÍⲿºÍÄÚ²¿·þÎñÖ®¼äµÄÖн飬¸ºÔð½ÓÊܺÍÏìÓ¦ÍⲿÇëÇó£¬ÒÔ¼°µ÷ÓÃÄÚ²¿·þÎñ£¬»¹ÓзþÎñÖÎÀíµÈ¹¦ÄÜ

Service Discovery Server£º¸ºÔð±£´æÒÑ×¢²áµÄ·þÎñ£¬Ï൱ÓÚ·þÎñµÄ»¨Ãû²á£¬ Service Server ×¢²á·þÎñ¾ÍÊÇÏò»¨Ãû²á¼Ç¼×Ô¼ºµÄÃû³Æ£¬ ApiGateway ·¢ÏÖ·þÎñ¾ÍÊÇÈ¥»¨Ãû²áÕÒÓÐÄÄЩÒÑ×¢²áµÄ·þÎñ

Service Server£ºÕâ¾ÍÊÇ΢·þÎñ£¬ËùÓÐÒµÎñÐèÇó¶¼ÔÚÕâÀïʵÏÖ

ËÄ¡¢ÈçºÎʹÓÃ

·þÎñ×¢²áÓë·¢ÏÖ£¬ ÒѾ­ÊµÏÖÁËÁ½ÖÖ·½Ê½£º

²»ÒÀÀµµÚÈý·½Ó¦Óã¬Ö±½Ó×¢²áµ½±¾µØ·þÎñ£¬ ¿É²Î¿´ github É쵀 Quick Start

ÒÀÀµÓÚ consul, ÐèÒªÏÈÆô¶¯ consul£¬È»ºó·þÎñ×¢²á consul, ApiGateway ·ÃÎÊ consul ·¢ÏÖ·þÎñ

ÏÂÃæÓà consul ×÷Ϊ·þÎñÈÝÆ÷£¬ÑÝʾÔõôÓà Jimu ʵÏÖÒ»¸ö·Ö²¼Ê½µÄ΢·þÎñ

1. Æô¶¯ consul

ÏÂÔØ°²×° consul

Æô¶¯

consul agent -dev

2. ΢·þÎñÏîÄ¿

´´½¨Ò»¸ö»ùÓÚ .Net Core 2.0 µÄÀà¿âÏîÄ¿£¬²¢Ìí¼Ó jimu ÒÀÀµ

Install-Package Jimu

Ìí¼Ó·þÎñ£¬ÒýÓÿռ䣺 using Jimu;

[JimuServiceRoute("api/{Service}")] // RPC µ÷Ó÷¾¶
public class UserService : IJimuService
{
[JimuService (CreatedBy = "grissom")] // Ö¸¶¨·þÎñµÄÔªÊý¾Ý, ¸Ã·þÎñµ÷Ó÷¾¶Îª api/user/getname?id=
public string GetName(string id)
{
return $"user id {id}, name enjoy!";
}
}

3. ΢·þÎñ·þÎñ¶ËÏîÄ¿

´´½¨Ò»¸ö»ùÓÚ .Net Core 2.0 µÄ¿ØÖÆÌ¨ÏîÄ¿£¬ ²¢Ìí¼Ó Jimu.Server ºÍ Jimu.Common.Discovery.ConsulIntegration ÒÀÀµ

Install-Package Jimu.Server
Install-Package Jimu.Common.Discovery.ConsulIntegration

ÔÚ Main º¯ÊýÖÐÌí¼Ó·þÎñÆ÷Æô¶¯´úÂ룬ÒýÓÿռ䣺 using Jimu.Server;

static void Main(string[] args)
{
var hostBuilder = new ServiceHostServerBuilder(new Autofac.ContainerBuilder())
.UseLog4netLogger()
.LoadServices ("QuickStart.Services")
.UseDotNettyForTransfer ("127.0.0.1", 8001)
.UseConsulForDiscovery ("127.0.0.1", 8500, "JimuService")
;
using (var host = hostBuilder.Build())
{
host.Run();
Console.ReadLine();
}

}

4. ΢·þÎñ¿Í»§¶Ë£¨ApiGateway£©ÏîÄ¿

´´½¨Ò»¸ö»ùÓÚ .Net Core 2.0 µÄ Asp.Net Core Web Ó¦ÓóÌÐò£¨¿ÉÑ¡Ôñ API ÏîĿģ°æ£©£¬²¢Ìí¼Ó Jimu.Client ºÍJimu.Common.Discovery.ConsulIntegration ÒÀÀµ

Install-Package Jimu.Client
Install-Package Jimu.Common.Discovery.ConsulIntegration

ÐÞ¸Ä Startup.cs ÀàµÄ´úÂ룬 ÒÔ±ãÌí¼Ó¶Ô jimu µÄÖ§³Ö

using Jimu.Client;
using Jimu.Client.ApiGateway;

public class Startup
{
public Startup (IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices (IServiceCollection services)
{
//services.AddMvc();
services.UseJimu();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure (IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}

//app.UseMvc();
var host = new ServiceHostClientBuilder (new Autofac.ContainerBuilder())
.UseLog4netLogger()
.UsePollingAddressSelector()
.UseDotNettyForTransfer()
.UseServerHealthCheck(1)
.SetDiscoveryAutoUpdateJobInterval(1)
.UseConsulForDiscovery ("127.0.0.1", 8500, "JimuService")
.Build();
app.UseJimu(host);
host.Run();
}
}

5. ͬʱÆô¶¯ ·þÎñ¶Ë ºÍ ¿Í»§¶Ë

È»ºóÔÚä¯ÀÀÆ÷·ÃÎÊ£º http://localhost:58156/ api/user/getname?id=666

6. ¸ü¶à demo

¸ü¶àÇ¿º·µÄ¹¦ÄÜʹÓã¬Çë×Ô¼º¿´ demo ÁìÎò£¬ÓÉÓÚʱ¼äÓÐÏÞ£¬ÕâÀï¾Í²»Ò»Ò»Ïê½âÁË£¬Èç¹û´ó¼ÒÓÐÐËȤ£¬ÈÕºó»òÕß»áÓÐ¶àÆª·ùºÍÎĵµÀ´½éÉÜ¡£

ÇëÏÂÔØ Jimu Ô´Âë, »òÕßÏÂÔØÏîÄ¿ jimu.demo

.Net Core ·Ö²¼Ê½Î¢·þÎñ¿ò¼Ü - Jimu Ìí¼Ó Swagger Ö§³Ö

Ò»¡¢Ç°ÑÔ

×î½üÓпվÍÓÅ»¯ Jimu £¨Ò»¸ö»ùÓÚ.Net Core µÄ·Ö²¼Ê½Î¢·þÎñ¿ò¼Ü£©£¬¿¼Âǵ½ÏÖÔڵĿª·¢×éÖ¯¶¼Ïòǰºó¶Ë·ÖÀë·¢Õ¹£¬Ç°ºó¶Ë¸÷˾ÆäÖ°£¬ºÃµÄ api Îĵµ¿ÉÒÔ¼õÉÙ´ó¼Ò¹µÍ¨µÄʱ¼ä³É±¾£¬ËùÒÔÓÅÏȸø Jimu Ìí¼Ó¶Ô api ÎĵµÉú³ÉµÄÖ§³Ö¡£ÊÐÃæÉϷdz£ÖøÃûºÍÅ£±ÆµÄµÄ api ÎĵµÉú³É¿ò¼Ü·Ç swagger ĪÊô¡£ Ëü¿ÉÒÔÓÃÀ´Éú³É¡¢ÃèÊö¡¢µ÷ÓÿÉÊÓ»¯µÄ Web ·þÎñ¡£»¨ÁË ¶þÌì¶àµÄʱ¼ä°ÑËü¼¯³Éµ½ Jimu µÄ apigateway¡£

Èçͼ

api Áбí

api Ã÷ϸ

¶þ¡¢Ê¹Ó÷½Ê½

1. »·¾³

Net Core 2.0

»ùÓÚJimu ¿ò¼ÜµÄ ApiGateway

2. Ìí¼ÓÒýÓÃ

Install-Package Jimu.Client.ApiGateway .SwaggerIntegration

3. Æô¶¯´úÂë

ÔÚ Startup ÀïÌí¼Ó UseJimuSwagger()

public void ConfigureServices (IServiceCollection services)
{
services.UseJimuSwagger(); // Ìí¼Ó Swagger Ö§³Ö
}

public void Configure (IApplicationBuilder app, IHostingEnvironment env)
{
app.UseJimuSwagger(); // Ìí¼Ó Swagger Ö§³Ö

4. ¶¨Òå½Ó¿Ú£¨·þÎñ/·½·¨£©

½Ó¿Ú¶¨Òå¿ÉÒÔÌí¼ÓÈýÖÖ±ê×¢£¬ÕâЩ±ê×¢×îÖÕ»áÏÔʾÔÚ swagger Éú³ÉµÄÎĵµ¡£

a. JimuService ±ê×¢ÊǶԽӿÚÔªÊý¾ÝµÄ¶¨ÒåºÍÃèÊö£¬Èç´´½¨ÈË¡¢Ê±¼ä¡¢ÃèÊö¡¢·ÃÎʽÇÉ«ÏÞÖÆµÈ¡£

b. JimuFieldComment ±ê×¢ÊǶÔÐÎʽ²ÎÊýµÄ×¢ÊÍ¡£

c. JimuReturnComment ±ê×¢ÊǶԽӿڵķµ»ØÀàÐÍ×ö×¢ÊÍ¡£

[JimuService(EnableAuthorization = true, CreatedBy = "grissom", CreatedDate = "2018-07-17", Comment = "¸ù¾ÝÐÂÎÅ id »ñÈ¡ÐÂÎÅÄÚÈÝ")]
[JimuFieldComment("id", "ÐÂÎÅid")]
[JimuReturnComment("һƪÐÂÎÅÄÚÈÝ")]
News GetNews(string id);

5. ¶¨Òå¶ÔÏó (DTO)

Èç¹û½Ó¿Ú²ÎÊý»ò·µ»ØÀàÐÍÊÇÒ»¸öÓû§¶¨ÒåµÄÀ࣬¶ÔÓ¦µÄÊôÐÔÒ²¿ÉÒÔÌí¼Ó×¢Êͱê×¢ JimuFieldComment£¬ ÕâЩ±ê×¢×îÖÕ»áÏÔʾÔÚ swagger Éú³ÉµÄÎĵµ¡£

public class News
{
[JimuFieldComment("ÐÂÎÅid")]
public string Id { get; set; }
[JimuFieldComment("ÐÂÎűêÌâ")]
public string Title { get; set; }
[JimuFieldComment("×÷Õß")]
public string Director { get; set; }
[JimuFieldComment("·¢²¼Ê±¼ä")]
public string PostTime { get; set; }
[JimuFieldComment("ÐÂÎÅÄÚÈÝ")]
public string Content { get; set; }

}

Èý¡¢Í¼½â

ËÄ¡¢×ܽá

Ö§³Ö¿ªÔ´ÊǺÜÀۺͺܺÄʱ¼äµÄ»î£¬²»¹ý¿ªÔ´¹ý³ÌÖÐ×Ô¼ºÒ²Ñ§µ½ºÜ¶à֪ʶ£¬Ï£Íû¿ÉÒÔÒ»Ö±¼á³ÖÏÂÈ¥¡£

 
   
2384 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù