.NET Core 1.0.1

Module Component .NET Core
MongoDB MongoDB.Driver There has a nuget package available v2.3.0.
Json Newtonsoft.Json

If you are working with Mvc, Newtonsoft.Json has been included by default.

Logging Logging
public class HomeController : Controller
{
private readonly ILogger _logger; public HomeController(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HomeController>();
} public IActionResult Index()
{
_logger.LogInformation("Index has been called");
return View();
}
}
Logging NLog.RabbitMQ There are no nuget packages available, and in the library [MethodImpl(MethodImplOptions.Synchronized)] and Delegate.CreateDelegate are not supported by .NET Core also.
Logging NLog.Targets.ElasticSearch There are no nuget packages available, but I created one myself.
Mailing Mandrill There are no nuget packages availabe, but you can use SMTP or a small webjob without .NET Core.
Azure Storage WindowsAzure.Storage

There has a nuget package available v7.2.1.

BUT...

https://github.com/Azure/azure-storage-net/blob/master/README.md#odata

This version depends on three libraries (collectively referred to as ODataLib), which are resolved through the ODataLib (version 5.6.4) packages available through NuGet and not the WCF Data Services installer which currently contains 5.0.0 versions.

The ODataLib libraries can be downloaded directly or referenced by your code project through NuGet.

The specific ODataLib packages are:

Note: The ODataLib packages currently do not support "netstandard1.6" or "netcoreapp1.0" frameworks in projects depending on the current relase of Dotnet CoreCLR. Thus, you may encounter failures while trying to restore the ODataLib dependencies for one of the targeted frameworks mentioned above. Until the support is added, if you run into this, you can use the imports statement within the framework node of your project.json file to specify to NuGet that it can restore the packages targeting the framework within the "imports" statement as shown below:

  "imports": [
"dnxcore50",
"portable-net451+win8"
]
Azure ServiceBus WindowsAzure.ServiceBus There are no nuget packages availabe.
Identity Microsoft.AspNet.Identity.Core There has a nuget package available.
Identity Microsoft.AspNet.Identity.Owin There has a nuget package available.
Configuration (It's a big improvement for unit testing.) Configuration

appsettings.json

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

C#

public class LoggingConfig
{
public bool IncludeScopes { get; set; } public LogLevelConfig LogLevel { get; set; }
} public LogLevelConfig
{
public string Default { get; set; } public string System { get; set; } public string Microsoft { get; set; }
} public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
} public IConfigurationRoot Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.Configure<LoggingConfig>(Configuration.GetSection("Logging"));
services.AddMvc();
}
} public class HomeController : Controller
{
public HomeController(IOptions<LoggingConfig> loggingConfig)
{
}
}

Configuration (Switch build configuration was a hell but not an

ymore.)

Configuration per environment

You can copy appsettings.json per environment, e.g. appsettings.development.json, appsettings.staging.json, appsettings.production.json

The default code template already support this see the below code:

.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)

Based on IHostingEnvironment you can do all the magic

public class HomeController : Controller
{
public HomeController(IHostingEnvironment env)
{
var environmentName = env.EnvironmentName;
var isDevelopment = env.IsDevelopment();
var isStaging = env.IsStaging();
var isProduction = env.IsProduction();
}
}

How to switch the environment?

In the end the environment variables will be saved into launchSettings.json

Based on the below command you can switch the environment easily

dotnet run --environment "Staging"

How are we going to do with the automatically deployment?

  • Azure web apps
    In the project.json please include (appsettings.development.json, appsettings.staging.json, appsettings.production.json)

    {
    "publishOptions": {
    "include": [
    "wwwroot",
    "**/*.cshtml",
    "appsettings.json",
    "appsettings.Development.json",
    "appsettings.Staging.json",
    "appsettings.Production.json",
    "web.config"
    ]
    }

    You can add a slot setting via Azure portal see the below screenshot

    

  • Azure cloud services
    One possible way would be to run prepublish or postpublic scripts/commands
IoC Dependency injection
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<ITransientService, TransientService>();
services.AddScoped<IScopedService, ScopedService>();
services.AddSingleton<ISingletonService, SingletonService>();

services.AddMvc();
}
}

TransientTransient lifetime services are created each time they are requested. This lifetime works best for lightweight, stateless services.

ScopedScoped lifetime services are created once per request.

SingletonSingleton lifetime services are created the first time they are requested (or whenConfigureServices is run if you specify an instance there) and then every subsequent request will use the same instance. If your application requires singleton behavior, allowing the services container to manage the service’s lifetime is recommended instead of implementing the singleton design pattern and managing your object’s lifetime in the class yourself.

How to replace the default services container?

public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddMvc(); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterType<TransientService>().As<ITransientService>().InstancePerDependency();
containerBuilder.RegisterType<ScopedService>().As<IScopedService>().InstancePerRequest();
containerBuilder.RegisterType<SingletonService>().As<ISingletonService>().SingleInstance(); containerBuilder.Populate(services); var container = containerBuilder.Build();
return new AutofacServiceProvider(container);
}
}
Unit Tests  MSTest

