题
我已经学习C#在过去的几天里使用ASP.NET 创建网站。
我非常新来C#但我有一直思考如何我应该去写我的代码,把它作为可复用作为可能。
作为一个简单的例子,可以说我要创造一块代码检查用户的登录信息,我可能只是拖到另一个网站在任何时间,并让它的工作与数据得到定。
记住,我不知道我应该怎么布置我的代码要做到这一点,这是我想出来(我将尽量简短一些种类的伪代码):
第一,我创建一类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Module {
public class Login {
public static bool check_login(string usernameCheck = "", string passwordCheck = "") {
if(usernameCheck == "user" && passwordCheck == "password") {
return true;
}
return false;
}
}
}
然后我会aspx页,在其中登录的形式,例如:
<asp:Content ContentPlaceHolderID="column1" runat="server">
<asp:TextBox ID="usernameInput" runat="server"></asp:TextBox>
<asp:TextBox ID="passwordInput" runat="server"></asp:TextBox>
<asp:Button OnClick="check_login" Text="Login" runat="server" />
</asp:Content>
和代码后面文件将这样的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Module {
public partial class _default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
protected void check_login(object sender, EventArgs e) {
if(Login.check_login(usernameInput.Text, passwordInput.Text)) {
Response.Redirect("some other place");
}
}
}
}
这工作不如预期,但我想知道的是:
- 是否有更好的办法来创造可重复使用的代码?
- 如何做你的设计你可重复使用的代码?
我敢肯定,必须有一个更好的办法让我来做到这一点,但我只是不能想想我自己。
解决方案
关于ASP.NET web表单和复用,它必须说,最常见的问题在于把太多的逻辑进入代码隐藏的文件。程序员,特别是那些新来的ASP.NET web表单,倾向于把有部分的业务逻辑和甚至数据库的访问代码。一段时间后,事实证明他们的应用程序成了一个巨大的难以维持的blurb。
取走你的商务逻辑成一个单独的层。访问它们的代码隐藏。刚刚访问,没有实现。远离数据库。只有业务层应允许谈到它。
你甚至可以把你的业务逻辑和领域模型的实体合并为一个单独的类图书馆。然后它是如何变为可以重复使用。
这是第一个简单的考虑之前,你得到你的手弄脏了一些严重的编码。
重用技术。净额主要是围绕着共同的搁置码进入类库将使用的各种应用程序。
重复使用性作为应用于网络的应用程序(ASP.NET)通常是实现与UserControls(*.ascx)为介绍的一部分和暴露部分的应用,通过网络服务。
一个还可以提到移动商务的逻辑进入数据库层(放入存储程序),但这是一个通常被视为有争议的,这些天。
其他提示
也许登录是一个不好的例子,因为有ASP.NET 内置的方式来做到这, ,但是,一般来说,你是在正确的轨道:不要把业务逻辑,你可能要重复使用的成的页面本身,而是进入某些类别--这有另外的优点的结构你的代码在一个更合乎逻辑的方式:用户界面相关的东西是在ASPX页(和它的代码隐藏),程序的逻辑驻留在独立的课程。最终,你会想搬其中一些课程纳入一个单独的图书馆项目,该项目可以链接到许多不同的网络应用程序。
如果你要重复使用ASP.NET 用户接口的元素,你可以写信 ASP.NET 服务器的控制, 你把你的图书馆和利用你ASP.NET 网页是这样的:
<asp:Content ContentPlaceHolderID="column1" runat="server">
<custom:MyCustomLoginControl runat="server"
OnSuccessRedirectTo="myStartPage.aspx" />
</asp:Content>
最好的方法我发现了重新使用web表单页和代码被用MVP的模式。我们实施的最有价值球员为我们的一些页面上,我们的老网站 这里描述的, 当我们移动来ASP.NET 视,我们发现的过程很简单。
有一个简单的解决办法,以代码的再利用在ASP.NET.
研究后,我发现了两个方案:
- 使用虚拟目录,或
- 移动的全部内容根目录。
检查的两个解决方案,确定什么真的需要完成的工作:这是不够的,只是设置 BIN
文件夹中的我们的项目目标的根本目录(C:\inetpub\wwwroot\bin
).
这里有一个简单的例子,在附加文件: LibExemplo.zip.
目前我用 SharpDevelop 这并不需要冗长的安装或配置。
问候,
雷纳尔多*费尔南多