diff --git a/java.md b/java.md
index b5e38e8..db0ffb4 100644
--- a/java.md
+++ b/java.md
@@ -1,21 +1,126 @@
-// Refer to document: https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-cloud-example/nacos-spring-cloud-config-example
-package com.alibaba.nacos.example.spring.cloud.controller;
+/*
+Demo for Basic Nacos Opreation
+App.csproj
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+
+
+
+*/
-@RestController
-@RequestMapping("/config")
-@RefreshScope
-public class ConfigController {
+using Microsoft.Extensions.DependencyInjection;
+using Nacos.V2;
+using Nacos.V2.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
- @Value("${useLocalCache:false}")
- private boolean useLocalCache;
+class Program
+{
+ static async Task Main(string[] args)
+ {
+ string serverAddr = "http://localhost:8848";
+ string dataId = "application-prod.yml";
+ string group = "DEFAULT_GROUP";
- @RequestMapping("/get")
- public boolean get() {
- return useLocalCache;
+ IServiceCollection services = new ServiceCollection();
+
+ services.AddNacosV2Config(x =>
+ {
+ x.ServerAddresses = new List { serverAddr };
+ x.Namespace = "cs-test";
+
+ // swich to use http or rpc
+ x.ConfigUseRpc = true;
+ });
+
+ IServiceProvider serviceProvider = services.BuildServiceProvider();
+ var configSvc = serviceProvider.GetService();
+
+ var content = await configSvc.GetConfig(dataId, group, 3000);
+ Console.WriteLine(content);
+
+ var listener = new ConfigListener();
+
+ await configSvc.AddListener(dataId, group, listener);
+
+ var isPublishOk = await configSvc.PublishConfig(dataId, group, "content");
+ Console.WriteLine(isPublishOk);
+
+ await Task.Delay(3000);
+ content = await configSvc.GetConfig(dataId, group, 5000);
+ Console.WriteLine(content);
+
+ var isRemoveOk = await configSvc.RemoveConfig(dataId, group);
+ Console.WriteLine(isRemoveOk);
+ await Task.Delay(3000);
+
+ content = await configSvc.GetConfig(dataId, group, 5000);
+ Console.WriteLine(content);
+ await Task.Delay(300000);
}
+
+ internal class ConfigListener : IListener
+ {
+ public void ReceiveConfigInfo(string configInfo)
+ {
+ Console.WriteLine("receive:" + configInfo);
+ }
+ }
+}
+
+/*
+Refer to document: https://github.com/nacos-group/nacos-sdk-csharp/tree/dev/samples/MsConfigApp
+Demo for ASP.NET Core Integration
+MsConfigApp.csproj
+
+
+
+
+*/
+
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using Serilog;
+using Serilog.Events;
+
+public class Program
+{
+ public static void Main(string[] args)
+ {
+ Log.Logger = new LoggerConfiguration()
+ .Enrich.FromLogContext()
+ .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
+ .MinimumLevel.Override("System", LogEventLevel.Warning)
+ .MinimumLevel.Debug()
+ .WriteTo.Console()
+ .CreateLogger();
+
+ try
+ {
+ Log.ForContext().Information("Application starting...");
+ CreateHostBuilder(args, Log.Logger).Build().Run();
+ }
+ catch (System.Exception ex)
+ {
+ Log.ForContext().Fatal(ex, "Application start-up failed!!");
+ }
+ finally
+ {
+ Log.CloseAndFlush();
+ }
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args, Serilog.ILogger logger) =>
+ Host.CreateDefaultBuilder(args)
+ .ConfigureAppConfiguration((context, builder) =>
+ {
+ var c = builder.Build();
+ builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), logAction: x => x.AddSerilog(logger));
+ })
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup().UseUrls("http://*:8787");
+ })
+ .UseSerilog();
}
\ No newline at end of file