回《【开源】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. 《Web 开发基础》专题系列

      说在前头     Web的重要性我想不必我多说了,写这篇文章的目的主要是想分享一些我学习Web前端开发的知识积累,其中以JavaScript为主,比较适合新人看,也欢迎大牛们多多留言提提意见.   ...

  2. iframe 使用

    iframe框架中的页面与主页面之间的通信方式根据iframe中src属性是同域链接还是跨域链接,有明显不同的通信方式,同域下的数据交换和DOM元素互访就简单的多了,而跨域的则需要一些巧妙的方式来实现 ...

  3. 实测可用的免费STUN服务器!

    实测可用的免费STUN服务器!     以实际ping延迟排序: stun.voipbuster.com 287ms stun.wirlab.net 320ms s1.taraba.net       ...

  4. android: 播放视频

    播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView 类来实现的.这个 类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器. VideoView 的用法和 ...

  5. Top 20 Java Libries Used by Github's Most Popular Java Projects

    Top 20 Java Libries Used by Github's Most Popular Java Projects:

  6. 關於imagick不得不說的一些事

    PHP建圖通常都用GD庫,因為是內置的不需要在服務器上額外安裝插件,所以用起來比較省心,但是如果你的程序主要的功能就是處理圖像,那麼就不建議用GD了,因為GD不但低效能而且能力也比較弱,佔用的系統資源 ...

  7. 转:XBMC源代码分析

    1:整体结构以及编译方法 XBMC(全称是XBOX Media Center)是一个开源的媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0 ...

  8. c# 字体安装

    [DllImport("kernel32.dll", SetLastError = true)] static extern int WriteProfileString(stri ...

  9. Android源码分析-全面理解Context

    前言 Context在android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像 ...

  10. CSS计数器的趣味时光

    CSS计数器是“啊太好了,竟不知道CSS可以做这啊”这类非常有趣的众多特性之一.简言之,用CSS使你持续某增加某个量,而无需JavaScript. 简单计数器 我们从这个简单的分页示例开始: 你见到的 ...