用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的做后端,直接和网页交互,看上去还不错的感觉,有兴趣的可以试一试。

源码:点我下载

posted @   大萝卜卜  阅读(2357)  评论(1编辑  收藏  举报
编辑推荐:
· 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,谁才是开发者新宠?
点击右上角即可分享
微信分享提示