谈谈 ASP.NET 规划阶段的设计

十年典藏ASP.NET编程宝典:掌握.NET Web开发框架 NET框架提供了一套丰富的类库和工具,使得开发者能够快速构建出性能优秀、可扩展性强的Web应用程序。开发者可以使用ASP.NET来构建从简单的网站到复杂的Web服务。ASP.NET提供了一套丰富的标准服务器控件,这些控件可以分为几类:HTML服务器控件、Web服务器控件、以及数据控件等。HTML服务器控件基于标准的HTML标签,并提供服务器端的事件处理和数据绑定。Web服务器控件,例如GridView、DropDownList等,提供更丰富的用户界面功能和更简便的编程模型。 阅读详情
在直接进入项目的编码部分之前,需要花一点时间实际勾画出应用程序的逻辑组件,这非常重要。在我们的示例解决方案中,我们要实现解决方案的三个逻辑组件:数据库、.NET 数据访问组件和 ASP.NET 用户界面。现在,我们先勾画出每个组件的大致轮廓,讨论过程中最重要的方面,即文档化组件间的交互。 


数据库 

对于 DotNetKB 应用程序,我们需要将数据存储在三张表中:主题、问题和回答(请参阅下图)。 


图 3:主题、问题和回答表


我们需要使用存储过程,以使中间层组件也可以安全地访问数据。这里,我们只是指出:列出表名称及所有列细节、默认索引和存储过程列表的数据库文档,应该包含在一个完整的数据库设计文档中。即,文档中应该具有成功实现系统数据存储部分所需的详细信息。 

注意:如果留心的话,您可能会注意到我们未提及将专家数据存储在数据库中。只是为了使项目更加有趣(同时给我们一个机会使用直接 XML 数据存储),我们将专家信息存储在一个 XML 数据文件中。 

数据访问组件 

数据访问组件设计文档描绘与数据存储系统的交互以及与用户界面的交互的所有细节。在有些系统中,数据访问组件实际上是处理过程中各种问题的多个程序集。例如,可能会有一系列业务规则呈现在与数据存储和检索完全独立的用户界面上。在这种情况下,将业务组件与数据访问组件分开实现可能比较明智。 

在我们的示例中,实际实现的是两个单独的组件:Message 组件和 DataAccess 组件。如果在支持基于 XML 的数据的传输服务(例如 SOAP Web Service)中进行规划,这种面向消息的实现方案将会特别有成效。 

消息组件 

消息组件定义一系列用于在各图层之间传输数据的类。这些消息可以作为二进制或 XML 文本数据存在。消息图层的价值在于:保护系统的其余部分,使其独立于数据存储实现方案的具体细节,例如 SQL Server、XML 文件等。此外,通过实现消息图层而不是更复杂的“智能对象”库,我们的解决方案可以更轻松地支持那些不能同时发送数据和类级别逻辑的远程调用服务,例如 XML-SOAP。 

下面是一个消息类示例,在该示例中实现了 Topic 消息及其集合: 

Public Class Topic
    Private _ID As Integer
    Private _Title As String
    Private _Description As String

    Public Property ID() As Integer
        Get
            Return _ID
        End Get
        Set(ByVal Value As Integer)
            _ID = Value
        End Set
    End Property

    Public Property Title() As String
        Get
            Return _Title
        End Get
        Set(ByVal Value As String)
            _Title = Value
        End Set
    End Property

    Public Property Description() As String
        Get
            Return _Description
        End Get
        Set(ByVal Value As String)
            _Description = Value
        End Set
    End Property

End Class

Public Class Topics
    Inherits System.Collections.CollectionBase

    Default Public Property Item(ByVal index As Integer) As Topic
        Get
            Return CType(List(index), Topic)
        End Get
        Set(ByVal Value As Topic)
            List(index) = Value
        End Set
    End Property

    Public Function Add(ByVal s As Topic) As Integer
        Return List.Add(s)
    End Function

    Public Sub Remove(ByVal index As Integer)
        List.Remove(index)
    End Sub

End Class
 


注意:如果您已尝试过面向消息的设计,便会了解我们想要使这些消息类系列化,以便在应用程序图层之间轻松地来回发送。幸运的是,.NET 运行时知道如何进行这项操作,而无需我们做过多的工作。但是,当我们学习创建消息的文章时,我们将详细讨论 .NET 运行时如何系列化类,以及我们如何进行操作以使代码中的过程最优化。 

在后面实现消息组件和数据访问组件时,文章中将介绍此方法的细节。设计文档将包含一个由所有信息及其属性与数据类型组成的列表。现在,我们只是考虑如何使用此消息方法来封装图层间的数据传输,如何创建一种与本地方案和远程方案配合使用的常规数据服务。 

其它的数据访问组件 

定义消息类的概念后,数据访问组件可以集中精力处理与数据存储系统直接对话的细节,并以正确的消息格式返回信息。在我们的示例中,这将涉及到使用来自用户界面的请求映射 SQL Server 存储过程,并创建可返回到用户界面进行显示的消息(或消息集合)。 

例如,下面是一个数据访问组件的一部分示例代码,该组件将从数据存储中检索单个 Topic 记录,并将正确的消息格式返回到用户界面。 

Public Function GetTopicRecord(ByVal ID As Integer) As Messages.Topic
    Dim t As Messages.Topic = New Messages.Topic
    cn = New SqlConnection(secureConnectionString)
    cd = New SqlCommand("GetTopic", cn)
    cd.CommandType = CommandType.StoredProcedure
    cd.Parameters.Add("@ID", ID)
    cn.Open()
    dr = cd.ExecuteReader()
    dr.Read()
    With t
        .ID = ID
        .Title = dr("Title")
        .Description = dr("Description")
    End With
    Return t
End Function
 


设计文档将包括一系列用于处理来自用户界面的各个请求的类和方法,并含有有关调用哪个存储过程以及返回何种消息格式的详细信息。同样,我们将在后面主要介绍数据访问图层的文章中讨论此过程的细节。 

Web 用户界面 

最后,用户界面设计文档将包括完成各种方案所需的所有用户输入和显示。通常来说,用户界面文档包括界面机制的细节以及使用户界面呈现唯一性的图形设计元素。例如,配色方案、字体和总体页面设计,与用于获取搜索查询的正确数据的输入名称和输入数量一样重要。 

要使文档简洁,通常在一个与图形设计单独的文档中概要描述机制细节。这是我们将要在示例中做的工作。在后面的一篇文章中,我们将创建一个综合性用户界面文档和实现方案,详细说明每个屏幕的元素和相关操作。在另一篇文章中,我们将处理应用程序有关图形的各个方面,重点讨论作为一种外观服务的级联样式表的使用。 

下面是一个典型的用户界面描述,它涉及“主题”编辑方案。 

主题输入屏幕 

“主题”屏幕将显示所有当前主题(主题 ID 和主题名称)的一个缩略列表,在每个主题旁边还将显示一个“编辑”链接。单击“编辑”链接将会调用关联的主题记录并将其显示在一系列的输入框中。“标题”和“描述”是可编辑的,而“主题 ID”是只读的。用户可以编辑标题和描述,然后按“保存”按钮将更改写入数据存储。输入将被验证。两者都是必需的输入项,“标题”的长度限制为 30 个字符,“描述”的长度限制为 500 个字符。更新完成后,将显示一条响应消息指出已确认更新;如果更新失败,则显示一条消息指出错误状况。 

用户还可以删除现有的主题记录,方法是单击列表中的“编辑”链接,审核显示屏幕上的记录细节后,单击“删除”链接。删除完成后,将显示一条响应消息指出已确认更新;如果更新失败,则显示一条消息指出错误状况。请注意,用户不能删除与现有问题或回答相关联的主题。 

此外,用户可以完整地添加新主题记录,方法是在初始显示屏幕上单击“新建主题”链接。将显示“标题”和“描述”输入(不显示 ID 输入)并提供一个“保存”按钮。输入将被验证。两者都是必需的输入项,“标题”的长度限制为 30 个字符,“描述”的长度限制为 500 个字符。更新完成后,将显示一条响应消息指出已确认更新;如果更新失败,则显示一条消息指出错误状况。 

