Web表单来的WinForms表单、Web、WinForms

2023-09-03 01:19:38 作者:杀生予夺

我是什么,我会考虑一个非常有经验的Web开发人员,不要说程序员一般。一个领域我从来没有认真地搬进是的WinForms开发。可能有人推荐一些资源将帮助我逐渐熟悉的WinForms?许多我发现的资源是不够理想的,因为它们要么迎合了太多对初学者还是他们缺乏良好的软件设计原则。

I am what I would consider a very experienced web developer, not to mention programmer in general. One area I have never seriously moved into is winforms development. Could someone recommend some resources that would be assist me in getting familiar with winforms? Many of the resources I have found are less than desirable in that they either cater too much towards beginners or they lack good software design principles.

推荐答案

其实,从网络背景的可能会帮你写胖客户端软件(的WinForms或WPF,我能想到的原因是多方面的,继续在WinForms的工作) ,因为很多的winform发展pittfalls是根本不可能在网络环境中(如保持联系单位 - 的 - 工作抓着[大量的各种资源/相互作用和一般的开放)。

Actually, coming from a web background will probably help you write thick-client software (WinForms or WPF; I can think of many reasons to continue work on WinForms), because many of the pittfalls of winform development are simply not possible in a web environment (such as keeping connections open between units-of-work/interactions and in general holding on to [a large number of] various resources).

一些提示:

在大力应用的顾虑/单责任理念分离,并保持你的表单code薄如就可以了。 自动化无聊的东西,如验证,数据绑定等,尽可能多的,你可以。 尝试实现良好的presentation模式,如MVP,看东西像棱镜从P&放,P的家伙在微软。该 presentation模式维基由Jeremy D.米勒包含了一些宝石已经在这一领域 让你的心在UI风格(页状,MDI,标签等),并尝试坚持下去。拿出上时打开和关闭的观点,当把哪些在一个主的窗口,而不是弹出窗口的政策;这可以提供新的自由度的网页开发者并不总是熟悉。 Vigorously apply separation of concerns/single responsibility concepts and keep your "form code" as thin as you can. Automate boring stuff like validations, data binding, etc, as much as you can. Try to implement good presentation patterns like MVP, look at stuff like Prism from the P&P guys at Microsoft. The presentation patterns wiki by Jeremy D. Miller contains some gems already in this area. make up your mind on the UI style (page-like, MDI, tabbed, etc) and try to stick with it. Come up with a policy on when to open and close views and when to put which ones in a "main" window as opposed to popups; this can offer new degrees of freedom that web devs are not always familiar with.