用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的做后端,直接和網頁交互,看上去還不錯的感覺,有興趣的可以試一試。

源碼:點我下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM