• 用WEB方式开发WPF桌面程序


      因为疫情影响,公司裁员,结束了一年多的web开发经历,重新开始做桌面,新公司用的是WPF(居然用的是winform style。。。),当然这跟本文没有关系。。。上篇博客写的用后台api和前台浏览器控件的方式来做桌面程序,这篇文章用nancy+cefsharp实现了一种方式,使用WPF的原因是因为winform在高分辨率屏幕上会有问题,cefsharp会显示黑边,虽然可以解决,但始终不是很好的感觉。演示界面如下:

    后端API

       Nancy(https://github.com/NancyFx/Nancy)是一种web后端框架,现在已经不再维护,但是功能应该说已经很完善了,当然也可以使用微软WebApi来实现

            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添加静态页面路径

        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响应函数

        public class HomeModule : NancyModule
        {
            
            public HomeModule()
            {
                Get("/", x => "Hello World!");
            }
        }
    

      至此,后端api基本完成了,额外功能可以自行添加,这里只做个演示

    前端网页显示

      这里使用CefSharp,也就是谷歌浏览器内核的封装,也可以用自带的IE内核,但是考虑对前端框架,比如vue这些的支持,还是谷歌内核好一点,除了dll有点大(是特别大,最新版120M!),在WPF添加浏览器。注意需要设置工程为X64/X86,否则会报错。

        <Grid>
            <cefSharp:ChromiumWebBrowser Address="http://localhost:8888" Name="chrome"/>
        </Grid>
    

      好了,然后F5运行即可。

      本文只是给出了一个大致的结构思路,算是完成了上篇博客的想法,如果公司没有专业的桌面端开发,可以让WEB顶上(压榨)!同时也给出在GITHUB上找到的另一个用web做前端的库:https://github.com/NeutroniumCore/Neutronium ,这个库是用WPF的做后端,直接和网页交互,看上去还不错的感觉,有兴趣的可以试一试。

    源码:点我下载

  • 相关阅读:
    python数据精度问题
    python之数学函数应用
    grep使用常用操作十五条
    python3之35个关键字详解
    Golang基础教程
    python之数据类型转换
    python随机值生成的常用方法
    losf命令详解
    python推导式与海象运算符
    即时通讯安全篇(十):IM聊天系统安全手段之通信连接层加密技术
  • 原文地址:https://www.cnblogs.com/HelliX/p/13521490.html
Copyright © 2020-2023  润新知