回《【开源】EFW框架系列文章索引》       

EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA

EFW框架实例源代码下载:http://pan.baidu.com/s/1o6MAKCa

      前言:前面几章讲解了开发一个Web系统的完整目录结构与界面开发框架JqueryEasyUI,接下来几章讲解开发Winform系统的完整目录结构与界面开发的相关控件。开发Winform系统又分为两种类型,C/S模式和C/S/S模式;其中C/S/S模式的中间层在EFW框架中使用WCF作为中间件;

本文要点:

1.常见三种系统类型介绍

2.Winform系统目录结构整体说明

3.C/S系统的目录结构及调试方法

4.C/S/S系统的目录结构及调试方法

1.常见三种系统类型介绍:

1)C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或 SQL Server。客户端需要安装专用的客户端软件。

2)B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如FireFox或IE,服务器安装Oracle或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。

3)C/S/S是三层体系结构,是在C/S客户端与数据库之间加入一个“中间层”,也叫“中间件”,中间层包括业务逻辑层与数据访问层,有WcfController、ObjectModel、Dao、Entity;

三种类型在程序设计上都可以按照三层结构来实现,程序上的三层在不同环境中运行而形成上面三种类型,比如:C/S类型就是程序三层都运行在客户机上的,而C/S/S类型界面层运行在客户机上,而其他的逻辑层和数据访问层都运行在中间件服务器上;

程序三层结构的优点,更能适用企业系统日益增长的复杂度和灵活性,分层设计遵循高内聚、低耦合原则,实现扩展、维护和重用的要求,可以大大提高开发效率。

2.Winform系统目录结构说明

如上图Winform系统的目录结构,两种类型的区别在于C/S/S解决方案中多了一个WCF服务主机的程序,其他的都差不多,配置文件都在Config目录,界面层代码在Books.Winform项目,逻辑层代码在Books项目;可以说两种类型共用界面代码和逻辑代码,只是在控制器上前者用WinController,后用wcfController;wcfController控制器又分为两个代码文件bookwcfclientController.cs和bookWcfController.cs分别放在Books.Winform项目中和Books项目中;两个文件再程序运行时通过WCF服务进行通讯;虽然两种类型都是在一个解决方案中编写代码,但是程序的安装和部署也是有区别的,C/S类型所有代码都是都是在客户端运行的;而C/S/S类型Books.Winform项目运行在客户端,而Books项目运行在WCF服务主机上,WCF服务主机是部署在服务器上的;

3.C/S类型Winform系统项目结构和调试方法

1)、EFWWin.exe:客户端启动程序     

说明: 框架中的登录、主界面和基础功能都封装在此程序中

依赖项:无

2)、Books.Winform:界面层

说明: 1. 界面文件都放置在此项目

依赖项:EFWCoreLib、DevComponents.DotNetBar2、Books

3)、Books:逻辑层

说明: 1.逻辑层代码都放在此项目,包括Controller、ObjectModel、Dao和Entity

依赖项:  EFWCoreLib、企业库EntLib

程序的调试方法:

如上图,我们通过调试的方法搞清楚界面表格显示数据的过程。把EFWWin设为启动程序,F5运行程序,登录进入主界面,点击菜单打开界面表格控件默认显示书籍数据,在传统的做法是在界面代码中的构造函数或者frm_Load()事件中编写加载数据的代码。而使用EFW框架中的控制器的话做法就不一样了,程序的入口不是从上述两种方式中开始,而是从控制器重写的Init()方法中进入;调用获取数据的方法GetBooks(),调用BookDao获取DataTable数据,再通过接口绑定到界面的表格控件上显示数据;

4.C/S/S类型WCF系统项目结构和调试方法

1)、EFWWin.exe:客户端启动程序     

说明: 框架中的登录、主界面和基础功能都封装在此程序中

依赖项:无

2)、WCF服务主机.exe:WCF中间件启动程序      

说明:WCF宿主程序,逻辑层项目在此程序中运行

依赖项:无

3)、Books.Winform:界面层

说明: 1. 界面文件都放置在此项目 2.WCF项目还有wcfclientController代码文件

依赖项:EFWCoreLib、DevComponents.DotNetBar2、Books

4)、Books:逻辑层

