winform提供webapi服务,实现双向http通信
@[TOP](Winform程序开启Web服务)
# 背景
在很久以前为了满足需求,已经开发了一款winform程序,并且是4.6.1版本的,如今为了和第三方对接,需要在这个winform上提供WebAPI的接口。因为第三方的程序是一份没有源码的程序。
# 思路
## 方法1
- 网上有很多自写web服务的功能,个人觉得过于麻烦,而且还要考虑一些路由规则什么的,太难了
## 方法2
- 使用iis或者nginx提供服务,一个web程序和一个winform程序实现通信,需要做两个程序,还要交互,麻烦
## 方法3(本文使用的方法)
考虑4.6.1 版本刚好支持了netcore,所以可以将kestrel服务集成到winform中,直接提供webapi服务
# 实现
## 在winform程序中引入几个nuget包
Microsoft.AspNetCore Version="2.1.7"
Microsoft.AspNetCore.Mvc Version="2.1.3"
在使用nuget引入的时候会将关联的全部引入进来,完整的packages.config文件如下
自动更新apk,xamarin.android 对话框
@[TOC]
# 思路
- 服务端提供版本信息和apk下载地址
- 客户端通过对比版本进行文件下载安装升级
# 客户端
## 权限清单(AndroidManifest.xml)
```xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.2" package="com.companyname.boshiac.forklift.app" android:installLocation="auto">
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="33" />
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="
Kestrel封装成WindowServer.zip
背景
在一些开发过程中,会在局域网内搭建webapi服务作为移动端的服务接口使用,但是每次实施人员要到客户现场安装iis等工具,还有一些web的配置,非常繁琐,所以想着把webapi封装到WindowService中,可以通过自定义的安装程序进行一键部署,岂不美哉!
这篇文章主要是记录如何将Kestrel的服务封装在WindowService中
关于WindowsServer
请参考如下这篇文章
.netcore worker service (辅助角色服务) 的上手入门,包含linux和windows服务部署
开发服务
之前做过.net5版本的处理,觉得挺简单的,但是到.net6的时候遇到了一些问题,所以下面都会记录
.NET5版本
建项目
新建一个webapi项目,如下图
添加Controller
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace WebApiNet_v5.Controllers
{
[Route("api/[controller]")]
C# NModbus 操作
# Modbus 协议简介
Modbus通信协议具有多个变种,支持串口(主要是RS-485总线),以太网多个版本,其中最著名的是Modbus RTU,Modbus ASCII
和Modbus TCP三种。在工业现场一般都是采用Modbus RTU协议,一般大家说的基于串口通信的Modbus通信协议都是指Modbus RTU通信协议。
与Modbus RTU协议相比较,Modbus TCP协议则是在RTU协议上加一个MBAP报文头,并且由于TCP是基于可靠连接的服务,RTU协议中的
CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码的,所以就常用一句比较通俗的话来说:Modbus TCP协议就是
Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK。虽然这句话说得不是特别准确,但是也基本上把RTU与TCP
之间的区别说得比较清楚了。
## Modbus的功能码
|功能码 | 含义 |
|--|--|
| 0x01 |读线圈 |
| 0x02 |读离散量输入 |
| 0x03|读保持寄存器 |
| 0x04
C# 文件压缩解压与sqlite存储文件数据
使用C#对文件进行压缩和解压操作,并且将压缩的文件数据存储到sqlite中。在使用的时候将sqlite中的文件数据读取下来,进行解压到本地进行二次操作。
用途:用于文件存储与部署操作等。
libssl-1_1-x64.dll
解决这个问题的dll
无法定位程序输入点 OPENSSL_sk_new_reserve 于动态链接库 xxx\libssl-1_1-x64.dll
ORACLE与SQLSERVER中的语法区别
详细的描述了ORACLE和SQLSERVER中部分方法的区别和使用中遇到的坑