二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法
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前端开发之项目结构说明和调试方法的更多相关文章
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十一、【.Net开源框架】EFW框架Web前端开发之目录结构和使用FireBug调试方法
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu. ...
- 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十三、【开源】EFW框架Web前端开发之常用组件(FusionCharts图表、ReportAll报表等)
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- 二十九、EFW框架开发的系统支持SaaS模式和实现思路
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- 二十四、V4L2框架主要结构体分析和虚拟摄像头驱动编写
一.V4L2框架主要结构体分析 V4L2(video for linux version 2),是内核中视频设备的驱动框架,为上层访问视频设备提供统一接口. V4L2整体框架如下图: 图中主要包括两层 ...
- 二十四、CI框架之URL辅助函数
一.控制器代码如下: 二.view的显示代码中,关于路径,我们可以用另外一种方法来写, 如: "/CodeIgniter-3.1.10/index.php/welcome/add" ...
- 【开源EFW框架】框架中自定义控件GridBoxCard使用实例说明
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
原文:WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的? 服务端只有抛出FaultException异常才能被正常地序列化成Fault消息,并实现向客户 ...
随机推荐
- Facebook网络模拟测试工具ATC使用
Facebook在其工程博客(原文)上宣布开源移动网络测试工具Augmented Traffic Control(ATC),我迅速试用了一番,非常不错,对手游或者其他APP的调试和测试都非常有帮助,介 ...
- 【Android】线程池原理及Java简单实现
线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为: T1 创建线程时间 T2 在线程中 ...
- paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.
paip.刮刮卡砸金蛋抽奖概率算法跟核心流程. #---抽奖算法需要满足的需求如下: 1 #---抽奖核心流程 1 #---问题???更好的算法 2 #---实际使用的扩展抽奖算法(带奖品送完判断和每 ...
- js程序设计02——变量、作用域问题
首先,ECMAScript中的数据类型分为基本类型.引用类型,基本类型的访问操作是按值的.引用类型的值是保存在内存中的对象,操作对象时,实际上操作的是对象的引用,而非对象自身.“javascript高 ...
- MVC5为WebAPI添加命名空间的支持
前言 默认情况下,微软提供的MVC框架模板中,WebAPI路由是不支持Namespace参数的.这导致一些比较大型的项目,无法把WebApi分离到单独的类库中. 本文将提供解决该问题的方案. 微软官方 ...
- Category和Extension
转: http://blog.csdn.net/leikezhu1981/article/details/19091049 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C ...
- 如何编写一个PHP的C扩展
为什么要用C扩展 C是静态编译的,执行效率比PHP代码高很多.同样的运算代码,使用C来开发,性能会比PHP要提升数百倍.IO操作如CURL,因为耗时主要在IOWait上,C扩展没有明显优势. 另外C扩 ...
- Revit中将倾斜轴线显示为正交模式
Revit建模过程中有时候会遇到某些特殊的建筑不规则建筑或者其轴线视图中并非正交二是倾斜的情况,用Revit建模过程中对于倾斜的建筑不仅不符合人的视觉习惯,而且也会对后期的机电管线的布设造成困扰,稍不 ...
- angular post表单
参数文章:http://angularjs.cn/A0qF angularjs中Post使用的是json的交互方法,一般服务器还没达到这个阶段,我们可以用回传统的&参数的方法: var myA ...
- Mac OSX系统下SVN客户端SCPlugin问题
装上SCPlugin后,Checkout老是出现这种错误: Server certificate verification failed: certificate issued for a diffe ...