说明: 1.逻辑层代码都放在此项目,包括Controller、ObjectModel、Dao和Entity

依赖项:  EFWCoreLib、企业库EntLib

程序调试方法:

如上图,调试WCF程序需要启动两个程序EFWWin和WCFHosting,在VS中启动WCFHosting,点击启动WCF服务,再在Out目录中双击运行EFWWin.exe程序,接着登录进入主界面点击菜单打开界面,断点进入bookwcfclientController中的Init(),再通过GetBooks()方法向WCF中间件发送请求,断点进入bookWcfController中的GetBooks(),调用BookDao获取DataTable数据,然后转从Json数据返回bookwcfclientController中,将WCF返回的Json反序列化为DataTable显示在表格控件上;

二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法的更多相关文章

  1. 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  2. 二十一、【.Net开源框架】EFW框架Web前端开发之目录结构和使用FireBug调试方法

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu. ...

  3. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  4. 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  5. 二十九、EFW框架开发的系统支持SaaS模式和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  6. 二十四、V4L2框架主要结构体分析和虚拟摄像头驱动编写

    一.V4L2框架主要结构体分析 V4L2(video for linux version 2),是内核中视频设备的驱动框架,为上层访问视频设备提供统一接口. V4L2整体框架如下图: 图中主要包括两层 ...

  7. 二十四、CI框架之URL辅助函数

    一.控制器代码如下: 二.view的显示代码中,关于路径,我们可以用另外一种方法来写, 如: "/CodeIgniter-3.1.10/index.php/welcome/add" ...

  8. 【开源EFW框架】框架中自定义控件GridBoxCard使用实例说明

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  9. WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?

    原文:WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的? 服务端只有抛出FaultException异常才能被正常地序列化成Fault消息,并实现向客户 ...

随机推荐

  1. intellij自动缩进排版

    用鼠标选中需要缩进的代码块,然后输入命令 ctrl+alt+i ref: http://stackoverflow.com/questions/12264127/how-to-reindent-lin ...

  2. android mvvm初探

    目前google的databinding library还处在rc版,其中编译器发挥了主要作用.目前也只是在android studio开发环境中支持. mvvm能够大大降低模块间的耦合度,在开发过程 ...

  3. Kafka重复消费和丢失数据研究

    Kafka重复消费原因 底层根本原因:已经消费了数据,但是offset没提交. 原因1:强行kill线程,导致消费后的数据,offset没有提交. 原因2:设置offset为自动提交,关闭kafka时 ...

  4. Leetcode 67 Add Binary 大数加法+字符串处理

    题意:两个二进制数相加,大数加法的变形 大数加法流程: 1.倒置两个大数,这一步能使所有大数对齐 2.逐位相加,同时进位 3.倒置两个大数的和作为输出 class Solution { public: ...

  5. cocos2d-x 2.x版本接入bugly的总结

    最开始项目使用的是自己DIY的很简陋的上报系统,后来改成google breakpad来上报,发现其实都做的不太理想,游戏引擎因为版本历史问题存在一些崩溃问题.后来3.x接入了bugly,我这边抽了几 ...

  6. 阿里云产品介绍(二):云服务器ECS的孪生兄弟们

    上一篇介绍的云服务器ECS,是阿里云最基础的产品,也是每一个云计算厂商最基础的产品,俗称爆款.除了标准的云服务器,阿里云也不停的在推出面向特殊业务场地的云服务器,可以说是ECS的孪生兄弟们. 这一篇就 ...

  7. netstat(转载)

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  8. ListView实现Item局部刷新

     对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可. 但是博主在做公司项目的时候,有个下载模块,因为可 ...

  9. 安装Weblogic12.1.3时遇到jre1.7.0_71不是有效的 JDK

    解决方案:把fmw_12.1.3.0.0_wls.jar放到%JAVA_HOME%\bin目录下,然后执行java -jar fmw_12.1.3.0.0_wls.jar就能安装了.

  10. Hermes实时检索分析平台

    一.序言 随着TDW的发展,公司在大数据离线分析方面已经具备了行业领先的能力.但是,很多应用场景往往要求在数秒内完成对几亿.几十亿甚至几百上千亿的数据分析,从而达到不影响用户体验的目的.如何能够及时有 ...