公司客户端使用 mfc 编写,主要使用环境在 xp 上,所以现在还是虚拟机 xp+vc6.0 开发
现在终于说通领导开始考虑 html5 来代替 mfc 写客户端了,领导让我写一封邮件来说明 html5 和 mfc 各自的优势神马的
我觉得 mfc 一点优势都没有啊,根本被 html5 碾压啊
好吧,抱怨完了,我就想问下,怎么写邮件能够让领导赶紧拍板改成 html5 ,顺便问下 html5 的优势有些什么,我对 html5 不太熟……
101
doubleflower 2016-09-06 15:50:55 +08:00
一帮没用过 MFC 的吐槽 MFC ,连 Delphi 都被碾压了还 MFC 呢, MFC 除了做出来的东西除了小点没有任何优点
|
102
murmur 2016-09-06 16:00:45 +08:00
@xjp 越牛逼的混合应用 pc 也好 移动端也好 都是有超强的 native 壳子撑着的
印象中有人跟我说过当年腾讯用 webkit 核心干掉了大家还在用的 ie8 浏览器都屌的不行不行的了 |
103
bydmm 2016-09-06 16:37:04 +08:00 1
http://nwjs.io/
我倒是知道一个方案,要看你们具体的需求了 |
104
alqaz 2016-09-06 16:42:57 +08:00 1
Qt 可以拯救你,直接 h5,跨度太大,要么要新找人,要么调试肯定会掉各种坑, Qt 比 MFC 方便,而且比轮子都是现成的。
|
105
Chrisplus 2016-09-06 16:55:04 +08:00
孰优孰劣要看具体业务需求
你这个需求(类似于 xx 管理系统)看起来 MFC 还更合适一点 |
106
binux 2016-09-06 17:11:18 +08:00 2
这里一大堆人根本没搞懂桌面客户端用 HTML5 是什么意思。还兼容性,没法调用底层呢。。。
在桌面客户端用 HTML5 又不是说让你用本地浏览器打开应用,而是应用嵌入一个浏览器,使用 HTML5 绘制界面。 |
109
sgissb1 2016-09-06 17:23:39 +08:00
小伙,一看就是哥们刚出道没多久,或者两者都不是很熟悉的( mfc 或 h5 )。
我对 mfc 和 h5 也不是很熟悉,但对 mfc 熟很多,因为我是 c++(偶尔写 c )。 至于 mfc 和 h5 都是各有千秋的,没有哪个好与坏。 mfc 最大的败笔就是 M$当年为了愚化程序员计划的不周全(当年 M$有一大波愚化程序员计划,和现如今绝大部分框架可以吃遍全端:手机、平板、 PC ,有一定的异曲同工之妙。) 由于当年 M$为了简化开发,所以倒腾出一大堆东西,最为熟悉和当年最容易上手的还是 MFC 。但由于后期的臃肿,以及在 windows 下写界面代价太高,所以一部分写界面的人转了 directUI(一种概念),另一部分使用 windows api 的人转为各种库( boost 、 stl ,以及直接调用 win32 api 等)。 现如今, mfc 开发一个 demo 或者开发一个要求不高的应用还是很好用的,尤其是需要用到和底层或偏底层打交道的。 而对于崛起的 h5 来说,他只是一个标记性语言而已,和 mfc 都不是一个东西好不好? h5 的同类型的东西是: c,c++,java,python 等(属于语言)。 h5 的开发周期也很短,只要浏览器支持,性能扛得住,很快就能做出一个用 c,c++甚至 java 需要开发很久的一个通用功能,并且在界面展现方面, h5 会比其他几种语言好得多。 正所谓小伙,当你拿 h5 和 mfc 来比较的时候,就注定你两个都不熟(或者不懂,一个是库,一个是语言)。 另外这两玩意分工也不同,如何比。或者哥几个用 mfc 的工程写个和底层打叫道,你用 h5 写个试试看? |
111
zhqy 2016-09-06 17:35:35 +08:00
经过一番调研,你会选用 nw.js ,然而 nw 的坑太多了。于是转战 electron , electron 真是好, api 完备模型清晰,再经历了 3 个月没日没夜的开发之后项目终于可以打包发布了,然后你发现,卧槽 electron 不支持 xp 。
呵呵呵呵呵。 |
112
wshcdr 2016-09-06 17:54:05 +08:00
MFC 和 H5 完全是两个方向,好吧。再说了 VS2015 还是继续支持 MFC 的。
|
114
zjqzxc 2016-09-06 20:02:59 +08:00
|
116
cosven 2016-09-06 22:15:14 +08:00
一不小心就会做得卡的不要不要的
|
117
garrydzeng 2016-09-07 01:55:36 +08:00
@harry890829 去试试 electron 这个壳, visual studio code 就是基于它的,似乎做点优化性能也不是问题。 http://electron.atom.io
|
118
srlp 2016-09-07 03:42:40 +08:00 via iPhone
来一发 qt + qml
|
119
finian 2016-09-07 08:52:52 +08:00
12 年的时候我们用 CEF ( Chromium Embedded Framework )开发了一款桌面应用,界面用 Web 那一套技术,开发效率确实杠杠的,但是坑太多,一方面是当时 CEF 对 HTML5 的支持程度有限, V8 引擎的性能还远没有现在这么高;另一方面,基于 CEF 来封装一套桌面开发框架,在当时的技术成熟度偏低背景下,成本实在是太高了。后来项目由于种种原因胎死腹中。现在可选的框架,比较成熟的估计也就 Electron 和 NW 了吧?但 Electron 是不支持 XP 的, NW 倒是支持 XP ( NW LTS 版本),但是据说坑比 Electron 多很多。国内的有道开源了个 hex ,但是最后 commit 停留在了 14 年。
挖了个当时我们用 CEF 做的项目的一个视频: ?beta&from=s1.8-1-1.2&spm=0.0.0.0.yp3ozc |
120
finian 2016-09-07 08:55:44 +08:00
|
121
harry890829 OP @murmur 问题是根本没有底层的需求啊……
@eddiechen 抱歉,因为之前一直听说 html5 的各种优势,好多桌面应用也是这么写的,一直非常憧憬 @Zzzzzzzzz 我本来也是这种想法,现在这个 mfc 项目,无非就是 socket 收发点报文,生成写报表,还有本地 sqlite ,感觉要是改成页面形式, sqlite 也没有什么存在的意义了 @xjp 好的,我晚点会让网站组那边给我个测试 demo 进行测试 @youxiachai 抱歉我之前描述可能有问题,本意就是用网站来解决复杂的界面绘制 @mlhorizon 难道是在给自己挖坑么 @gaodeng 太感谢了,我确实需要这种例子,不过公司前辈也和我提过,安装包肯定是几十 m 以上的,没有办法,目前我这边 mfc 项目,释放开始 29mb ,安装包 9mb |
123
harry890829 OP @doubleflower mfc 呢,可能我用得少吧, mfc 的有点算是手册全,问题解决迅速,从底层到界面显示自己全都完成,不需要另外支持,但是界面部分真的太恶心了……
@bydmm 多谢提供,我拿小本本都记下来 @alqaz 怎么说呢,公司自己有网站组,这样相当于把界面全都交出去了,不需要我自己学 @Chrisplus 业务需求相关,这个两边分析能更详细一点么? @binux 嗯嗯,其实我就是这个意思……不过因为没有结合使用过,所以不知道具体实现如何? @sgissb1 哎,你说的这些吧……也许是我表达有问题,我不是把 mfc 和 h5 比较,而是希望把界面的绘制全部交给 h5 (这里说的也不准确,交给网页),我说的比较,是 mfc 在绘制界面和 h5 (同上)比较,并且整体项目并不会收到影响 @zhqy 感觉这是一个梗…… @wshcdr 支持是支持,我现在不是分析 mfc 和 h5 ,而是在我现有需求中,把 mfc 编写界面替换成 h5 (网页)是否可行,而不是比较这两个东西的好坏 @Radeon @zjqzxc @xiaoc19 谢谢几位,我去看看这个方案怎么操作 @cosven 卡的不要不要的,是因为壳?还是网页本身的原因呢…… @garrydzeng 嗯嗯,麻烦了 @srlp qml 以前确实没有听说过,晚点我去看看 @finian 多谢,公司禁止了视频,晚点我回家看看吧 |
124
zjqzxc 2016-09-07 09:30:17 +08:00
@xiaoc19 我就是用的离线安装包
@murmur 是 N 卡,装的时候手动把.net 给取消掉,会导致那个 GeForce Experience 安装失败,但驱动本身没事儿。不取消的时候会在这一步卡特别长时间,后来就吸取教训了,只要不是必须要用,或者睡觉前,绝对不装.net 4 。后来就放弃 Win7 了。 |
125
wy315700 2016-09-07 09:31:58 +08:00
原生应用还是用 WTL 吧
|
126
zhouzm 2016-09-07 09:53:20 +08:00 2
技术上肯定是完全可行的,性能上也不用太担心,如果你需要实现的界面效果,使用桌面浏览器会卡的话,那用 mfc 去实现同样效果并且很流畅的代价肯定不低。
你现在需要做的是,仔细研究一下 nw.js lts ,看看它提供的 api 是否能满足你要实现的桌面客户端的底层功能需求,如果能满足,那么接下来就可以尝试直接用 nw.js 了,这条路要省事儿得多。 如果 nw.js 的 api 无法满足你的需求,那么目前唯一能做的选择就是自己使用 cef 内核实现一个类似于 nw.js 的开发框架,具体怎么实现可以参考一下 cef 提供的 cefclient 例子,并不是很难,关键点就是解决好原生代码如何与 v8 引擎交互。 如果你的客户端只是需要把界面做得华丽好看,交互性不强,那么实现起来会比较容易,花的时间也少,只要模仿 nw.js 实现几个必要的 api 接口,界面 html 部分交给你公司的网站组,客户端的其他功能代码全部用 mfc 实现。 如果客户端的交互性要求很高,交互方式更偏向于传统桌面程序,那么你要做的工作就多了,并且难度也不小,你需要自己用 mfc 实现一个类似于 nw.js/Electron 的开发框架,在 SDK 的选择上,你只能选择 cef 3.2623.1401 build 版本(因为之后的版本都不再支持 xp) |
127
harry890829 OP @zhouzm 太感谢了,我晚点和网站组商量一下,看看是否能够出个 demo 进行测试
|
128
adslxyz 2016-09-07 10:41:46 +08:00
主要使用环境在 xp 上,就不要想那么多了,老老实实用 mfc 写,别自己找麻烦。
|
129
cosven 2016-09-07 20:58:40 +08:00
如果对 HTML5 不是很熟的话,网页写出来可能存在性能问题。
举个例子:比如写了个 DOM 元素的动画,在浏览器中可能不会卡,但是如果把这个网页放在你的壳里面去,那这个动画就可能会有点卡,甚至很卡。 |