利用上面的叙述,您可以轻松地实现一个完整的功能屏幕。判断一个好的设计文档的方法是:它能够使读者完成工作,且不会提出额外的问题。最终的用户界面设计文档将包括应用程序中每个屏幕的此类叙述。 

小结并付诸行动 

我们简要介绍了数据库、中间层和用户界面实现方案的最终设计文档。加上体系结构和初始规划文档,它们形成了我们的完整设计包。在实际的情况中,即使是最小的系统,完成这些文档也至少需要几个小时。对于大型系统,可能需要几周甚至可能几个月的时间。有些人可能会对此有一点挫败感,但是通过事先完成这些工作,您可以在进入项目的编码阶段之前很早就了解完成解决方案面临的几乎所有主要障碍。这样可以减少编写实际代码的时间,并且还可以减少您会遇到的错误和障碍的数量。 

至此,您已经看到了一个如何创建应用程序规划的可用示例,可以开始考虑如何在您自己的工作中使用这些元素来提高项目的整体质量和生产率。有关项目规划以及规划如何影响软件质量的详细信息,请参阅 Steve McConnell 的Software Project Survival Guide。
基于MATLAB的奇异谱分析(SSA)算法详解 本文详细介绍了基于MATLAB的奇异谱分析(SSA)算法。文章首先阐述了SSA的基本概念、历史发展及其与传统信号分析方法的对比优势,指出SSA作为一种非参数、非线性时间序列分析方法,特别适合处理非平稳信号。随后详细解析了SSA算法的核心原理与数学模型,包括轨迹矩阵构建、奇异值分解、分组与重构四个关键步骤。文章还提供了完整的MATLAB实现框架和代码解析,涵盖参数检查、轨迹矩阵构建、SVD分解、分组策略和重构过程。最后,通过信号分解、去噪和预测三个应用案例展示了SSA的实际效果。 阅读详情

相关推荐

把MinerU集成到Dify

本文介绍了如何将本地部署的MinerU与Dify平台进行集成。首先需要确保Dify和MinerU在Docker环境中正常运行,并通过配置虚拟网络实现互联。然后详细说明了在Dify平台安装MinerU插件的步骤,包括从插件市场搜索安装、配置连接参数等关键操作。特别强调了要等待MinerU容器完全启动(healthy状态)后再进行Dify配置,否则会出现连接错误。通过简单的URL指向和API密钥设置,用户即可实现Dify平台与本地MinerU算力网络的对接,为后续的AI应用开发提供基础支持。

lyxerlau的博客 313

ASP.NET应用程序规划与设计(笔记)

