IIS+Docker+CICD:C#企业系统现代化部署路径全解析,告别手动发布

Docker部署IIS+asp.net网站操作步骤说明 Docker部署IIS+asp.net网站操作步骤说明 (以下操作在windows10下完成) 制作Dockerfile文件 这个可以借助visual studio来生成。生成后修改其内容为如下: FROM microsoft/aspnet:4.7.2-windowsservercore-1803 SHELL ["powershell", "-command"] #引入IIS配置模块 RUN Import-Module IISAdministration; \ Import-Modu 阅读详情

第一章:C#企业系统部署的演进与挑战

随着企业级应用复杂度的不断提升,C#系统的部署方式经历了从传统单体架构到现代化云原生体系的深刻变革。早期的C#应用多依赖于Windows Server环境,通过IIS托管Web服务,并使用MSBuild进行手动或批处理构建部署。这种方式虽然稳定,但存在部署周期长、环境一致性差、扩展性弱等问题。

传统部署模式的局限性

  • 依赖特定操作系统,难以跨平台运行
  • 版本更新需停机维护,影响业务连续性
  • 配置管理分散,易引发“配置漂移”问题

向现代化部署转型的关键路径

现代C#系统逐步采用.NET Core及以上版本,支持跨平台运行与容器化部署。结合CI/CD流水线工具(如Azure DevOps、GitHub Actions),可实现自动化构建、测试与发布。 例如,一个典型的Docker部署脚本如下:
# 使用官方SDK镜像作为构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app --no-restore

# 运行阶段
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyEnterpriseApp.dll"]
该Dockerfile将C#项目编译并打包为轻量级容器镜像,确保在任意环境中具有一致行为。

当前面临的核心挑战

挑战类型具体表现应对策略
环境差异开发、测试、生产环境不一致基础设施即代码(IaC)统一配置
部署频率高频发布带来的风险上升灰度发布与健康检查机制
监控与追踪分布式调用链路难追踪集成OpenTelemetry实现全链路监控
graph LR A[代码提交] --> B(CI触发构建) B --> C[单元测试] C --> D[镜像打包] D --> E[推送到Registry] E --> F[CD部署到K8s] F --> G[自动健康检查]

第二章:IIS时代的传统部署模式解析

2.1 IIS架构下C#应用的部署原理

在IIS(Internet Information Services)架构中,C#应用通过ASP.NET运行时承载于工作进程w3wp.exe中。IIS接收HTTP请求后,将其转发至对应的应用程序池,再由CLR(Common Language Runtime)加载并执行托管代码。
请求处理流程
  • 客户端发起HTTP请求,IIS的HTTP.sys驱动接收请求
  • 根据站点绑定和虚拟路径匹配到对应的应用程序池
  • 请求交由w3wp.exe进程处理,进入ASP.NET管线
  • CLR初始化域,加载程序集并执行Global.asax中的事件
配置示例
<system.web>
  <compilation targetFramework="4.8" />
  <httpRuntime maxRequestLength="10240" />
</system.web>
该配置指定目标框架为.NET Framework 4.8,并限制请求体最大为10MB,确保资源合理使用。
应用程序池与隔离机制
应用程序池通过独立的工作进程实现应用隔离,避免不同站点间相互影响。每个池可单独配置回收策略、身份验证权限和CPU限制,提升稳定性和安全性。

2.2 应用池与站点配置的最佳实践

在IIS环境中,合理配置应用池与站点是保障服务稳定性和性能的关键。应为不同业务类型的应用分配独立的应用池,以实现故障隔离和资源独立回收。
应用池配置建议
  • 启用“自动回收”功能,避免内存泄漏长期累积
  • 设置合理的空闲超时时间(如20分钟)
  • 使用专用账户运行应用池,提升安全性
站点绑定与代码示例
<binding protocol="http" bindingInformation=":80:example.com" />
上述配置将站点绑定到特定域名与端口,支持多站点共存。bindingInformation 中的三部分分别为:端口、IP地址、主机名,精确控制请求路由。
性能与安全平衡
配置项推荐值说明
回收时间02:00低峰期执行,减少影响
最大工作进程数1除非需要负载均衡

2.3 手动发布痛点分析与典型问题

