用WEB方式开发WPF桌面程序
因为疫情影响,公司裁员,结束了一年多的web开发经历,重新开始做桌面,新公司用的是WPF(居然用的是winform style。。。),当然这跟本文没有关系。。。上篇博客写的用后台api和前台浏览器控件的方式来做桌面程序,这篇文章用nancy+cefsharp实现了一种方式,使用WPF的原因是因为winform在高分辨率屏幕上会有问题,cefsharp会显示黑边,虽然可以解决,但始终不是很好的感觉。演示界面如下:
后端API
Nancy(https://github.com/NancyFx/Nancy)是一种web后端框架,现在已经不再维护,但是功能应该说已经很完善了,当然也可以使用微软WebApi来实现
1 2 3 4 5 6 7 8 9 10 11 12 | void InitWeb() { var hostConfigs = new HostConfiguration { UrlReservations = new UrlReservations() { CreateAutomatically = true }, MaximumConnectionCount = 1 }; Uri uri = new Uri( "http://localhost:8888" ); var host = new NancyHost(hostConfigs, uri); host.Start(); } |
给nancy添加静态页面路径
1 2 3 4 5 6 7 8 9 | public class Bootstrapper : DefaultNancyBootstrapper { protected override void ConfigureConventions(NancyConventions nancyConventions) { base .ConfigureConventions(nancyConventions); nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory( "" , "/web" )); //nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Scripts", "/Scripts")); } } |
添加api响应函数
1 2 3 4 5 6 7 8 | public class HomeModule : NancyModule { public HomeModule() { Get( "/" , x => "Hello World!" ); } } |
至此,后端api基本完成了,额外功能可以自行添加,这里只做个演示
前端网页显示
这里使用CefSharp,也就是谷歌浏览器内核的封装,也可以用自带的IE内核,但是考虑对前端框架,比如vue这些的支持,还是谷歌内核好一点,除了dll有点大(是特别大,最新版120M!),在WPF添加浏览器。注意需要设置工程为X64/X86,否则会报错。
1 2 3 | <Grid> <cefSharp:ChromiumWebBrowser Address= "http://localhost:8888" Name= "chrome" /> </Grid> |
好了,然后F5运行即可。
本文只是给出了一个大致的结构思路,算是完成了上篇博客的想法,如果公司没有专业的桌面端开发,可以让WEB顶上(压榨)!同时也给出在GITHUB上找到的另一个用web做前端的库:https://github.com/NeutroniumCore/Neutronium ,这个库是用WPF的做后端,直接和网页交互,看上去还不错的感觉,有兴趣的可以试一试。
源码:点我下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?