c# - 我应该如何在类和应用层之间传递数据?

标签 c# asp.net

例如,如果我正在创建一个 3 层应用程序(数据/业务/UI)并且数据层正在抓取单个或多个记录。在发送到业务层之前,我是否将数据层中的所有内容转换为通用列表/集合?发送数据表可以吗?将信息发送回数据层怎么样?

如果我使用对象/列表,这些成员是数据层还是业务层?我可以使用相同的对象在图层之间传递吗?

这是一些伪代码:

具有电子邮件/密码的对象用户

在 UI 层,用户输入电子邮件/密码。 UI 层进行验证,然后我假设创建一个新对象用户传递给业务层,业务层进行进一步验证并将相同的对象传递给数据层以插入记录。它是否正确?

我是 .NET 的新手(来自 8 年以上的 ASP VBScript 背景),并试图以“正确”的方式做事。

最佳答案

一般来说,我认为发送对象比发送数据表更好。对于对象,每一层都知道它正在接收什么(哪些对象具有哪些属性等)。您可以获得对象的编译时安全性,您不会意外拼错属性名称等,并且它会强制两层之间的内在契约。

Joshua 还提出了一个很好的观点,通过使用您的自定义对象,您还可以将其他层与数据层分离。您始终可以从另一个数据源填充您的自定义对象,而其他层也不会更明智。使用 SQL 数据表,这可能不会那么容易。

乔尔也提出了一个很好的观点。让您的数据层了解您的业务对象并不是一个好主意,原因与让您的业务和 UI 层了解您的数据层的细节的原因相同。

关于c# - 我应该如何在类和应用层之间传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387336/

相关文章:

C# MySqlParameter 通配符搜索

c# - C# 和 ado.net 应用程序中的可移植性问题

javascript - 使用 JQuery 和 ASP.NET TextBox 控件来切换焦点

asp.net - Global.asax : 'RedirectPermanent' is not a member of 'System.Web.HttpResponse' 中的错误

asp.net - ASP.AJAX TabContainer/TabPanel 定制

c# - gridview 行中的 jQuery 确认对话框始终回发

c# - 接口(interface)注入(inject)

c# - Clipboard.ContainsImage() 可靠甚至有用吗?

c# - 是否可以在 .NET 4 中动态创建路由?

asp.net - 如何防止iis中的worker进程导致CPU使用率100%