效率瓶颈与人为失误
手动发布依赖运维人员逐台操作服务器,极易因命令输入错误或环境遗漏引发故障。常见的如配置文件未同步、服务启动顺序错误等问题频发。
  • 重复性高:每次发布需重复执行相同脚本和检查流程
  • 响应延迟:紧急修复需等待人工介入,平均恢复时间(MTTR)显著增加
  • 权限滥用风险:多人员参与导致操作边界模糊,审计困难
典型问题代码示例

# 手动部署脚本片段
scp app.jar user@server:/opt/app/
ssh user@server "systemctl stop myapp"
ssh user@server "java -jar /opt/app/app.jar &"
上述脚本缺乏错误处理机制,scp 失败后仍继续执行 stop 命令,可能导致服务中断。且未验证 JAR 文件完整性,存在部署污染风险。

2.4 配置文件管理与环境差异化处理

在现代应用开发中,配置文件管理是保障系统可维护性与部署灵活性的关键环节。通过分离配置与代码,能够实现不同环境(如开发、测试、生产)间的无缝切换。
配置文件结构设计
推荐采用分层结构管理配置,例如按环境拆分文件:

# config/production.yaml
database:
  host: "prod-db.example.com"
  port: 5432
  timeout: 30
该配置定义了生产环境的数据库连接参数,host 指定数据库地址,timeout 控制连接超时时间,便于集中管理与审计。
环境差异化策略
  • 使用环境变量覆盖默认配置值
  • 通过构建脚本自动注入环境特定参数
  • 结合 CI/CD 流程实现配置版本化
图表:配置加载优先级流程图 —— 环境变量 > 本地配置 > 默认内置配置

2.5 基于MSBuild的自动化打包初步尝试

理解MSBuild的核心作用
MSBuild(Microsoft Build Engine)是.NET平台的构建系统,能够读取项目文件(如.csproj)并执行编译、资源嵌入、打包等操作。通过编写自定义的`.targets`或直接在项目中配置,可实现高度可控的自动化流程。
基础打包脚本示例
<Project>
  <Target Name="Package" Outputs="dist\MyApp.zip">
    <ZipDirectory SourceDirectory="bin\Release" 
                  DestinationFile="dist\MyApp.zip" />
  </Target>
</Project>
该MSBuild脚本定义了一个名为“Package”的目标,使用内置的ZipDirectory任务将发布输出压缩为ZIP包。参数说明: - SourceDirectory:指定需打包的编译输出目录; - DestinationFile:定义压缩包生成路径。
常用构建参数对照表
参数作用
/p:Configuration=Release指定发布模式
/t:Package调用自定义打包目标
/v:quiet降低日志冗余度

第三章:向容器化迈进——Docker核心技术应用

3.1 Docker镜像构建与C#应用容器化实践

Dockerfile基础结构

在C#项目根目录下创建Dockerfile,定义镜像构建流程。采用多阶段构建以减小最终镜像体积。

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY *.sln .
COPY MyCSharpApp/MyCsharpApp.csproj ./MyCSharpApp/
RUN dotnet restore
COPY MyCSharpApp/. ./MyCSharpApp/
WORKDIR /src/MyCSharpApp
RUN dotnet publish -c release -o /app/publish

FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyCSharpApp.dll"]

第一阶段使用SDK镜像编译并发布应用,第二阶段基于轻量ASP.NET运行时镜像部署,有效降低生产环境镜像大小。

构建与运行流程
  • 执行docker build -t my-csharp-app .构建镜像
  • 通过docker run -d -p 8080:80 my-csharp-app启动容器
  • 结合CI/CD流水线可实现自动化构建与部署

3.2 多阶段构建优化镜像体积与安全

在容器化应用部署中,镜像体积与安全性是关键考量。多阶段构建(Multi-stage Build)通过在单个 Dockerfile 中定义多个构建阶段,仅将必要产物复制到最终镜像,显著减小体积并降低攻击面。
构建阶段分离
开发阶段依赖的编译器、调试工具等无需进入生产环境。利用多阶段构建,可先在一个阶段完成编译,再将输出复制至轻量运行环境。
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
上述代码第一阶段使用 `golang:1.21` 镜像编译二进制文件,第二阶段基于极小的 `alpine:latest` 镜像运行。`--from=builder` 明确指定来源阶段,仅复制可执行文件,避免源码和构建工具泄露。
安全与体积收益
  • 减少暴露的软件包数量,降低漏洞风险
  • 镜像体积可缩减 70% 以上
  • 提升启动速度与分发效率

