2010-11-18 10 views
9

Uczę się C# od kilku ostatnich dni do użytku z ASP.NET do tworzenia stron internetowych.Pisanie wielokrotnego użytku kodu C# dla stron ASP.NET

Jestem bardzo nowy dla C#, ale myślałem o tym, jak powinienem napisać mój kod, aby był jak najbardziej możliwy do ponownego użycia.

Jako szybki przykład, powiedzmy, że chciałem stworzyć kawałek kodu, aby sprawdzić dane logowania użytkownika, które mógłbym w każdej chwili przenieść do innej witryny i aby działała z danymi, które otrzymała.

pamiętając, że nie mam pojęcia jak mam layout mojego kodu, aby to zrobić, to jest pomysł wpadłem (Będę trzymać go krótko z jakimś pseudo kod):

Najpierw tworzę klasa:

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; 
     } 
    } 
} 

Wtedy mam stronę aspx, gdzie formularz logowania pójdzie, na przykład:

<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> 

a kod związany z pliku będzie wyglądać następująco:

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"); 
      } 
     } 
    } 
} 

To działa zgodnie z oczekiwaniami, ale to, co chcę wiedzieć, to:

  • Czy istnieje lepszy sposób na tworzenie kodu wielokrotnego użytku?
  • Jak projektujesz swój kod wielokrotnego użytku?

Jestem pewien, że muszę to zrobić lepiej, ale nie mogę o tym myśleć sam.

Odpowiedz

13

Co się tyczy formularzy internetowych ASP.NET i możliwości ponownego użycia, należy stwierdzić, że najczęstszym problemem jest umieszczanie zbyt dużej ilości logiki w plikach znajdujących się za kodem. Programiści, zwłaszcza nowi na ASP.NET WebForms, mają tendencję do umieszczania w nich części logiki biznesowej, a nawet kodu dostępu do bazy danych. Po pewnym czasie zamienia ich aplikacje w gigantyczny, trudny do utrzymania blurb.

Wyciągnij logikę biznesową na osobną warstwę. Uzyskaj dostęp do kodu z tyłu kodu. Wystarczy uzyskać dostęp, a nie zaimplementować go bezpośrednio. Trzymaj się z dala od bazy danych. Tylko warstwa biznesowa powinna mieć możliwość komunikowania się z nią.

Można nawet umieścić logikę biznesową i jednostki modelu domeny w oddzielnej bibliotece klas. W ten sposób staje się wielokrotnego użytku.

To pierwsze proste rozważania, zanim zabrudzisz sobie ręce za pomocą poważnego kodowania.

Techniki ponownego użycia w .NET koncentrują się głównie na umieszczaniu wspólnego kodu w bibliotekach klas do wykorzystania przez różnorodne aplikacje.

Możliwość ponownego użycia w aplikacjach internetowych (ASP.NET) jest zwykle uzyskiwana za pomocą UserControls (* .ascx) dla części prezentacji i eksponowania części aplikacji za pośrednictwem usług internetowych.

Można również wspomnieć o przeniesieniu logiki biznesowej do warstwy bazy danych (umieszczenie jej w procedurach przechowywanych), ale obecnie jest ona powszechnie postrzegana jako kontrowersyjna.

+0

zgadzam! Projektowanie trójwarstwowe lub wielopoziomowe ma wiele zalet. Prostym sposobem na początek może być umieszczenie "modułów" w "App_Code", a następnie wywołanie funkcji z tego miejsca. Nie utrzymuj sprawdzania poprawności itp. W kodzie źródłowym. Tylko "funkcje połączeń" z rzeczywistego kodu strony. – BerggreenDK

4

Może login jest złym przykładem, ponieważ istnieją ASP.NET built-in ways to do this, ale ogólnie rzecz biorąc, jesteś na dobrej drodze: nie umieszczaj logiki biznesowej, którą możesz chcieć ponownie wykorzystać na stronie, ale raczej na niektórych zajęciach - to ma dodatkową zaletę w postaci strukturyzacji kodu bardziej logiczny sposób: rzeczy związane z interfejsem użytkownika znajdują się na stronie ASPX (i jest to kodbehind), logika programu znajduje się w oddzielnych klasach. W końcu będziesz chciał przenieść niektóre z tych klas do oddzielnego projektu bibliotecznego, do którego można podłączyć wiele różnych aplikacji internetowych.

Jeśli chcesz ponownie użyć ASP.NET elementy interfejsu użytkownika, masz możliwość napisać ASP.NET Server Controls, który można umieścić w bibliotece i wykorzystywać w swoich stronach ASP.NET tak:

<asp:Content ContentPlaceHolderID="column1" runat="server"> 
    <custom:MyCustomLoginControl runat="server" 
           OnSuccessRedirectTo="myStartPage.aspx" /> 
</asp:Content> 
1

Najlepszym sposób, w jaki udało mi się ponownie użyć stron WebForms, a kod używa wzorca MVP. Zaimplementowaliśmy MVP dla niektórych naszych stron na naszej starej stronie jako described here, a kiedy przeprowadziliśmy się do ASP.NET MVC, stwierdziliśmy, że proces jest naprawdę prosty.

+0

Należy zauważyć, że MVP pomaga w tym, co zaleca @Developer Art: oddzielić logikę biznesową od kodu za kodem. –

0

Istnieje proste rozwiązanie do ponownego użycia kodu w ASP.NET.

Po zbadaniu, znalazłem dwa rozwiązania:

  • pracujących z katalogów wirtualnych lub
  • przenieść całą zawartość do katalogu głównego.

Sprawdzanie dwa rozwiązania, zidentyfikowane co naprawdę należy zrobić: wystarczy po prostu ustawić folder BIN naszego projektu do docelowego katalogu głównego (C:\inetpub\wwwroot\bin).

Oto prosty przykład w załączonym pliku: LibExemplo.zip.

Obecnie używam SharpDevelop, który nie wymaga długich instalacji ani konfiguracji.

Pozdrawiam,

Reinaldo Fernando

Powiązane problemy