回归.NET冷门技术之WPF


一、前言

很多人说,PHP语言会用得越来越少,有一些PHPer都在努力的转Java,但是我并不担心这些,因为我不确定我在这条路上走多远。

我是从2014年夏天实训时开始学习编程的,那时候是从winform开始,拖控件、写简易交互便开始了。

但是从2016年接触PHP之后,我并不对.NET系列感冒,后来基本没接触.NET。在最近PHP使用中,觉得phpenv就做得很不错。以前做的winform只是可以搭配一些控件而已,却从没做过美化,而phpenv不仅是功能和界面,都是比较不错的。

现在,就“多一门语言,多一点技术”,重新学习一下WPF,尝试着做出一个小小的WPF程序,维护一个程序,才能逐步提高该方面的技术。

在WPF开发中,我有以下疑问:

(1)从开始学习窗体程序,是使用本地.NET调用本地SQLServer数据库的,如果多人使用系统,那么这种方式就不行了。

必须使用网络编程,使服务器和客户端是一对多的。那么,就得借助TCP/UDP网络编程,而TCP/IP协议中,使用http最为方便,可以使其他语言作为服务器,并且可以搭建在Linux服务器中,为保证程序的安全性,尽量使用https作为连接。

认识.NET

.NET是一种用于构建多种应用的免费开源开发平台,可以使用多种语言,编辑器和库开发Web应用、Web API和微服务、云中的无服务器函数、云原生应用、移动应用、桌面应用、Windows WPF、Windows窗体、通用 Windows平台 (UWP)、游戏、物联网 (IoT)、机器学习、控制台应用、Windows服务。.NET类库在不同应用和应用类型中共享功能,无论构建哪种类型的应用,代码和项目文件看起来都一样,可以访问每个应用的相同运行时、API和语言功能。

.NET相关版本

版本号发布时间生命周期
.NET 5.0 (推荐 5.0.0)2020-11-10 
.NET Core 3.1 (LTS-3.1.10)2019-12-032022-12-03
.NET Core 2.1 (LTS-2.1.23)2018-05-302021-08-21
.NET Framework 4.8 (推荐)2019-04-18 
.NET Framework 4.7.22018-04-30 
.NET Framework 4.7.12017-10-17 
.NET Framework 4.72017-04-05 
.NET Framework 4.6.22016-08-02 
.NET Framework 4.6.12015-11-30 
.NET Framework 4.62015-07-20 
.NET Framework 4.5.22014-05-05 
.NET Framework 4.5.12013-10-172016-01-12
.NET Framework 4.52012-08-152016-01-12
.NET Framework 4.02010-04-122016-01-12
.NET Framework 3.5 SP12008-11-182028-10-10

C#语言版本

目标框架versionC#语言版本的默认值
.NET5.xC# 9.0
.NET Core3.xC# 8.0
.NET Core2.xC# 7.3
.NET Standard2.1C# 8.0
.NET Standard2.0C# 7.3
.NET Standard1.xC# 7.3
.NET Framework全部< C# 7.3

二、URL请求登录

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.Referer = Referer;
byte[] bytes = Encoding.UTF8.GetBytes(Data);
request.ContentType = "application/json";
request.ContentLength = bytes.Length;
request.UserAgent = "JinPinJiaoYu/1.0.0";
request.Headers.Add("Authorization", "None"); //自定义头部
Stream myResponseStream = request.GetRequestStream();
myResponseStream.Write(bytes, 0, bytes.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string retString = myStreamReader.ReadToEnd();

myStreamReader.Close();
myResponseStream.Close();

if (response != null)
{
    response.Close();
}
if (request != null)
{
    request.Abort();
}
return retString;

三、界面

四、语法功能

获取本地IP

using System.Net;

///获取本地的IP地址
string AddressIP = string.Empty;
foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
    if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
    {
        AddressIP = _IPAddress.ToString();
    }
}
return AddressIP;

控件显示网络图片

https://blog.csdn.net/qq_42026964/article/details/100115873

下载网络图片

https://www.cnblogs.com/guxin/p/csharp-download-binary-file.html

五、其他功能

WPF托盘显示

其他页面(上面程序就是参照第一个做的)

VS2019简单快速的打包exe文件(图文教程)

打包视频教程Inno Setup 6

也可以用winRAR打包