关于.net5和下半年推出的.net6的一些问题

ilikeff8 2021-03-23 08:58:36
之前报道是 .net5不支持winform,wpf,虽然现在vs2019最新版本也推出了他们的编辑器,而.net6也退出了第2个预览版,年底就要推出正式版,那.net6下能实现真正的跨平台,不知道他的那个MAUI到底是啥,是基于xaml的吗
如果现在项目转移到.net5,为.net做准备的话,那有些可能是.net framework windows下面的东西该如果处理(这些虽然现在依旧可以在.net5里引用,但明显一旦引用就是混合编程了,类似之前的.net framework+.net core, .net5/6 下,dotnet虚拟机能直接在linux上模拟实现出来这些功能吗
1 具体就是windows api,wmi,共享目录访问,windows服务(是不是必须改用worker service)
2 以后用blazor server/blazor webassmembly+grpc是不是ms的主推方向了
...全文
2951 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilikeff8 2021-04-13
  • 打赏
  • 举报
回复
引用 14 楼 以专业开发人员为伍 的回复:
你的第一个问题其实我已经说了,windows系统下的相关机制已经移植到 linux 下实现,这是通过 .net 来实现的。如果你非要纠结“windows api”这就是在 net 下纠结 c 底层了。 至于 blazor assembly,它是 web 前端技术。如果你满脑子只有桌面窗口概念,那么是另外一个问题。所以 .net6 的跨平台桌面开发技术跟 webassembly并不在同一个频道上。 对于 blazor assembly 来说,你可以随便找一个web 服务器(例如 nginx)传上去一堆文件,然后任意一个可以从其下载文件的浏览器进程都能开始运行 c# 的客户端网页应用系统,这个网页上跑的是 .net5 各类框架,包括自己开发的c#编写的业务框架、websocket框架、微软的机器学习框架等等,都跑在浏览器客户端。
因为我做的是物联网平台产品,会设计到各种通讯协议和通讯方式,要和硬件打交道,也会用到官方或第三方的一些厂商DLL,或是nuget包,这块我也不清楚能兼容多少,甚至三菱CNC还有必须要注册他们的COM组件的,这块是不是就无法跨平台了
ilikeff8 2021-04-13
  • 打赏
  • 举报
回复
引用 13 楼 以专业开发人员为伍 的回复:
在 .net5 下,我们编写控制台服务程序,在各种“乱七八糟的 linux 环境下”稳定地跑很长时间,速度飞快,各种 .net 服务框架(包括你自己写的各类框架)也都能使用到,已经完全用不着别的体系的东西了。你只是不用 winform、wpf 而已。 所以我说 .net 6 如果解决跨平台的优秀的交互图形窗口界面开发,你就不用 Q之类的东西了,是个很大的进步!
windows服务我已经替换成worker service,安装和开发也挺方便的,但我不知道他有没有所谓的sever0权限问题,我原来.net4版本下,windows服务里要启动其他外部进程的时候,如果在win10下,会造成新进程里进行操作的权限不够,我调用了windows api WTS取获取当前登录的administrator管理员权限,用管理员启动进程,才让新启动的进程拥有了管理员权限,而移植到.net5后,我想扔掉所有的windows api,但不知道会不会遇到权限问题
  • 打赏
  • 举报
回复
你的第一个问题其实我已经说了,windows系统下的相关机制已经移植到 linux 下实现,这是通过 .net 来实现的。如果你非要纠结“windows api”这就是在 net 下纠结 c 底层了。 至于 blazor assembly,它是 web 前端技术。如果你满脑子只有桌面窗口概念,那么是另外一个问题。所以 .net6 的跨平台桌面开发技术跟 webassembly并不在同一个频道上。 对于 blazor assembly 来说,你可以随便找一个web 服务器(例如 nginx)传上去一堆文件,然后任意一个可以从其下载文件的浏览器进程都能开始运行 c# 的客户端网页应用系统,这个网页上跑的是 .net5 各类框架,包括自己开发的c#编写的业务框架、websocket框架、微软的机器学习框架等等,都跑在浏览器客户端。
  • 打赏
  • 举报
回复
在 .net5 下,我们编写控制台服务程序,在各种“乱七八糟的 linux 环境下”稳定地跑很长时间,速度飞快,各种 .net 服务框架(包括你自己写的各类框架)也都能使用到,已经完全用不着别的体系的东西了。你只是不用 winform、wpf 而已。 所以我说 .net 6 如果解决跨平台的优秀的交互图形窗口界面开发,你就不用 Q之类的东西了,是个很大的进步!
  • 打赏
  • 举报
回复
我们现在一切都用 .net5,特别是这对一些国有大型企业的框架,要跑在国产linux下,并且只能用国产数据库,一些流行的美国的开源框架也其实是被人诟病的东西。好在我们很多年前对于 UI 就基本转为纯web前端开发(使用typscript),现在由于c# 可以支持web 前端开发所以欣然改回blazor webassembly。因此开发跨平台高性能的前端应用,也没感觉有任何问题。 在 .net6下其实也一样。传统的桌面应用可以移植了,通过少量修改,做到跨平台。你也就用不着什么 QT 之类的开发工具了。
jhonsonzhang 2021-03-26
  • 打赏
  • 举报
回复
但winform程序,比如最新的那个windform app项目还是不能在大多数linux上跑,只能在linux-windows服务器上可以,其它的不行。我是直接用net5.0实践验证过。
jhonsonzhang 2021-03-26
  • 打赏
  • 举报
回复
引用 7 楼 ilikeff8 的回复:
winform后台进程的事情搞定了,现在是用work service代替windows service后,在work service里改为启动console程序,用 sc安装的时候只要不指定交互就不会有控制台窗口,接下来我该如何替换findwindow和GetWindowThreadProcessId呢,我是通过它们找特定的后台进程的,之前是查询特殊的窗体标题获得句柄,.那net5如何获取有指定特征字符串的linux的进程呢,并且还要转换成Process去kill它
跨平台应用,你考虑多了,需要dotnet容器的。部署好dotnet core在linux机器上。就跟在windows上应用一样了,不用刻意再针对性的修改代码。
jhonsonzhang 2021-03-26
  • 打赏
  • 举报
回复
我刚刚完成一个移动端项目,部署在linux-deepin的一个国产服务器上。目前运行还可以。但开发挺艰辛的,感觉core在状态和会话方面还需要进一步简化,太繁琐了,还不如直接用js来得方便。另外前端页面的@html类和方法的使用,还是弱于直接使用js。
ilikeff8 2021-03-26
  • 打赏
  • 举报
回复
winform后台进程的事情搞定了,现在是用work service代替windows service后,在work service里改为启动console程序,用 sc安装的时候只要不指定交互就不会有控制台窗口,接下来我该如何替换findwindow和GetWindowThreadProcessId呢,我是通过它们找特定的后台进程的,之前是查询特殊的窗体标题获得句柄,.那net5如何获取有指定特征字符串的linux的进程呢,并且还要转换成Process去kill它
泡泡龙 2021-03-26
  • 打赏
  • 举报
回复
winform和wpf在.net 6.0依旧只能在windows平台使用
ilikeff8 2021-03-25
  • 打赏
  • 举报
回复
还有就是不我原来服务里去启动其它进程,而其他进程是一个后台winform进程,不显示界面,也不显示在任务栏里,但任务管理器里能看到 如果转成.net5,我放弃掉winform,那我改如何做这个后台进程,而这个后台进程可以不需要处理消息循环(把WM_COPY相关的功能砍掉就没消息循环什么事了),本来想用跨平台的控制台,但控制台如何在不适用windows api的情况下在windows/linux下都能隐藏窗口呢,否则我可能会启动20个不同的后台进程,然后服务器的界面上会有20个窗口。。
ilikeff8 2021-03-25
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
不清楚, 但我觉得winform之类的,更多的可能是产生替代方案。
我有一个插件系统要移植的目标是win/linux都能用,现在正在从.net framework 4.6.1 移植到 .net5 首先,一些和硬件、系统无关的DLL我已经改写成.net5了,这个还是比较简单的 而其中有些windows下的专用技术不知道该如何移植到.net5 1 现在一个总服务已经移植过去了,就是把windows服务替换成了worker service辅助角色服务,windows下的部署:安装,自启动,运行,停止,卸载都是正常的,只是linux下的部署还没试过,但网上有教程,应该也没啥问题 2 但有些windows api 我就不知道该如何移植或替换成双平台都支持的写法了,或者给出linux下.net5写法也行 FindWindow GetWindowThreadProcessId SendMessageTimeout WM_COPY 这些不知道该如何替换写法 下面几个是用来在服务里用当前系统登陆用户的权限来启动其他进程用的,用来突破sevice0,.net5版本里我用worker service我就砍掉这些了,直接Process.Start,也不知道能不能启动linux进程,也不知道权限够不够 WTSEnumerateSessions WTSSendMessage WTSGetActiveConsoleSessionId CreateProcessAsUser CloseHandle 3有些Nuget第三方包也改成.net/.net core 3.1版本的,倒是也没出错 4 而有些WMI调用系统信息的部分,也不知道该怎么移植,比如用WMI获取CPUID。主板ID,网卡MAC地址,当前以太网IPv4的IP列表 5 还有些第三方的设备驱动DLL,没有源码,是.net framework的,不知道能不能在linux下调用到,而且还有固定只能x86的dll 6 哪些tcp,net,http监听等代码直接拷贝过来倒是也没出错,不知道能不能在linux下正常工作 7 不支持串口控件,不知道该用啥替代 感觉还是挺多事情要处理的
JDD1997 2021-03-23
  • 打赏
  • 举报
回复
MAUI 是 xamarin 的改名,是一种使用xaml的ui技术,美好的蓝图是写一次界面,即可在 windows,Android,iphone,ipad,mac,Linux上跑起来.但是微软画的饼,大家都明白的. 很多介绍里面都说它是能同时构建win的桌面端和安卓苹果的移动端,但都没有提到所谓的win桌面端到底是指 WPF 还是 UWP,或是同时支持两者. 感觉上大概率是UWP.
正怒月神 2021-03-23
  • 打赏
  • 举报
回复
不清楚, 但我觉得winform之类的,更多的可能是产生替代方案。
ilikeff8 2021-03-23
  • 打赏
  • 举报
回复
更正2:那.net6下能实现真正的跨平台吗?
ilikeff8 2021-03-23
  • 打赏
  • 举报
回复
更正下:之前报道是 .net5不支持winform,wpf跨平台
.Net精品就业班课程表 : 1、.Net基础加强(10天) 核心技术课程 常用数据结构(List、Dictionary、Array)、多态、常用设计模式、反射、常用.net类库、泛型、IO流、委托事件、正则表达式、XML、反射、GC等。 2、数据库开发及ADO.Net(6天) 核心技术课程 数据库开发基础、Microsoft SQLServer基础、SQL语言基础、索引、事务、SQL语言高级技术(空值处理、聚合与分组、数据分页、Union、日期函数、类型转换函数、流控函数、表连接、子查询、存储过程、触发器)、数据库设计范式、数据库调优。 ADO.Net(行集、数据集、类型化数据集、SQLHelper、SQL注入漏洞防范、数据绑定)。 3、三层架构MIS项目(5天) 查看项目演示 功能点 本项目基于流行的三层架构(DAL+BLL+UI)。 主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。 技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的Excel文件处理、树状结构数据处理、递归、CodeSmith、代码生成器、三层架构。 项目说明 这是一个用WinForm技术实现的系统,传智播客在开课的半个月就安排一个项目,体现了传智播客“项目驱动学习”的先进教学理念。 4、网页开发与JavaScript(7天) 查看案例演示 核心技术课程 HTML基础加强、css(包含Div+CSS布局)、JavaScript、Dom(事件、window对象、document对象、对话框、定时器、粘贴板、动态Dom、跨浏览器兼容性解决方案、JS压缩和CDN、Internet Explorer Developer Toolbar)、JQuery(JQuery函数、隐式迭代、链式编程、id选择器、tag选择器、CSS选择器、层次选择器、表单选择器、过滤选择器、复合选择器、节点导航、节点操作、样式操作、事件、动画、JQuery Cookie、JQuery Live、JQueryUI)。 课程说明 CSS、JavaScript是ASP.Net开发的基础,把这些掌握好了就能很轻松的学会ASP.Net;Dom是实现网页动态效果的技术,在网站越来越个性化年代,招聘企业对应聘者的Dom水平要求非常高;JQuery是近几年异军突起的JavaScript框架库,几乎成了Web前端开发事实上的标准,大部分企业都是使用JQuery进行Web前端的开发。 学完了这阶段课程,学员将学会开发主流网站的前端效果,比如:焦点图、滚动展示图、网页防复制、网页自定义菜单、WebOS、美女时钟、无刷新评论、评分控件、表格特效、图片悬浮详细信息、微博界面、QQ消息框效果、Div对话框等。 5、ASP.Net开发(12天) 核心技术课程 自己动手写Web服务器(Socket、多线程)、ashx模式Web开发、ViewState、Cookie、Session、Http协议、Web开发基本原则、XSS漏洞防范、Request对象、Response对象、Server对象、虚拟路径、HttpHandler深入、ASP.Net生命周期、WebForm原理、服务端基本控件、WebShell漏洞防范、HTML服务端控件、验证框架、MasterPage、数据绑定控件(ObjectDataSource、列表类绑定控件、GridView、FormView、ListView、Repeater、高效率分页)、CKEditor、Membership、缓存、互联网调优(SEO、HTML压缩、页面静态化、移除ViewState、表单GET化)、URL重写、错误处理、AJAX(XMLHTTP、JQuery AJAX、Json)、全局文件、HttpHandler与HttpModule、IIS配置。 课程说明 由于微软对ASP.Net进行高度封装,因此ASP.Net入门非常简单,开发人员不需要了解HTML、JavaScript、Http协议也可以快速开发出一个Web系统,正因为如此,社会上充斥着大量这样的“拖控件的开发人员”,使得很多Java、PHP等语言的开发人员诋毁ASP.Net开发人员的时候经常会说“你们什么都不懂,就会拖控件”。ASP.Net的快速开发是ASP.Net非常大的一个优点,可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.Net MVC、SEO、网站调优、服务端客户端混合编程、AJAX等)的时候就完全不能胜任。通过上一个阶段的HTML、JavaScript、Dom的学习,学员已经有了很好的HTML、JavaScript基础;在ASP.Net课程的一开始,不是直接教学员怎么拖ASP.Net控件进行快速开发,而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端JavaScript”、“ViewState的作用”、“Session的原理”等这些基本而又重要的原理,从而扫清后面ASP.Net知识学习的基础性障碍。 由于访问量非常大,因此互联网项目的开发对ASP.Net开发人员的要求非常高,所以我们安排了互联网调优、缓存、网站防黑等内容。 ASP.Net中控件数量是非常多的,讲解ASP.Net的教材通常要上千页,让初学者望而生畏,其实ASP.Net大部分控件相似性非常强的,同类型的控件学会了一个那么其他控件也就很容易学会了。比如只要学会了DropDownList,那么RadioButtonList、ListBox、CheckBoxList、BulletedList等几乎不用学就会用;再比如只要学会了ListView,那么Repeater、GridView、FormView等控件也是触类旁通。传智播客认真钻研教学,对知识进行分类、整理、提炼精华,让学员在短时间内掌握ASP.Net技术。 ASP.Net中有一些技术是有局限性的,传智播客根据这些技术在企业中的实际应用情况进行了调整、补充。比如项目中几乎没有在UI层直接访问数据库的,而是采用三层架构,因此我们不讲解UI层直连数据库的控件SQLDataSource,而是把主要精力放在讲解三层架构开发模式。再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7天) 项目说明 1、网上图书商城。这是一个典型的B2C网上商城,使用经典的复杂三层架构(工厂模式)进行开发。涉及图书管理、搜索、订单管理、导航管理等核心模块。在讲解ASP.Net基础后安排这样一个B2C网上商城系统,让学员在实际项目中将学到的知识学以致用。 2、办公自动化OA系统。这是一个典型的基于ASP.Net技术的OA协同办公项目,包含了权限管理、公告管理、文档管理、工作流、论坛管理、新闻模块管理、人员管理等典型的OA系统模块。 3、数据采集和邮件群发。这是一个基于多线程的邮件营销平台,核心技术包括网络爬虫、多线程、HTML解析、邮件发送、生产者消费者模式等。 注:以上三个案例,上课时会根据每个班的课堂反馈选择其中一个案例予以讲解学习。 7、如鹏网项目(9天) 查看项目演示 功能点 站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、缓存管理、广告位管理、RSS输出、水印设置、无刷新上传图片、搜索引擎优化设置、数据备份恢复、伪静态设置、网上商城、订单管理、在线支付(支持支付宝、财付通、块钱等第三方支付平台)、网站调优(数据库优化、缓存、静态页、CSS Spirit、js压缩)。 技术点 搜索引擎技术:Lucene.Net、多线程开发、爬虫技术、网页分析、正则表达式、Log4Net日志框架、Quartz.Net定时作业调度。 大型互联网开发技术:代码生成、网页静态化、基于JQuery的Web2.0页面开发、AJAX、SEO、网站调优、采集器、RSS/XML、网站防黑(防XSS攻击、防注入漏洞攻击、防CC攻击、防挂马、防盗链、敏感词过滤、广告帖智能过滤)、IIS管理与调优、流量分析、第三方脚本嵌入(广告、统计代码、内容联盟等)、图片服务器分离。 项目说明 如鹏网项目是已经上线三年的网站,日访问量最高20000人次,网址www.rupeng.com。本系统旧版本基于PHP、J2EE技术,由如鹏网开发者亲手操刀用.net重写新版本。系统分为前台Web界面、后台管理界面、站内搜索、监控客户端四个子系统。 大型互联网站由于访问量非常大,因此不是那些单纯用ASP.Net控件拖拽开发的开发人员能够开发的,也不是闭门造车能够造出来的,必须是在实际项目中经过无数访问者的使用、反馈、修改才能做出来的。搜房网、汽车之家等大型网站中用到的网站静态化、图片服务器分离、高性能缓存、HTML/JS压缩、CDN、CSS Sprite、负载均衡、Memcached、镜像服务器同步等问题不是那些随手写出来的所谓在线商城、电子商务系统所所能够涉及到的。 这个项目完全按照高访问量互联网站进行设计,通过这个项目,学员不仅可以在实战中巩固对前面学习的ASP.Net、ADO.Net、WinForm等知识的掌握,还可以掌握网站防黑、缓存、SEO、静态化、搜索引擎技术、AJAX等大型互联网开发中涉及到的技术。 8、.Net新技术(Windows Phone、ASP.Net MVC)(6天) 项目说明 未来是移动互联网的时代,未来将是Windows Phone、Android、iphone三足鼎立的时代,掌握了移动开发的技能的人是就业市场的抢手货。微软推出的Windows Phone平台是微软在移动互联网时代的一个重量级产品,微软对于WindowsPhone7的推广力度非常大,因此很多公司也开始进行Windows Phone7产品的研发,2011年下半年Windows Phone7开发人员的需求将会出现井喷,为了帮助学员掌握移动3G开发技术,传智播客.Net班加入了Windows Phone开发课程,采用传智播客独创的WP7Simulator教学平台,学员可以做出一个基于云计算架构的LBS系统。点击查看传智播客独创WP7Simulator教学平台。 ASP.Net MVC是微软推出的区别于ASP.Net WebForm的Web开发新技术,由于ASP.Net MVC解决了ASP.Net WebForm的很多缺点,非常适合大型、中型项目的开发,一经推出就受到了.Net开发社区的追捧,很多.Net开发人员的职位要求中都提到了MVC,可见掌握ASP.Net MVC技术必将提升自己就业的砝码。 9、就业指导(2天) 项目说明 总结以往所学知识,讲解《传智播客.Net面试、笔试宝典》,介绍简历、笔试、面试等所需的知识和技巧。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