"MSTest.TestFramework": "1.0.5-preview"
"dotnet-test-mstest": "1.1.1-preview" does not support .NET Core 1.0.1 yet
Unit Tests  xUnit

project.json

{
"version": "1.0.0-*", "testRunner": "xunit", "dependencies": {
"xunit": "2.2.0-beta3-build3402",
"dotnet-test-xunit": "2.2.0-preview2-build1029"
}, "frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
}
}
}
}
}
Integration tests Microsoft.AspNetCore.TestHost

There has a nuget package available v1.0.0.

Integration tests Microsoft.AspNet.WebApi.Client

There has a nuget package available v5.2.3.

Globalization and localization  

https://docs.asp.net/en/latest/fundamentals/localization.html

http://andrewlock.net/adding-localisation-to-an-asp-net-core-application (Very interesting even with a localized view)

.NET Core Analysis的更多相关文章

  1. 【python】使用flask制作小型页面的关键点总结

    目录结构 app.py web代码 store.db 存储信息的轻量数据库,用的sqlite3 schema.sql 数据库的初始化建表语句 settings.cfg 配置信息 static/styl ...

  2. jacoco统计server端功能测试覆盖率

    jacoco可以统计,功能测试时,server代码调用的覆盖情况.这里对服务器端的java代码进行统计.   操作步骤如下:   第一步:更改server的启动脚本,使用jacocoagent.jar ...

  3. ChIP-seq 核心分析 下游分析

    http://icb.med.cornell.edu/wiki/index.php/Elementolab/ChIPseeqer_Tutorial [怪毛匠子 整理] ChIP-seq[核心分析 下游 ...

  4. Importing/Indexing database (MySQL or SQL Server) in Solr using Data Import Handler--转载

    原文地址:https://gist.github.com/maxivak/3e3ee1fca32f3949f052 Install Solr download and install Solr fro ...

  5. 按需要对Androguard进行定制增强

    按需对Androguard进行增强和定制修改 Androguard是一个对android应用程序进行分析的基于python的平台,功能强大.但是在使用的过程中,提供的功能不一定如我们所需,所以需要进行 ...

  6. Solr 6.7学习笔记(03)-- 样例配置文件 solrconfig.xml

    位于:${solr.home}\example\techproducts\solr\techproducts\conf\solrconfig.xml <?xml version="1. ...

  7. HubbleDotNet 使用类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Hubble.S ...

  8. lucene-5.3.1配置(win7x64)

    lucene下载地址:http://www.us.apache.org/dist/lucene/java/5.3.1/lucene-5.3.1.zip 下载之后解压 控制台应用程序下配置: 找到luc ...

  9. Solr基础知识二(导入数据)

    上一篇讲述了solr的安装启动过程,这一篇讲述如何导入数据到solr里. 一.准备数据 1.1 学生相关表 创建学生表.学生专业关联表.专业表.学生行业关联表.行业表.基础信息表,并创建一条小白的信息 ...

随机推荐

  1. 第二十八篇:SOUI中自定义控件开发过程

    在SOUI中已经提供了大部分常用的控件,但是内置控件不可能满足用户的所有要求,因此一个真实的应用少不得还要做一些自定义控件. 学习一个新东西,最简单的办法就是依葫芦画瓢.事实上在SOUI系统中内置控件 ...

  2. 三言两语之简单上手sass

    背景:   初次接手公司的项目,虽然之前草草的看过一些sass的基础知识,但是因为久未征战,知识也早已随风飘散,现在小复习一下记下一些常识中的重点..sass是使用ruby写的,所以使用前请先确保自己 ...

  3. freemarker内置函数和用法

    原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...

  4. ref的用法

    ref可以修改变量作为参数调用的值,但必须要初始化,不能在调用的函数中初始化 static void Main(string[] args) { ; Console.WriteLine("m ...

  5. Python lambda函数

    python允许定义单行的小函数,定义lambda函数的形式如下: lambda 参数:表达式lambda函数默认返回表达式的值,可接收任意个参数,包括可选参数,但是表达式只有一个.

  6. HDU5730 Shell Necklace(DP + CDQ分治 + FFT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5730 Description Perhaps the sea‘s definition of ...

  7. Qt quick 编程

    greaterThan(QT_MAJOR_VERSION,4):QT += widgets.在Qt 5之前,没有独立的QtWidgets模块,Qt Widgets包含在QtGui模块中. TARGET ...

  8. XIV Open Cup named after E.V. Pankratiev. GP of SPb

    A. Bracket Expression 直接按题意模拟即可. 时间复杂度$O(n)$. #include<stdio.h> #include<algorithm> #inc ...

  9. 聊下并发和Tomcat线程数(错误更正)

    本文前半部分结论存在严重错误,请看最后2015-1-20更新部分. 最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池 ...

  10. osg矩阵变换节点-----平移旋转缩放

    osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见 ...