制定基本的应用程序规划 (AP)。项目规划包含目标声明和一系列用户方案。还有其他很多有用的资料,包括需求文档、编码标准、交付进度、测试过程等。 文档化用户方案。了解处理各种用户与系统交互时,所需的数据点和函数。换句话说,编写完善的用户方案将有助于您确定完成解决方案需要实现的数据库、中间件和用户界面元素。 定义应用程序体系结构。用户界面(Web 窗体)、中间层(一

无向的风's Blog 666

泛微ecology9二次开发-附件上传-安全实践

本文深入探讨了泛微ecology9二次开发中附件上传功能的安全实践。针对原生接口的安全机制,文章提出了同源部署与服务端代理转发两大核心策略,并提供了基于Vue3和Element Plus的完整前端实现代码,重点解决了会话验证、权限控制及文件关联等关键安全问题,确保二次开发应用能安全、稳定地与ecology9系统集成。

qsc9012345的博客 532

谈谈 ASP.NET 规划阶段的设计[转贴:]

   在直接进入项目的编码部分之前,需要花一点时间实际勾画出应用程序的逻辑组件,这非常重要。在我们的示例解决方案中,我们要实现解决方案的三个逻辑组件:数据库、.NET 数据访问组件和 ASP.NET 用户界面。现在,我们先勾画出每个组件的大致轮廓,讨论过程中最重要的方面,即文档化组件间的交互。 数据库 对于 DotNetKB 应用程序,我们需要将数据存储在三张表中:主题、问题和回答(请参阅下图)。

≡≡奋斗中的猫≡≡ 1159

超越音频!STM32 SAI接口在AD7768高速ADC采集中的妙用(含PCB布局指南)

本文深入探讨了如何将STM32的SAI接口应用于AD7768高速ADC的数据采集系统,超越了其传统的音频应用范畴。文章详细解析了SAI协议与ADC时序的匹配方法,提供了从CubeMX配置、DMA数据搬运到关键PCB布局指南的完整实战方案,旨在帮助工程师实现稳定、高精度的工业级高速数据采集。

efc12345678的博客 304

电力远动入门:手把手解析IEC 60870-5-101规约的帧结构与报文交互(基于DL/T634.5101-2002)

本文深入解析IEC 60870-5-101规约的帧结构与报文交互,适用于电力远动通信系统。通过详细讲解规约的基础架构、控制域位定义及典型报文交互流程,帮助工程师快速掌握101规约的核心技术,提升电力自动化系统的调试与维护能力。

weixin_27076351的博客 245

Asp.net项目经验总结之一 设计与规划

     前段时间为学校做党委宣传部做了一个网站,从前台到后台都是独立完成的.虽然网站规模不大,功能主要是新闻的发布和管理.但是却花费了我不少时间,主要是在开发之前没有详细和严密的设计,所以在开发过程中走了不少弯路,多花了一些不必要的时间.,当然第一次独立开发整个网站,走弯路是不可避免的,关键是要认真总结,从中吸取经验进一步提高开发效率.为了更好的促使自己不断地总结,不断提高,特新建了一个分类:A

低调做人,高调做事 5333

OpenFeign, Zuul, Gateway相互不兼容的问题总结

版本 Lib Vresion spring-cloud-starter-gateway 3.1.0 spring-cloud-dependencies 2021.0.0 spring-cloud-starter-netflix-zuul 2.2.6.RELEASE spring-cloud-starter-openfeign 3.1.0 1. Zuul 与OpenFeign 一起使用的问题 错误信息 jav.

Harry的博客 4132

ASP.NET应用程序规划与设计(1)

     这是一个系列文章,在这个系列文章中我们将逐步详细介绍如何使用 Microsoft ASP.NET 和 Microsoft Visual Studio.NET 来设计、实现和部署典型的 Web 应用程序,以探讨实际应用程序创建实践中最常见的几个因素。我们不仅仅布置一些 Web 窗体,也不局限于只对后端数据库进行一些数据绑定。数据绑定和 Web 窗体布局很重要,但是有许多其他问题也非常重要.

673

中国境内及周边2839个站点的日降水量逐日降水数据集(1961-2022,0.1°/0.25°/0.5°)1、数据年份:1961-2022,日数据2、数据范围:中国境内及周边2839个站点的日降

CHM_PRE数据集基于中国境内及周边1961至今共2839个站点的日降水观测,在传统的“降水背景场+ 降水比值场”的数据集构建思路上,尝试应用月值降水约束和地形特征校正,并依据中国范围内约4万个高密度站点2015–2019年的日降水量插值后数据进行精度评价。

yushibing717的博客 2788

告别电机啸叫!手把手教你配置TMC5160的StealthChop2静音模式(附参数自整定避坑指南)

本文详细介绍了如何通过配置TMC5160的StealthChop2模式彻底消除3D打印机电机噪音。从硬件准备到参数自整定,再到高级调优与异常处理,手把手教你实现实验室级别的静音效果,提升打印质量和使用体验。

weixin_33724659的博客 487

创建一个ASP.NET web项目

做过JAVA和PHP后再看看.net,感觉都差不多,我用的vs2017,点击新建项目,选择如下 新建完成后点击运行即可查看当前项目 开始页面配置了启动页 路由器已经配置了如何访问 自己定义一个路由 新建控制器 新建视图 ...

上官hao的博客 5029

新手福利!大龙虾OpenClaw可视化管理工具来了!告别命令行,这个可视化工具让OpenClaw管理变得超简单

还在用命令行管理OpenClaw?🚀 这个跨平台可视化工具支持14+AI模型,一键切换,还能对接微信飞书钉钉等8大消息渠道,让AI助手管理变得简单直观 ✅ 暗色主题护眼舒适,Rust后端高性能低占用,新手也能轻松上手 🎯

XiaoqiangClub的博客 760

职业规划-ASP.NET开发工程师

ASP.NET工程师能够基于.NET技术框架和标准系统的完成企业各类软件的架构设计、代码实现、程序测试、Bug修改等工作;包括业务需求的沟通,功能模块详细设计,业务功能实现与单元测试,系统维护等具体工作;同时可参与产品构思和架构设计、编写项目需求文档、撰写相关的技术文档等工作。 新手入门 初级选手 高级专家 资深达人 一、新手入门任职要求 熟悉面向对象编程思想,对ASP.NET C#(Java和PH

MAC--芳 4686

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

进入 ASP.NET 世界

 目录简介 规划基本 ASP.NET 应用程序 定义应用程序体系结构 安全规划 完成设计文档 小结并付诸行动简介 欢迎来到“进入 ASP.NET 世界”。在随后的几周或几个月中,本系列文章将逐步详细介绍如何使用 Microsoft® ASP.NET 和 Microsoft Visual Studio® .NET 来设计、实现和部署典型的 Web 应用程序,以探讨实际应用程序创建实践中最

趣客 1011

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ASP.NET应用程序规划与设计

摘要:了解如何规划和设计 ASP.NET 应用程序。本文以一个知识库 Web 应用程序为例,讨论实际应用程序创建实践中最常见的几个因素。        简介        这是一个系列文章,在这个系列文章中我们将逐步详细介绍如何使用 Microsoft ASP.NET 和 Microsoft Visual Studio.NET 来设计、实现和部署典型的 Web 应用程序,以探讨实际应用程序创建实践

执天使 1153

ASP.NET 的全球化体系结构

Michele Leroux Bustamante2003年9月 出处:Microsoft适用于:Microsoft? ASP.NET摘要:在设计体系结构时事先对全球化进行规划可以提高业务的灵活性并显著减少后续工作量。本文提供了有关全球化的背景信息,介绍了 .NET 资源的部署体系结构,并探讨了 ASP.NET 全球化过程中所面临的特定困难,以及如何构建应用程序的体系结构以便最大限度地提高部署效率

深入敌后 1023

关于ASP.NET应用程序规划与设计

简介    这是一个系列文章,在这个系列文章中我们将逐步详细介绍如何使用 Microsoft ASP.NET 和 Microsoft Visual Studio.NET 来设计、实现和部署典型的 Web 应用程序,以探讨实际应用程序创建实践中最常见的几个因素。我们不仅仅布置一些 Web 窗体,也不局限于只对后端数据库进行一些数据绑定。数据绑定和 Web 窗体布局很重要,但是有许多其他问题也非常重要

The key to .Net 503

基于C#(asp.net)的西藏旅游管理系统的设计与实现

本文主要阐述了基于C#(ASP.NET)的西藏旅游管理系统的设计与实现过程。该系统旨在提高西藏旅游行业的管理效率和服务质量,通过信息化手段实现对旅游资源的整合、旅游活动的规划、旅游信息的发布以及旅游服务的管理等功能

m0_50936939的博客 603

用ASP.NET设计优秀系统(一)

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 493

进入 ASP.NET 世界 - 第 1 部分:应用程序规划与设计

进入 ASP.NET 世界 - 第 1 部分:应用程序规划与设计Mike Amundsen2003 年 8 月适用于:    Microsoft® ASP.NET摘要:了解如何规划和设计 ASP.NET 应用程序。本文以一个知识库 Web 应用程序为例,讨论实际应用程序创建实践中最常见的几个因素。(本文包含一些指向英文站点的链接。)目录简介 规划基本 ASP.NET 应用程

WesternFlu的专栏 820
上一篇: 在SQL Server中保存和输出任意类型的文件
下一篇: 在ASP.NET中如何用C#.NET实现基于表单的验证
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值