Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

ASP intranet -> ASP.NET 3.5 C# een goede basis

Pagina: 1
Acties:

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
Hallo,

Op mijn werk hebben we nu een supergroot intranet opgezet van honderden ASP scripts.
Nu staat de tijd niet stil en willen we nieuwe sessies gaan maken in ASP.NET en langzaam de oude sessies omzetten naar ASP.NET.
Nu heb ik me goed ingelezen wat de verschillen zijn met ASP en hoe alles werkt.
Vooral het data access is zeer interessant en heb dus ook al deze tutorials doorgelopen http://www.asp.net/learn/data-access/

Wat ik zelf in gedacht heb is dit:
Verschillende databases:
  • ERP pakket BaanIV
  • Documentbeheer
  • Tijdregistratie personeel
  • Tijdregistratie machinestilstand
  • HRM pakket (persmaster)
  • Etc.
Voor elke database een Data Access Layer maken en plaatsen in:
App_data\DAL

Voor elke database ook een BLL maken en die plaatsen in:
App_code\BLL\Baan\
App_code\BLL\Persmaster\

ASPX file plaatsen in mappen:
dms\CategorienBeheren.aspx
dms\DocumentenPerArtikel.aspx
personeel\ZiekenPerAfdeling.aspx

Nu komt het dus ook vaak voor dat je in een sessie meerdere BLL’s moet aanspreken (zoals bovenstaand voorbeeld Documenten per artikel, hier kan je documenten koppelen aan artikelen uit BaanIV)

Ook gaan we werken met SQL reporting services.

Maar nu lees ik ook steeds meer over LINQ en het MVC Framework en twijfel ik als dit wel een goede opzet is :|

Willen jullie je mening/tips ook eens geven hoe je een zeer groot intranet opzet in ASP.NET zonder later alles nog een keer op zn kop te moeten gooien?

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

MVC is nog in een beta stadium en daarmee onderhevig aan veranderingen en is het dus niet verstandig dit al te gebruiken voor productie systemen. En als jij al gebruik maakt van verschillende layers heb je net als bij het MVC principe, data (Model), business (Controller) en presentatie (View) al gescheiden. Het grootste nadeel van MVC is eigenlijk dat je de honderden standaard asp.net web controls niet kunt gebruiken omdat je geen viewstate meer hebt.

De route handler van MVC is zich wel netjes gebouwd, maar url rewriting is al door vele gebouwd.

Linq To Sql is denk ik in jullie geval niet handig omdat je niet alleen mssql databases zult gebruiken. Linq zelf is een handige manier om je data (collecties) te benaderen en te ordenen. De generic list heeft bijvoorbeeld de methodes Skip en Top waarmee je effectief paging kunt doorvoeren. Je zult dan wel je database result moeten omzetten naar entities en deze bijvoorbeeld in een List<T> plaatsen.


Ik snap alleen eerlijk gezegd niet waarom je een business layer voor elke database zult maken. Een business layer heeft normaal gesproken geen kennis waar de informatie vandaan komt (daarvoor is de data layer). Het zou ook niet moeten uitmaken of de data uit een MSSQL of Oracle database komt of zelfs vanuit een (oude) ASP webservice welke XML uitspuugt. Data layers zetten normaal gesproken de records/nodes om naar entities en die entities worden door de business en presentatie layers gebruikt.

Overigens kun je van de business en data layers het beste losse class libraries maken. Zeker bij grote projecten.

If it isn't broken, fix it until it is..


  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
bedankt voor de reactie.

De stap van ASP naar ASP.NET is erg groot dus ik moet eerst nog uitzoeken wat het voordeel zou zijn van Class libraries. Na het lezen van onder andere deze topic http://forums.asp.net/p/1242333/2272776.aspx is dat wel wat duidelijker geworden.

Wat ik alleen heb geleerd via http://www.asp.net/learn/data-access/ is dat het makkelijker is om een BLL tussen de DAL te zetten en dat dan op deze manier te gebruiken.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using NorthwindTableAdapters;

