浅谈我在.net core一年里的收获
前言:以前一直在winserver的环境里从事web工作,安装一个sqlserver,iis,把项目部署上面就OK了,简单轻松
一.结缘nginx
以前一直听说nginx这个反向代理的web服务器,当玩nginx时才知道,iis为我们做了两件事
1.应用程序服务器(nfx),解析动态程序,例如aspx
2.反向代理,将解析后的资源或静态资源,代理出去
.net core使用iis做反向代理与用nginx有区别呢(只说手感,手感你懂的)
nginx 配置可简单,可灵活,可负载,可集群,可过滤,方便查阅日志.........更多牛逼的功能就没有用到了
简单配置(把本地7711端口代理到8852端口)
server {
listen ;
server_name localhost;
location / {
proxy_pass http://localhost:7711;
index /project1/toIndex;
}
}
简单命令
service nginx start
service nginx restart
service nginx stop
iis 没啥优点,工程使用iis跑出错后,我就统一改成控制台了,在linux上稳的一逼
二.supervisor
这是干嘛的呢,就是守护你的程序的
你可能在想,我程序好好的,要它守护个鸡毛
就你这臭脾气,也就只有winserve惯着你,当你服务器重启的时候,winserver的iis会自动启动站点,sqlserver的服务设置自动的,也会自动启动
linux可就不惯着你了,当服务器重启的时候,那你得手动一个个start你的服务
为了解决这个麻烦,supervisor闪亮登陆,只要在supervisor里配置你要守护的服务,服务器每次启动的时候,它都会去给你启动服务,并且记录了你服务控制台的日志,不光如此,它还提供了图形化管理界面,你可以手动启动关闭你的服务
每个服务新增一个配置文件
配置如下(看的懂配置,其它的服务都是照着copy,简单的很)
[program:Tibos.Api]
command=/bin/bash -c "dotnet Tibos.Api.dll"
directory=/home/wwwroot/NH.Core/Tibos.Api/PublishOutput/
autorestart=true
stderr_logfile=/var/log/Tibos.Api.err.log
stdout_logfile=/var/log/Tibos.Api.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
介绍了上面这对黄金搭档,接下来介绍另一对黄金搭档
三.Ocelot
这是.net core里常用的一个APIGateway,园子里资料已经非常多了,功能简单的来说就是代理下游的服务,并暴露给消费者,里面集成了负载均衡,统一授权验证(IdentityServer4)....
给我的感觉就是啥优秀的框架都可以往里面集成
四.Consul
这是一个玩服务注册与服务发现的玩意,啥子意思呢
这就要从Ocelot做负载均衡来说起,我们来讲一个小故事,老王管理着三个工人,地主从老王这里拉工人去工地里干活
那么就存在几个问题
1.新人来了怎么办?
2.工人生病了怎么办?
这里老王就是Consul,新人来了,首先要到老王这里申请成为工人(服务注册),这里是工人主动申请的,可不是老王强迫的哦
这里地主就是Ocelot,老王会定期给工人检查健康(心跳包),并给它们安排职务,地主去老王那里拉人(服务发现),然后干活
当然这里还有一个情况,就工人偶尔抽风,这里可以使用Polly去处理,因为我还没有用过Polly这里就不做介绍
Consul也提供图形化界面,我这里是注册了三个服务,可以体验一下:http://193.112.104.103:9000/api/values
它会负载输出三个服务的值,如果我使用supervisor停止了某个服务,也不会影响成像的正常运行,轻松实现热更新
五.Docker
Docker牛逼,不要问我为啥子牛逼,就是牛逼,谁用谁知道
1.第一难题,解决萌新接触Linux装软件问题
什么.net core runtim,nginx,mysql......这一堆东西总要装的吧,装到哪去了呢,玩坏了怎么办?
在win上就遇到个问题,一个朋友装sqlserver,然后卸载了,然后再装sqlserver就死活装不上去,清理注册表也不行,没办法重装系统了.......
毕竟第一次玩linux,装软件肯定要去改配置什么的,经常不知道装到哪去了(好在都是默认位置,百度比较好找),怎么卸载....
Docker就很好的解决了这个问题,基本上流行的东西docker hub上都有,拉个镜像,创建个容器,在容器里随便玩,玩坏了,再创建个容器就好了
2.制作Docker镜像
哇,这个可就真牛逼了,把自己的项目做成一个Docker镜像,然后丢到Dockerhub(免费的镜像仓库)里,这样所有人都可以拉你的这个镜像了
我把.net core runtime(200多m) 跟自己的程序一起打包成一个镜像,这样别的服务器就不用安装.net core runtime了,开箱即用
大家可以拉取我的镜像玩玩(一个示例的webapi) docker pull wmowm/tibos:v1.0
Dockerhub大家也可以去注册一个账户玩玩(镜像257M,在仓库压缩后106M)
这里我玩docker的一些常用命令
docker images
docker ps
docker ps -a
docker rm [id]
docker logs --since 30m [id]
docker start [id]
docker stop [id]
docker exec -it [id] /bin/bash
docker inspect [id] docker run --name mysq -p : -v /my/mysql/datadir:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD= -d mysql:5.7 --Dockerfile FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE
ENTRYPOINT ["dotnet", "Docker.Test.dll"] docker build -t testimage . docker run --name=test -p : -d testimage --打标签
docker tag [imageid] wmowm/tibos:v1. --推送
docker push wmowm/tibos:v1. --拉取
docker pull wmowm/tibos:v1.
六.Jenkins
java写的一款持续集成软件,功能强大,对于我们.net core来说,也很方便,建议参考晓晨MM的博客,直接用docker安装,就是做多节点坑比较多,多折腾一下也能实现
说说.net core过程
1.文件夹方式打包,上传到github
2.点击构建,拉取github上的文件
3.拉取完成后,执行shell
如果一台服务器用xftp手动传就可以了,如果是多台服务器,配置好多节点,就非常方便了
我写的shell比较简单,拉取到文件后,把文件copy到指定位置,然后重启supervisorctl
七..netcore里的一些优秀框架
1.杨总的CAP,满星推荐,既可以做EvenBus又是分布式最终一致性的解决方案
2.Autofac,非常优秀的IOC容器
3.AutoMapper
4.NHibernate5.1,好吧,是我强行打了一波广告,我个人觉得还是非常不错的,推荐混合Dapper用,这样CAP也可以用上,喜欢的可以去看看https://github.com/wmowm/nh.core
5.signalr nfx里就用过了,非常不错
6.QuartzNet 任务调度
还有好多,这里就不一一列举了.......
八.Linux,给我一种错觉,只要你程序部署在Linux上面,就可以利用到Linux上的一切资源,大家就是一家人,也许这就是开源的魅力吧
1.没有广告
2.稳
浅谈我在.net core一年里的收获的更多相关文章
- iOS 核心动画 Core Animation浅谈
代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- 浅谈.Net Core中使用Autofac替换自带的DI容器
为什么叫 浅谈 呢?就是字面上的意思,讲得比较浅,又不是不能用(这样是不对的)!!! Aufofac大家都不陌生了,说是.Net生态下最优秀的IOC框架那是一点都过分.用的人多了,使用教程也十分丰富, ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
- 浅谈对Spring Framework的认识
Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...
- 浅谈开源项目Android-Universal-Image-Loader(Part 3.1)
本文转载于:http://www.cnblogs.com/osmondy/p/3266023.html 浅谈开源项目Android-Universal-Image-Loader(Part 3.1) 最 ...
- 浅谈qmake之pro、pri、prf、prl文件
浅谈qmake之pro.pri.prf.prl文件 转载自:http://blog.csdn.net/dbzhang800/article/details/6348432 尽管每次和cmake对比起来 ...
- iOS应用架构浅谈
(整理至http://www.cocoachina.com/ios/20150414/11557.html) 缘由 从事iOS工作一年多了,主要从事QQ钱包SDK开发和财付通app维护,随着对业务的慢 ...
随机推荐
- Java SpringMVC实现国际化整合案例分析(i18n) 专题
所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...
- ListView 泛利
0ListView基本属性 1介绍 Listview节约内存的几种写法 2技巧一:解决ListView的ItemView中带有Button时,OnItemClick无效的问题 3技巧二Listvie ...
- Linux socket编程示例(最简单的TCP和UDP两个例子)
一.socket编程 网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路. 基于TCP的网络编程: 基于连接, 在交互过程中, 服务器和客户端要保持连接, 不 ...
- Java内部类——学习笔记
参考:http://blog.csdn.net/aaronsi/article/details/187322 和 http://openhome.cc/Gossip/JavaGossip-V1/Inn ...
- wpf中的倒影效果实现
原文:wpf中的倒影效果实现 <TextBox Name="txt" FontSize="30" ...
- c#开发移动APP-Xamarin入门剖析
原文:c#开发移动APP-Xamarin入门剖析 剖析应用程序 Phoneword这个项目是.net标准库项目,它包含所有的共享代码和共享UI. Phoneword.Android这个项目包含Andr ...
- Socket编程实践(6) --TCPNotes服务器
僵尸进程过程 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中加入 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法.解决僵尸进程 sign ...
- Windows,linux下编译qt源码(比较简单)
一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...
- ubuntu如何修改terminal终端的主机名(修改/etc/hostname文件)
有时候安装完Ubuntu系统后,打开命令终端,终端显示的主机名格式比较难看,例如 我最近买的国内某云的VPS. xxx@VM-1560-ubuntu$ xxx@VM-1560-ubuntu$ 对于有洁 ...
- [Android] 环境优化配置Android Studio发展NDK
======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 站点:www. ...