`
achun
  • 浏览: 315446 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

我的WEB设计契约--数据库篇

阅读更多

WEB开发中数据库是一个重头工作.

良好的设计对开发工作至关重要.

我一直在寻求一种简洁的,规范化的,可代码流程化的设计.

今天终于让我摸索到了.

数据库的表这样设计

  1. 表名,字段名全部小写
  2. 表b的字段b1数据如果来自表a的字段a1,这样命名b1:a_a1 ,目的为提交数据合法性校验提供便捷
  3. 如果数据库支持备注coment.那就把校验规则直接写入coment ,至于写法,看个人的习惯了,当然这个规则最终是要导出为不同的语言校验代码的.

数据库 数据 提交格式(数据以关联数组的形式提供)这样定义

  1. 关联数组的key表示字段,value表示相关参数
  2. key小写 为SELECT/UPDATE的WHERE条件
  3. key大写 为UPDATE/INSERT的field值对定义
  4. key混写SELECT返回字段,实际工作当中,我是用特殊的key==*来处理的,这样方便
  5. key==""为扩展的SQL语句,如limit,order等,当然里面还有细节的设计

要实现这个接口并不难,因为这个接口的含义很明确,可以适用常用的SQL语句请求,当然这个接口也不是万能的,比较复杂的SQL语句行为还需要特殊的处理

 

数据库操作类的接口设计

  1. 首先应该根据业务逻辑和上面的格式定义设计一个数据有效性检查前端代码,数据检查通过后
  2. 操作类根据上面的格式定义设计就可以自动的生成常用的SQL语句

业务逻辑问题(也就是接口设计说的1)

  1. 根据用户角色,设计函数名一致,内容不同的接口函数
  2. 前台提交的数据要有办法和接口函数对应的逻辑,这个简单就是一个参数(action)问题

这一点举个php的例子

if($ValidateCode){//如果验证码通过了
if($userrole==0){//根据用户角色的不同设置接口函数(action)的行为
  function query(){
  something;
  }
}
if($userrole==1){
  function query(){
  something;
  }
}
}else{
function foo(){}
}

 解释,其实对于验证码来说,完全可以统一进行验证,没有必要在action函数里进行验证,这样的话,定义action函数的时候,如果某action函数需要验证后才能执行的话,那就把这些函数定义全都包在

if($ValidateCode)//如果验证通过了

就行了,没有通过验证的话运行期就不会有对应action函数,当然错误处理是另外的事情了.

同样的道理可以根据用户角色的不同设置接口函数(action)的执行体,或者干脆有没有这个action函数.

同样的道理可以根据这种方法以不同的状态标志来定义action函数

其实这种方法也就是根据运行状态判定action 接口了 ,你可以把session中的重要状态做为判定条件


经过这样的契约,前台的action数据提交到后台后经过这些环节

  1. 前端的统一处理,比如session,cookie,检验验证码等
  2. 根据action调入相应的模块
  3. 模块根据运行状态定义action接口函数
  4. action提交数据的有效性检查,这个复杂了,看应用了
  5. 执行action接口函数

那action接口函数的内容是什么呢?当然主要的是负责如何输出以及相关的行为处理了,不过重头的数据库SQL操作却简单了.几乎把action数据完全传个数据库操作类就完事了.(当然复杂的业务总是要单独处理的)

 

估计看这篇文章的人99%的都是一头雾水.先不管看明白没有,首先会问为什么这么设计 ?

你仔细看完我的文章,回头想想,如果你参考我的方法做的话,你会发现:

我提供的是一种策略,一种契约,但绝不是一个框架库

授人以鱼 不如授之以渔

而且就算我把我的代码给你,恐怕有用的仅仅是那个数据库接口类的设计,其他的对于你的应用都没有用,因为那些都要根据业务逻辑定制书写 .用任何框架库都避免不了要写的代码.

有点框架库无用的味道

2
0
分享到:
评论
1 楼 caiceclb 2008-12-06  
参考了,谢谢

相关推荐

    java毕业设计&课设-小契约(交友互动小程序).zip

    【标题】:“java毕业设计&课设-小契约(交友互动小程序).zip”这个压缩包文件是一个关于Java编程的毕业设计或课程设计项目,它包含了一个名为“小契约”的交友互动小程序的完整开发资源。 【描述】:描述中提到,...

    通用数据库Wcf和WebApi服务

    标题中的“通用数据库Wcf和WebApi服务”指的是一个软件框架,它允许开发人员使用Entity Framework(EF)在WCF(Windows Communication Foundation)和Web API这两种不同的服务技术中快速构建数据库操作。WCF是.NET ...

    NET设计规范-.NET约定、惯用法与模式.rar

    .NET框架是微软开发的一种全面的开发平台,用于构建各种应用程序,从小型的桌面应用到大型的Web服务。在.NET开发中,遵循一定的设计规范、约定和模式是非常重要的,因为它们可以提高代码的质量、可读性、可维护性和...

    web框架net-framework1

    .NET相关的缩略词包括ASP.NET(用于构建Web应用程序)、ADO.NET(数据访问技术)、WPF(Windows Presentation Foundation,UI框架)和WCF(Windows Communication Foundation,服务通信)等。 ### Chapter 4: ADO...

    二手房交易网站初步设计-7页.pdf

    - 结合Web开发框架(如Django、Spring Boot等)构建网站后端,处理HTTP请求和数据库操作。 - 前端可以使用HTML、CSS和JavaScript,结合Bootstrap或Vue.js等库,实现用户友好的交互界面。 通过上述设计,二手房...

    搭建WCF数据库、客户端、服务端

    2. 设计数据库结构,包括表、字段和关系。 3. 使用ADO.NET或Entity Framework等数据访问技术,为WCF服务编写数据访问层代码。 接下来,我们讨论“WcfService1”。这是服务端项目,它包含WCF服务的实现。服务端的...

    基于SOA的数据库中间件的研究与设计

    ### 基于SOA的数据库中间件的研究与设计 #### 一、引言 随着信息技术的快速发展,数据库中间件技术成为了连接应用层与数据库层的重要桥梁,它能够有效地提高系统的性能、安全性和可扩展性。传统的客户端/服务器(C...

    java连接数据库课程设计汇本报告书.doc

    二是基于B/S架构,学生需开发一个Java Web应用,使用Tomcat服务器,同样实现用户验证和数据库操作,但用户通过浏览器访问。 在实验过程中,学生需要熟悉JDBC的基本步骤:加载JDBC驱动、建立数据库连接、创建...

    详解Silverlight访问SQL数据库

    在项目的Web部分,需要添加一个WCF服务,该服务将作为Silverlight应用与SQL Server数据库之间的桥梁。WCF服务将调用前面定义的存储过程,处理用户名和密码的验证逻辑。 ##### 4. 用户信息类定义 定义一个`Users`类...

    使用Java Web服务构建SOA

    Spring框架提供了一套完整的SOA解决方案,包括Spring-WS(用于创建契约优先的Web服务)和Spring-Integration(支持ESB(Enterprise Service Bus)功能)。Spring-WS基于XML Schema,允许开发者以类型安全的方式定义...

    基于接口契约的有状态Web服务用例集生成.pdf

    在实际开发过程中,为了保证有状态Web服务的质量,需要设计和执行大量测试用例来覆盖各种可能的用户交互序列。 传统的测试用例生成方法往往依赖于开发者的经验和直觉,这不仅耗时耗力,而且难以全面覆盖所有可能的...

    NetCore编码规范-ABP篇.docx

    NetCore编码规范-ABP篇 1. 引言 ABP(ASP.NET Boilerplate)是一种基于.Net Core的开源框架,旨在提供一个可扩展、模块化的基础,用于快速开发高效的企业级应用程序。本规范旨在为使用ABP框架的开发者提供一套统一...

    WCF 访问SQLServer数据库服务代码

    3. **配置服务**:在服务的配置文件(如`app.config`或`web.config`)中,我们需要指定服务的终结点和绑定。以下是一个简单的配置示例: ```xml ``` 4. **客户端调用服务**:在客户端,我们...

    ASP.NET源码——数据库访问层源码.zip

    6. 数据访问层的设计:源码可能会展示如何组织和结构化数据库访问层,例如,是否采用了服务层(Service Layer)、契约(Contracts)或接口来实现松耦合,以及如何处理异常和错误。 7. 配置管理:源码中可能包含了...

    ASP.NETWeb应用程序设计练习题

    ### ASP.NET Web应用程序设计知识点详解 #### 一、选择题解析 1. **C#的数据类型** - 正确答案: B (值类型和引用类型) - 解析: C#中的数据类型主要分为两大类:值类型和引用类型。值类型包括基本类型如int、...

    利用STP构建 Web Service(SOA)

    ### 利用STP构建 Web Service (SOA) #### 摘要 本文将通过创建一个使用SOA架构的自动添加发送者所在位置的短信发送程序,详细介绍如何通过Eclipse STP插件构建和发布Web Service,并使用Visual Studio .NET构建Web...

    我收藏的所有ado.net 的web服务资料

    10. **WSDL(Web Services Description Language)**:Web服务的接口定义语言,用于描述Web服务的公共接口和契约。 这个压缩包可能包含示例代码、教程文档、项目模板等,帮助学习者理解如何使用ADO.NET创建和使用...

    Silverlight Web Services

    设计一个页面,展示从数据库中获取的数据,并提供相应的用户交互界面。 #### 4.3 创建数据服务 最后,创建 ADO.NET 数据服务,它将作为数据源供 Silverlight 应用程序使用。这包括定义数据服务的契约、配置数据...

    C#2008实现 - 问题.设计.解决方案

    - ASP.NET是.NET框架的一部分,用于构建Web应用程序,支持多种编程模型如Web Forms、MVC和Web API。 - ASP.NET AJAX提供异步交互和用户体验改进。 9. **单元测试和调试**: - 使用` MSTest`或`NUnit`等工具进行...

    C#WCF和WEB项目接口开发实际案例

    "C# WCF和WEB项目接口开发实际案例"这个标题揭示了我们将探讨如何使用C#和WCF技术来设计和实现Web服务接口。接口在软件工程中扮演着关键角色,它定义了不同组件之间交互的规范。在Web项目中,接口常用来让客户端应用...

Global site tag (gtag.js) - Google Analytics