3.3 容器网络与存储在企业系统中的设计考量

网络模式选择与性能权衡
企业级容器平台常采用 CNI(Container Network Interface)插件实现网络隔离与互通。常见的 Flannel、Calico 等方案在性能和策略控制上各有侧重。例如,Calico 提供基于 BGP 的高效路由与 NetworkPolicy 支持:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: allow-http-ingress
spec:
  selector: app == "web"
  ingress:
  - action: Allow
    protocol: TCP
    destination:
      port: 80
上述策略限制仅允许 80 端口的 TCP 流量进入标签为 app=web 的 Pod,增强了微服务间的安全隔离。
持久化存储架构设计
容器本身具有临时性,企业应用需依赖 PersistentVolume(PV)与 PersistentVolumeClaim(PVC)实现数据持久化。常用后端包括 NFS、Ceph 和云厂商提供的块存储。
存储类型适用场景I/O 性能
NFS多节点共享读写中等
Ceph RBD高可用块存储高
云盘(如 EBS)公有云环境高(延迟敏感)

第四章:构建现代化CI/CD流水线

4.1 使用Azure DevOps或GitHub Actions实现持续集成

在现代软件交付流程中,持续集成(CI)是保障代码质量与快速迭代的核心实践。Azure DevOps 和 GitHub Actions 均提供了强大的 CI 能力,支持自动化构建、测试和代码分析。
GitHub Actions 快速入门示例

name: CI Pipeline
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm install
      - run: npm test
该工作流在每次代码推送时触发,检出代码、配置 Node.js 环境,执行依赖安装与单元测试,确保变更符合质量标准。
平台特性对比
特性Azure DevOpsGitHub Actions
集成生态深度集成 Microsoft 服务原生支持 GitHub 仓库
配置方式YAML 或经典管道界面纯 YAML 配置

4.2 自动化测试与制品管理集成策略