[System.ComponentModel.DataObject]
public class ProductsBLL
{
    private ProductsTableAdapter _productsAdapter = null;
    protected ProductsTableAdapter Adapter
    {
        get {
            if (_productsAdapter == null)
                _productsAdapter = new ProductsTableAdapter();

            return _productsAdapter;
        }
    }


    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Select, true)]
    public Northwind.ProductsDataTable GetProducts()
    {
        return Adapter.GetProducts();
    }

    [System.ComponentModel.DataObjectMethodAttribute
        (System.ComponentModel.DataObjectMethodType.Delete, true)]
    public bool DeleteProduct(int productID)
    {
        int rowsAffected = Adapter.Delete(productID);

        // Return true if precisely one row was deleted,
        // otherwise false
        return rowsAffected == 1;
    }
}

Zo kan je later altijd nog logica etc. toevoegen een de BLL (throw nex exceptions etc.)
Is dat niet beter dan direct op de DAL te programmeren?

En wat is de beste structuur om een Class Librarie aan te maken? Voor elke database een librarie of 1 grote librarie voor alle databases of misschien nog een andere opzet.
Zulke structureren is totaal nieuw voor mij en best lastig als je ASP gewent bent.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Heb je al ervaring met Object Georienteerd (OO) programmeren? Zo niet, dan zou ik me daar in verdiepen. ASP.NET is opgezet vanuit een heel andere paradigma. ASP is veel meer gericht op het genereren van een pagina van boven naar beneden, kort door de bocht, terwijl ASP.NET veel meer als een OO applicatie is opgezet.

We kunnen bovenstaande concepten (DAL/BLL) wel uitleggen, maar hierover is het wel benodigd dat je eerste de basis en principes achter OO kent. Verder denk ik dat je vraagstelling erg algemeen is en dat er daarom ook weinig respons is. Er is niet een enkele architectuur die de beste is, er zitten trade-offs in die je moet maken. Dit is zo situatie afhankelijk dat wij dan ook maar moeten gissen naar de beste oplossing.

Ik begrijp trouwens ook niet hoe het kan dat jullie een 'zeer groot' intranet applicatie willen omzetten maar nog volledig nieuw zijn op dit gebied. Er moeten toch al mensen met ervaring hiermee in de organisatie zijn? Zo niet, zou ik sterk aanraden om iemand in te huren met kennis van zaken aangezien het anders nooit in een keer gaat lukken 'zonder het later op z'n kop te gooien'.

  • bastv
  • Registratie: September 2005
  • Laatst online: 15-11 00:39
OOP hebben we wel ervaring mee en het princiepe OOP is ook geen probleem.

de afdeling bestaat uit 2 man en hebben ooit eens wat asp paginas gemaakt gewoon voor de lol.
dit is echter nogal uit de hand gelopen, vandaar dat er nog weinig kennis is van asp.net

Iemand inhuren koste ong. 10.000€ en dat heeft het bedrijf er niet voor over (voor dat geld kan je zelf ook veel uizoeken)
Het uizoeken was ook geen probleem, het enige wat vrij onduidelijk was is het generiek opzetten van DAL en BLL. vandaar mijn vraag hier.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt de MVC uitleg van Scott Gutrie gelezen? MVC is een erg breed concept dat ook op andere platformen (java, php, ruby en smalltalk (zij kwamen decenia terug als eerst met MVC op de proppen)). Lees je daar even goed op in van hoe programmen met behukp van MVC werkt.

Want MVC is eigenlijk gewoon een andere benaming voor 3-tier oplossing. De controller is vergelijkbaar met de business laag.

In termen van DAL en BLL bestaat geen generiek overigens niet. Zowel een DAL en BLL worden namelijk altijd voor een specifiek doel geschreven. Lees je ook goed in in de design patterns.

If it isn't broken, fix it until it is..

Pagina: 1