plain framework的实际应用和扩展】的更多相关文章

首先在这里庆祝香港回归祖国的怀抱25周年,想起那年还是一个小学生戴着红领巾和胸章激动不已,实现祖国的统一是每个中华儿女从小的梦想!趁着这欢庆的日子,突然想要写些什么,其实最近也在做一些事,由于工作繁忙加上自身的懒惰,因此对于自己所维护的这个框架感觉有些疏远.但我还是没有忘记8年前,当初实现这个框架的激情和梦想,在这里我用一个具体的例子来看看PF框架到底能做些什么. 例子 这次的选择是以一个实际运营的项目做测试,其实我在以前的文章中也提到过这个应用,也许大家都并不陌生,它就是现在还比较火爆的剑侠3…
上次介绍了一下plain framework的基础相关资料,今天该框架正式开源发布.项目的地址托管于github上,我相信大多数朋友都应该知道.今天要介绍的是该框架的目录基本结构,以及分别在linux以及windows平台上安装的例子.为了让初学或者技术不是太扎实的朋友也能快速上手,我在这里一步步从开发环境的搭建讲述到第一个比较完整的示例(网关服务器),每一步都是今日从空白的系统开始及时操作,由简入深,如果大家不太明白请到交流群询问. 更新日志 2015年1月10日 更新lnmp安装脚本,兼容最…
程序设计其实对程序开发者来说十分重要,但是在工作中往往我们却忽略了这一块,因为我们所用的都是现有的模式.一个设计模式的好坏,往往能够体现出程序的专业性,还有整个项目的可持续性.这就是为什么有些公司,在经历了若干年后忽然重写整套代码的原因,因为他们会发现在越来越多的需求的情况下,以前那些设计模式完全不能满足了,或者说程序的复杂度和维护成本实在太高.最近我又看到了一个公司的项目设计,文档中写的还算优秀,可是整体的框架设计总觉得还有差强人意.那么我们又该怎样来设计我们的程序,怎么减少维护代码的成本,怎…
模块 总述 基础 数据库 引擎 事件 文件 网络 性能 脚本 系统 工具 总述 上图为plain framework(简称简约框架)所有的模块,包括基础.数据库.引擎.事件.文件.网络.性能.脚本.系统.工具模块,各个模块的详细介绍请看以下的独立说明. 基础模块 基础模块提供了基本的操作,包括时间.容器.字符串.日志.输入/输出流. 数据库模块 数据库模块提供了基本的数据操作接口,提供了查询以及结果集获取的方法. 引擎模块 引擎模块作为整个框架的核心,具有举足轻重的地位,我们的应用也是在引擎的扩…
简介 简介 能做什么? LINUX WINDOWS 简介 简约框架(plain framework)是一款基于C/C++开发的,跨平台(windows/linux)应用的基础框架,开发者可以利用此框架快速的开发出需要的系统应用,如通信服务器,游戏服务器/客户端等的核心. 能做什么? 框架集成了数据库的操作.脚本的操作(lua).线程的操作.网络的封装,丰富的的接口使得能够满足绝大多数的应用开发.该框架主要针对网络应用,特别是游戏开发(服务端/客户端). 你也可以扩展框架以便实现更多的功能. 如果…
任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的时候需要考了全面,否则会导致资源上的浪费和占用,甚至造成资源不足而终止.就像任何一个投资项目一样,设计的不好,往往会导致人力资源的浪费,如果在项目进程中达不到预期的效果,这个项目生命周期就会缩短. 1.项目管理器设计 为什么要使用到项目管理器?如果这点都不明确,那么这样的功能需求是无效的,也就是说不…
PF由于各种因素迟迟不能更新,此次更新主要是更新了以往和上个版本出现的内存问题,该版本较为稳定,如果有用到的朋友请更新至此版本. PF 1.0.4 修复1.0.0.3更新后产生的内存问题,可能导致网络数据错误 全面修复PF核心的内存问题 优化部分代码风格 PF商业版核心人员招募 开篇语 我们没有大神,只有解决问题的人. 我们没有强悍的技术,只有一颗向往简单的心. 我们没有惊人的理论,只有一堆不可思议的妄想. 我们不需要复杂,只需要够简洁. 我们不需要固定的思维,只需要你能想得到. 核心成员资格需…
有些东西总是姗姗来迟,就好比这新年的钟声,我们盼望着新年同时也不太旧的一年过去.每当这个时候,我们都会总结一下在过去的一年中我们收获了什么,再计划新的一年我们要实现什么.PF并不是一个十分优秀的框架,可以说这只是出于作者们对自己技术的总结.本次版本比我计划的要晚,一方面是因为新年的原因,另一方面又是工作的原因,诚然这些都只不过是为推卸责任的借口,而这责任却是对自己的.再多的话语,只能留待来年,本次更新比较匆忙,希望有用到的朋友可以反馈BUG到issue上,让我能及时跟进.同时祝大家在新的一年:幸…
网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但是在这里只讲解最本质的概念,而没有详细说明代码,如果有兴趣的不妨先看了这部分再去看下代码,一切或许会豁然开朗. 网络流 如果你不知道计算机中流数据模型的定义,那么你就可以试想一下河流,有着固定起点和终点的河流.将流水从某一个地方送向另一个地方的通道,我们现实中一般叫做渠道,这种渠道在计算机之间就是网…
在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而对于一个程序来说又经历了一段重复造轮子的过程.在游戏开发领域,我介入的时间并不太长,大约三年时间.抱着对于游戏的热爱和激情,在这几年时间里也是一个苦苦摸索的过程.我们国人有着这么一个通病,那就是所谓的“闭关自守”,我发现有些开发者是拥有了一套代码之后便利用这套代码可以玩转整个游戏界.我能了解这些朋友…
由于个别因素,该框架的文档没有及时的更新到博客上,但是离线的文档已经完成.本次更新对框架来说显得比较重要,因为在文档的编写过程中经过再次的阅读代码修复了不少错误,最主要的是统一了整个框架的标准风格.对于在跨平台的编译上本次会为大家特别解说一下,因为有些朋友可能对C的标准不熟悉之下走了许多的弯路.再次感谢对该框架有兴趣的朋友们的支持与理解,同时也希望有梦想的同仁能够加入. 一.版本更新 1. 核心更新 本次的框架核心更新时间为2014年10月29日10点,核心修复了一些严重错误以及统一了整体代码的…
代码风格 介绍 介绍 框架自身采用了google的C++风格,作者也鼓励在你的应用中使用此风格,有关此风格你可以查阅相关资料了解.下面是一段plain framework中的代码,以便大家参考: 你可以在此处下载到本项目使用的 风格指南: 链接:http://pan.baidu.com/s/1bneYgI7 密码:0ox1 base/global.h /** * PLAIN FRAMEWORK ( https://github.com/viticm/plainframework ) * $Id…
在"MEF(Managed Extensibility Framework)使用全部扩展组件"中,客户端应用程序调用了所有的扩展组件,而且如果有新的扩展组件加入,必须先关闭程序,再重新启动才可以调用所有组件. 本篇体验使用MEF的ExportMetadata特性,有选择性地使用某些扩展组件,使用Lazy<>,让客户端程序延迟动态加载组件,即使不关闭应用程序,也能调用所有组件.   ● StudentMEF.Lib, 类库,包含接口IStudent.cs ● StudentM…
4.1创建测试库 Robot Framework的实际测试功能由测试库提供.有许多现有的库,其中一些甚至与核心框架捆绑在一起,但仍然经常需要创建新的库.这个任务并不复杂,因为正如本章所示,Robot Framework的库API简单明了. 4.1.1简介 支持的编程语言 不同的测试库API 4.1.2创建测试库类或模块 测试库名称 为测试库提供参数 测试库范围 指定库版本 4.1.3创建静态关键字 哪些方法被视为关键字 关键字名称 关键字参数 关键字的默认值 可变数量的参数 参数类型 4.1.4…
4.2远程库接口 远程库接口提供了在运行Robot Framework本身的机器上运行测试库的方法,以及使用除本机支持的Python和Java之外的其他语言实现库的方法.对于测试库,用户远程库看起来与任何其他测试库几乎相同,使用远程库接口开发测试库也非常接近于创建普通测试库. 4.2.1简介 使用远程库API有两个主要原因: 与运行Robot Framework的机器不同,可以在不同的机器上安装实际库.这为分布式测试提供了有趣的可能性 可以使用支持XML-RPC协议的任何语言来实现测试库 .Ro…
每天对着不同的计划,多多少少有一种无形的压力.特别是对技术不好的我来说,过程中遇到的问题实在不少,时常纠结良久.时间慢慢流逝,最后虽然感觉有些不足,但是也不至于差强人意.商业版的PF核心已经升级到1.0.5版本,增添和完善了许多功能.核心主要完善了网络模块.脚本模块.文件模块.引擎模块.缓存模块等等,并制作了基本的场景插件和AI插件.未来的PF将支持更多的功能,将安装和使用更加的自动化,执行一个脚本就能完成许多不必要的步骤.所以未来的脚本工具是一个必须完成的功能,在此我们将迎来一个个热爱开源项目…
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包,它的说明有点过时了,最新版本已经改用对IQueryable<T>的扩展,而不是DbSet<T>(已经标记为弃用),所以跟我一样有隔离癖好的就可以大胆使用了.下面介绍如何批量删除.更新.查询. 批量删除 //EF原生的删除需要先取出entity然后remove context.Remove(context.Users.Firs…
4.3使用监听器接口 Robot Framework有一个侦听器接口,可用于接收有关测试执行的通知.监听器是具有某些特殊方法的类或模块,它们可以用Python和Java实现.监听器接口的示例用法包括外部测试监视器,在测试失败时发送邮件消息以及与其他系统通信. 4.3.1使用听众 使用--listener 选项从命令行使用监听器,以便将监听器的名称作为参数提供给它.侦听器名称来自实现侦听器接口的类或模块的名称,类似于从实现它们的类获取测试库名称.指定的侦听器必须位于导入导入时搜索测试库的同一模块搜…
在互联网的发展中,资源的整理一般成了发布软件应用的迫在眉睫的一件事情,不经打包的资源往往容易暴露而且众多的文件使得拷贝等待时间变长.在这种情况下,一种应用便诞生了,其起源是源自压缩软件,这便是我们今天要介绍的打包插件. resources package 1.魔兽世界 2.天龙八部 \ 3.剑侠情缘三 4.笑傲江湖 5.刀剑2OL PAK SOURCE PAK SIMPLE TUTORIALS 图例 pak 数据包简介 解释pak数据包一般用在资源打包加密上,也就是把许多文件塞入一个文件内并压缩…
许可 介绍 Apache2 License 介绍 使用非常友好的阿帕奇2许可协议,你可以应用到你想用的任何应用上,如需修改源码,请保留原作者信息. Apache2 License Apache License Version http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION . Definitions. "License" shall mean the…
简明教程 简单的例子 实现代码 简单的例子 如果你已经下载好整个框架的源码,那么你可以在这里找到应用的例子: plainframework/applications/pf_simple 如果你在windows上工作,可以使用vs2008以上版本打开pf_simple/scripts/pf_simple.vc9.sln进行编译,如果你在linux平台下则使用cmake进行编译: cd plainframework/applications/pf_simple #进入示例的目录 cmake ./ m…
E文好的可以直接看https://github.com/loresoft/EntityFramework.Extended 也可以在nuget上直接安装这个包 1.先更新VS的NuGet版本http://docs.nuget.org/docs/start-here/installing-nuget 2.修改默认地址: Options => Package Manager => Generalhttp://go.microsoft.com/fwlink/?LinkID=206669 3.安装包…
这个Entity Framework扩展完全支持EF 5.0/6.0,项目地址 https://github.com/loresoft/EntityFramework.Extended,这个库支持批量更新,删除.查询结果缓存和审计日志.这个扩展对于每次批量操纵只生成一条sql语句,而不会像EntityFramework供给的原生办法那样批量N条数据就要生成N条sql语句. 园子里也有了一个详细的介绍<Entity Framework Extended Library (EF扩展类库,支持批量更新…
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询性能. 举一个大家最常用功能 “分页” 功能.先贴一段代码. private static IEnumerable<OrderModel> FindPagerOrders(int pageSize, int pageIndex, out int totalCount) { using (var d…
前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据. LINQ提Entity Framework技术系列之7:LINQ to Entities供了丰富的类似SQL的查询语法,功能强大且容易上手.下图汇总展示了LINQ技术的官方实现集合: 图1官方LINQ实现汇总图 正 如上图所示,LINQ to Entities 是LINQ技术在实体对象模型中的一种实现…
一.创建Code First模型 1.创建工程,这里我使用的是以.NET 4.0为目标的实体Web应用程序 2.安装Entity Framework 确保已安装NuGet,选择NuGet套件管理员>管理方案的NuGet套件,搜索并安装Entity Framework, 这时,会安装最新版的Entity Framework,并应用到刚新建的工程项目中. 若之前已经安装过Entity Framework,需要将Entity Framework整合到当前项目的话,请选择 NuGet套件管理员>套件管…
一.Robot Framework框架简介         Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以用于测试声明涉及到多种技术和接口的分布式的,异构的应用系统.        测试用例位于HTML或者TSV(以tab分隔值)文件,使用在测试库中实现的关键词来在测试中运行程序.因为Robot Framework 是灵活和可扩展的,所以它很合适用于测试具有多种接口的复杂软件:用户接口,命令行,web…
先装IIS话,后面装Net Framework时候会自动注册 处理aspx和ashx等的处理扩展程序 先装Net Framework 后 装 IIS.扩展程序注册在命令:aspnet_regiis -i两个地方:第一步:开启cmd 命令窗口(用管理员账户打开)C:\Windows\System32\cmd.exe 第二步:定位到目录:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 第三步:在Vs的命令提示符程序中注册一下:aspnet_regii…
通过手工方法搭建Zend Framework的MVC框架结构.首先看一下zend framework mvc的目录结构 1. 在根目录下面创建 public ,并在 public 下创建 index.php引导文件.代码如下: <?php set_include_path("../library".PATH_SEPARATOR.get_include_path()); //设定路径 require_once 'Zend/Application.php'; //调用zend类库 $…
在开始了解LINQ to Entities之前,需要先对.NET Framework 3.5版本后对C#语言的几个扩展特性做一些阐释,这有助于我们更容易.更深刻的理解LINQ to Entities技术的原理与实现. 一.隐式实例化局部变量 .NET Framework 3.5后,实例化局部变量语法有了新的选择:使用“var”关键字隐式类型化: var user = new User(); 隐式类型化语法与Javascript语言里声明变量的语法类似,它可以一定程度上简化实例化局部变量的语法.但…