在现代DevOps实践中,自动化测试与制品管理的深度集成是保障软件交付质量的核心环节。通过将测试流程嵌入CI/CD流水线,每次构建生成的制品都能经过完整验证后归档至制品仓库。
触发机制设计
当代码提交触发CI流水线时,系统自动执行单元测试、集成测试,并将测试报告与构建产物一同上传至Nexus或Artifactory。

  test:
    stage: test
    script:
      - mvn test
      - mvn package
    artifacts:
      paths:
        - target/*.jar
      reports:
        junit: target/surefire-reports/*.xml
上述GitLab CI配置中,`artifacts.paths`确保构建产物保留,`reports.junit`将测试结果上报,供后续分析使用。
版本一致性控制
采用语义化版本命名规则,结合Git标签自动发布正式制品,避免未经测试的二进制文件流入生产环境。
阶段测试类型制品状态
开发单元测试SNAPSHOT
预发布端到端测试RELEASE

4.3 多环境发布流程设计与蓝绿部署实践

在现代持续交付体系中,多环境发布需保障开发、测试、预发与生产环境的一致性。通过基础设施即代码(IaC)统一配置,结合CI/CD流水线实现自动化部署。
蓝绿部署核心流程
  • 准备两组完全独立的生产环境:Blue(当前在线)与 Green(待发布)
  • 新版本部署至空闲环境(如Green),完成健康检查与流量验证
  • 通过负载均衡器或服务网关切换流量,实现秒级切换
基于Kubernetes的部署示例
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-green
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      version: v2
  template:
    metadata:
      labels:
        app: myapp
        version: v2
该Deployment定义了Green环境的新版本实例,标签version: v2用于与Blue环境(v1)隔离。结合Service的selector切换,可实现精准流量导向。
环境切换对比表
策略回滚速度资源消耗风险等级
蓝绿部署秒级高(双倍实例)低
滚动更新分钟级中中

4.4 流水线安全控制与权限审计机制

在持续集成与交付流水线中,安全控制与权限审计是保障系统稳定与数据合规的关键环节。通过精细化的访问控制策略,确保只有授权用户和系统能触发或修改关键流程。
基于角色的权限管理
采用RBAC模型对流水线操作权限进行划分,常见角色包括开发者、审核员与管理员,各自拥有不同的操作范围。
操作日志与审计追踪
所有流水线操作均记录至集中式日志系统,包含触发人、时间、执行步骤及结果状态,便于事后追溯。
操作类型允许角色审计级别
代码提交开发者低
部署生产管理员高
permissions:
  deploy-prod:
    role: admin
    audit: true
    description: "生产环境部署需双人复核"
该配置定义了生产部署权限仅限管理员,并启用强审计模式,确保高风险操作可追踪、可验证。

第五章:未来展望:云原生与微服务架构下的部署新范式

服务网格的深度集成
在云原生环境中,Istio 等服务网格技术正逐步成为微服务通信的标准基础设施。通过将流量管理、安全策略和可观测性从应用层解耦,开发团队可专注于业务逻辑。例如,在 Kubernetes 集群中注入 Istio sidecar 后,所有服务间调用自动支持 mTLS 加密:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: secure-mtls
spec:
  host: payment-service
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL  # 启用双向 TLS
GitOps 驱动的持续部署
Argo CD 等 GitOps 工具实现了声明式部署流程,将系统期望状态存储于 Git 仓库。每次代码变更触发 CI 流水线后,部署清单自动提交至 Git,Argo CD 持续比对集群实际状态并同步。
  • 开发人员推送 feature 分支至 GitHub
  • GitHub Actions 构建镜像并更新 helm-values.yaml
  • Argo CD 检测到 values 变更,自动拉取并部署至 staging 环境
  • 通过 Prometheus 指标验证服务健康后,手动批准生产发布
无服务器化微服务演进
部分轻量级微服务已向 Serverless 架构迁移。以 AWS Lambda 为例,结合 API Gateway 实现按需伸缩,显著降低空闲成本。某电商平台将订单确认通知服务重构为函数:
func HandleOrderEvent(ctx context.Context, event OrderEvent) error {
    return sns.Publish(ctx, &event.ReceiptURL)
}
架构模式部署频率平均恢复时间
单体应用每周1次45分钟
微服务 + 服务网格每日30+次2分钟
iis部署讲解和错误内容 一、部署 0、WIN_独立部署 1、WIN_IIS 部署,前后端不同站点 2、WIN_IIS 部署,前后端一个站点 3、WIN_Git_Nginx_Kestrel 部署 4、WIN 部署到 Windows 服务 5、Linux_Ubuntu_Nginx 部署 6、Linux_CentOs_Nginx 部署 7、Linux_Docker 部署 8、Docker+Jenkins部署,实现CI/CD 二、NetCore 错误 0、调试靠断点,部署靠日志 1、错误码 —— 405 2、错误 阅读详情

相关推荐

如何在 Docker 和AKS上使用 IIS

本文介绍了如何在Docker容器中部署IIS网站,并迁移到AKS集群。首先展示了使用两行Dockerfile即可构建包含网站内容的IIS镜像,并运行容器。重点说明了在AKS上部署Windows容器的注意事项:Windows版本必须匹配(2019/2022),节点池需要单独创建,以及Kubernetes版本要求。文章提供了创建Windows2022节点池和更新部署YAML的示例代码,强调通过nodeSelector确保版本兼容性。最后指出这种方法可实现配置版本控制,便于集成到CI/CD流程中。

介绍AWS Azure GCP devops Terraform 等技术 528

asp.net core框架搭建4-部署IIS/Nginx/Docker

asp.net core框架搭建4-部署IIS/Nginx/Docker ,下面让咋们一起来部署webapi到IIS和nginx/Docker,将一步步带着大家,实现目标。所有操作过程将展现在本篇文章,下面咋们一起来实现它吧。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 5万+

Unity游戏开发实战:如何用科大讯飞离线语音合成SDK实现NPC对话(附完整代码)

本文详细介绍了如何在Unity游戏开发中使用科大讯飞离线语音合成SDK实现NPC对话系统。通过完整的代码示例和优化技巧,开发者可以快速集成本地语音合成功能,提升游戏沉浸感,同时避免网络延迟问题。文章涵盖SDK集成、核心语音合成模块实现以及高级应用技巧,特别适合RPG游戏开发者参考。

weixin_29268385的博客 182

ubuntu docker 部署iis_即学即用Docker(一):说说容器和Docker

提起Docker,我们不得不说说容器技术。容器技术这几年一直是最热门的话题,如果你还不知道说明你真的out了。为什么容器这么火呢,那是因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。而如今最热门的开源容器工具就是docker了。让我们先聊聊历史,在很久很久以前,想要在线上服务器部署一个应用,首先需要购买一个物理服务器,在服务器安装一个操作系统,然后安装好应用所需要的...

weixin_42299391的博客 2543

从零开始:使用COLMAP与OpenMVS构建高精度三维Mesh模型

本文为零基础新手提供了使用COLMAP与OpenMVS构建高精度三维Mesh模型的完整实战指南。详细介绍了从环境配置、数据采集黄金法则,到COLMAP稀疏与稠密重建、OpenMVS网格生成与纹理映射的每一步操作,并分享了关键的避坑技巧与参数调优建议,帮助读者从二维照片中成功重建出属于自己的三维模型。

metal的博客 505

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6598

Docker: 将DotNetCore应用程序容器化并部署到IIS站点

简介 通常我们可以直接使用镜像microsoft/dotnet作为dotnetcore应用程序的基础镜像,可以直接使用Kerstrel作为Web服务器。但实际情况不总是这样,本文先介绍如何使用powershell将AspNetCore程序部署到IIS,然后在window docker环境下将其打包成windows docker image。 使用PowerShell部署ASP.NetCore...

wucong60的专栏 2387

量化策略分享之首板低开

这个量化策略的核心是选择在低位、首次涨停后次日低开的股票,开盘时买入,上午有盈利就卖出,没有就拿到尾盘在卖出;策略优点在于选择的股票在低位,风险较低,并且刚启动首板,有大资金介入,第二天能快速跑路。

qq_29301281的博客 1467

netcore一键部署到linux服务器以服务方式后台运行

AntDeploy 是我开发一款开源一键发布插件将本地vs中的代码,一键打包,部署到任意的远程服务器部署方式支持 windows服务,linux服务,docker容器,iis支持增量发布...

dotNET跨平台 1377

Costas环参数调优指南:QPSK载波同步中的环路滤波器设计技巧

本文深入解析QPSK载波同步中Costas环的参数调优,特别是环路滤波器的设计技巧。通过分析星座图异常现象,提供从理论计算到MATLAB仿真的实战调优指南,涵盖环路带宽、阻尼系数等关键参数在不同信噪比场景下的选择策略,旨在解决载波同步失锁、性能下降等工程难题。

weixin_29035147的博客 546

Python爬虫:爬取健身平台运动数据(跑步、骑行轨迹)

通过分析这些运动数据,用户能够了解自己的运动趋势、运动成绩,并作出相应的调整。通过使用Strava的API,我们成功地获取了用户的运动活动信息和运动轨迹数据,并进行了存储与可视化。Strava的API提供了丰富的数据接口,能够通过OAuth2认证获取用户的运动数据,包括历史数据、运动轨迹等信息。Strava的API还提供了获取活动轨迹数据的接口,返回的数据格式通常是GeoJSON格式,适用于地图可视化。随着大数据技术的发展,运动数据的分析和可视化为个人健康管理、运动训练计划的优化等提供了强大的支持。

2201_76125261的博客 1075

使用 Gitlab CI/CD 实现自动化发布站点到 IIS

说明 这里先介绍下两个东西 CI/CD、GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度。 首先介绍 CI/CD :随着我们开发方式的转变,程序的发布变得非常频繁,而其这些发布操作都是重复的。CI/CD 就是为了使这些操作能变得自动化,那它是怎么实现自动化的呢?其实它做的就是当我们使用 git push(推送)代码的时候会执行 ...

weixin_30814223的博客 968

YOLOv8有效涨点,增强型 YOLOV8 与多尺度注意力机制特征融合,附代码,详细步骤

在本实验中,我们通过将双层路由注意(BRA)、广义特征金字塔网络(GFPN)和第四检测头结合到YOLOv8中,开发了一种新颖的BGF-YOLO架构。BGF-YOLO 包含注意力机制,可以更多地关注重要特征,特征金字塔网络可以通过将高级语义特征与空间细节合并来丰富特征表示。此外,我们研究了不同的注意力机制和特征融合、检测头架构对检测准确性的影响。实验结果表明,与YOLOv8x相比,BGF-YOLO的mAP50增加了4.7%。

kay_545 3048

部署前端项目方法(Docker,Nginx,IIS,Tomcat7,Nodejs)

根据前段时间的学习,整理如下前端项目部署方法。错误,不足及新的部署方式欢迎在评论区中留言与我讨论。大家共同进步!(^_^)! 部署前端项目方法 通过 Docker-Nginx-supervisor 部署 在项目文件夹中新建 Dockerfile,内容如下: FROM ubuntu:14.04 ADD sources.list /etc/apt/sources.list...

小白的编程之旅 6292

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法。

kevin1499的博客 1617

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Windows 10下使用Dockerfile快速部署IIS+ASP.NET网站实战指南

我们的Dockerfile已经符合这个原则:先安装配置环境(很少变动),最后复制网站文件(每次发布都变)。

wasm7browser的博客 224

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【亲测免费】 微软IIS Docker项目介绍

微软IIS Docker项目介绍 项目基础介绍 本项目是微软开源的一个Docker项目,主要包含了用于在Docker容器中运行Internet Information Services (IIS)的相关文件。项目使用Dockerfile作为主要的编程语言,用于定义构建IIS容器的步骤。 核心功能 该项目的核心功能是提供了一个基于Windows Server Core的IIS Docker镜像,使得...

gitblog_00971的博客 697

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

我的docker随笔37:使用gitlab和jenkins实现CICD

本文涉及一种利用容器部署 gitlab 和 jenkins 服务实现持续集成(CICD)的方法,其目的是为了在实际工作中使用代码托管及自动化操作。

李迟的专栏 858

Jenkins + Net 自动构建流程,支持Windows 服务器下 IIS 部署/ Linux服务器下 Docker部署

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

qq_35872690的博客 1021

Docker部署Asp.net core应用

1 容器概念 使用Docker前我们首先要简单了解一下容器的概念。MSDN上有一张虚拟机和容器的对比图,很好的展示了虚拟机和容器的区别,如下所示,虚拟机包括应用程序、必需的库或二进制文件以及完整的来宾操作系统,每台虚拟机都有一个单独的内核,我们完全可以把虚拟机看做是一台真实的物理机。 容器包括应用程序及其所有依赖项,与其他容器共享 OS 内核,容器在主机操...

每天都有新发现 4338

老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑。这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应用。 问题分析 听说Windows支持原生docker了,大家一定都很兴奋。然而,大家想过没有,Windows Server Docker最适合什么场景呢?部署.NET Core应用?为什么不选

dotNET跨平台 2450

windows server2016的docker启动iis镜像,并开启iis服务

由于.net服务需要搭建在iis中,因此需要iis的镜像容器,然后再把自己的项目程序部署上去。废话不多说,首先pull微软的iis,这个比较大,大约4G,需要配置加速器,配置方法在我的前一遍文章介绍了。 使用命令 docker pull microsoft/iis 接下来进行启动iis,看到我们熟悉的iis欢迎界面,使用命令 docker run -d -p 80:80 micro...

qq_27010291的博客 5万+

如何让传统ASP.NET网站在Docker中运行

本文主要描述如何让传统ASP.NET网站在Docker中运行,侧重Docker image 搭建。 使用条件: 1. Docker for windows 用户切换到Windows 容器模式 2. Windows Server 2016 用户 开启 Windows Container 关于Docker for windows,nanoserver,Windows Container...

生活在底层的低级码农 1万+

在Docker容器中部署Web应用

本文直接讲解如何在Docker容器中实战部署一个Web应用程序,关于Docker相关的概念和如何安装Docker请参考相关资料完成。   第一步:工具准备 演示如何在Docker容器中部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用。另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作。 安装jre,请参考:http

编程随笔 2万+
上一篇: C#内联数组到底能有多大?:深入探究Span<T>与Stackalloc的实际边界
下一篇: C#跨平台调试性能优化(仅限高级开发者的核心技巧)
FastSolve
博客等级 码龄1年 155粉丝 2011原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值