[ Csharp @ 23.08.2006. 09:12 ] @
Pozdrav svima!

Iskreno, nešto malo sam mrljavio sa asp.net-om pa sam naletio na par nekakvih kontrola koje su valjda pisane u java script-u i sada me zanima kako se takve kontrole mogu napraviti u asp.net-u! Jasno mi je za windows kontrole, ali ove za web,... tu mi pak ništa nije jasno! ok, potrošio sam dosta vremena da napravim recimo nekakav menu, a onda ga u .net-u 2.0 dobijem besplatno! Pa se onda sjetim da ne bi bilo loše imati rich text box ili nešto slično. Ja sam skino nekakvu takvu kontrolu, ali me živo zanima kako se rade i da li ih ja mogu sam iscrtavati? U win kontrolama si imao metodu onpaint i naškrabaš što hoćeš, ali ovdje, definitivno ne kužim!

Pitanje dakle glasi kako napraviti tako nekakvu kontrolu na kojo ja mogu nešto iscrtavati, a drugo pitanje kako napraviti svoj nekakav text editor ili nešto tog tipa?
[ bjevta @ 23.08.2006. 13:29 ] @
1. Što se tiče text editora, predlažem da ne gubiš vreme: FCK (www.fckeditor.net) editor je prava stvar. Postoji i dodatak za ASP.NET 2.0. Cool stuff, skoro da je MS Word u browser-u.

2. Kontrola u kojoj možeš nešto iscrtavati? U ASP.NET postoje User i Custom kontrole.
- User kontrole su agregacija postojećih web kontrola (bilo da ih isporučuje MS ili ih skineš s net-a).
- Custom kontrole su prava stvar: maximum mogućnosti i isto toliko glavobolje. Sve ti je dozvoljeno ali, o svemu moraš sam da se postaraš: generisanje sadržaja, rendanje HTML-a (još da radi u svim browser-ima), sve je na tebi.

Biću slobodan da pretpostavim da nemaš previše prakse u ASP.NET, pa bih ti preporučio da se držiš User kontrola i "svlačiš" s net-a šta ti zatreba. Sam ćeš osetiti kad je vreme da se baciš u Custom kontrole. Za njih ti treba znanje HTML, CSS, JavaScript i, naravno, C# (može i VB.NET). I, pre svega, tržište, jer ne vidim svrhu razvoja custom kontrola ako nisi nameračio da ih prodaješ.
[ spartak @ 23.08.2006. 19:30 ] @
Citat:
bjevta: jer ne vidim svrhu razvoja custom kontrola ako nisi nameračio da ih prodaješ.


Ucaurivanje UI procesa koji ti se ponavlja na vise mesta da ne bi radio shtrokavi copy'n'paste vise kontrola i koda svaki put?
Ucaurivanje biznis logike (posto kod web app teze povuci jasnu crtu izmedju izmedju UI procesa i biznis logike)?
...?

A moze i za prodaju
[ bjevta @ 23.08.2006. 20:35 ] @
>>Ucaurivanje UI procesa koji ti se ponavlja na vise mesta da ne bi radio shtrokavi copy'n'paste vise kontrola i koda svaki put?<<

postoji bitna razlika u nameni između custom i user kontrola što sam pokušao da objasnim kolegi. ne treba ih mešati. custom kontrole jesu opštiji slučaj od user kontrola ali je to bitno samo u teorijskom smislu. praktično su to 2 različite grane.

>>Ucaurivanje biznis logike (posto kod web app teze povuci jasnu crtu izmedju izmedju UI procesa i biznis logike)?<<

biznis logika se NIKAD se smešta u GUI. primer: napravimo dvoslojnu web app gde su spregnuti business logika i GUI. Onda nam traže i desktop aplikaciju (može i obrnuto). Programiraćemo ponovo business logiku u WinForms? Copy/Paste? Svakako ne.
[ spartak @ 24.08.2006. 01:06 ] @
Aha, u teoriji.. To jest cak i u teoriji projektovanja ostavljaju rezervu da se deo biznis logike ponekad mora preslikati do UI. A praksa cesto pokaze da ta teorijska rezerva nije za dzabe rezervisana :-) Pogotovo u web aplikacijama, gde je "skupo" vracati korisnika svaki cas na server da bi prosao neki biznis flow, validaciju ili bilo sta drugo.

Sto se tice primedbe na podelu dve grupe kontrola nista nisam sporio. Samo kazem da "zarada od dalje prodaje" nije razlog zasto je M$ implementirao podrsku za izradu bilo jednih, bilo drugih.
[ Csharp @ 24.08.2006. 09:33 ] @
E, ljudi tnx na odgovorima!
[ mmix @ 24.08.2006. 14:20 ] @
Citat:
spartak: Aha, u teoriji.. To jest cak i u teoriji projektovanja ostavljaju rezervu da se deo biznis logike ponekad mora preslikati do UI. A praksa cesto pokaze da ta teorijska rezerva nije za dzabe rezervisana Pogotovo u web aplikacijama, gde je "skupo" vracati korisnika svaki cas na server da bi prosao neki biznis flow, validaciju ili bilo sta drugo.


Ucaurivanje biznis logike u UI layer je definitivno losa praksa, narocito ako je jedinu tu i prisutna (znam, ti si rekao preslikati, samo naglasavam poentu).
Ako ne vidis cistu liniju izmedju UI i biznis logike, to znaci da nisi dobro odradio arhitekturu sistema. Na stranu osnovna validacija, konkretan business layer odradjuje svoj posao na osnovu vise faktora/resursa koji bi bili preskupi za odrzavanje i kesiranje u UI (ako treba da konsultujes tabelu od milion redova naravno da ces raditi post back umesto da tih milion redova ubacis u javascript), da ne pominjem da vecina ljudi pravi gresku i osetljive algoritme/podatke koji predstavljaju poslovnu tajnu firme trpaju u javascript module na web stranicama da bi dobili na performansama (cudo jedno koliko se moze nauciti o poslovanju jedne banke posmatrajuci html sors ebank aplikacije ) Da ne pominjem da user moze slobodno da ugasi javascript i sta onda? Ili moze da ga debaguje i da preskoci neke vazne segmente i formira maliciozni zahtev sa same stranice ili nauci format POST paketa i posle ga replicira ili jos gore pusti svoj process kroz processflow na koji nema prava ili koji moze da napravi havariju.

Kad to sve stavis na papir onda vidis da je jedina stvar koju ti realno mozes da ubacis u UI ustvari osnovna validacija polja (polje prisutno? opseg ok? format ok?), uz PONOVNU validaciju na serveru. Sve ostalo zahteva taj skupi post-back, u cemu lezi sve veca popularnost AJAX-a tj. Atlasa, koji teze da minimizuje tu "cenu".

E sad kontrole, ubacivati business logiku u kontrole je, bar po meni, jos gore. Time zapravo zakljucavas funkcionalnost kontrole na odredjenu "primenu", pa se postavlja pitanje cemu uopste kontrola, bolje onda lepo stavi tu funkcionalnost na samu stranu/formu... Vise puta sam video to u praksi, projekat sa hiljadu user kontrola, a svaka se koristi samo na jednoj strani/formi zbog nedostatka genericnosti, a ceo problem uglavnom pocinje oko zablude da je code-behind iza aspx/ascx ustvari deo business layera, onda se ljudi zalete i nastaju problemi, posto ne mozes iskoristiti ascx deo bez ascx.cs dela Drugi problem nastaje pri upgrade-u sistema, sta ako se promeni odredjeni aspekt business logike. Recimo firma promeni svoj account format i trba uskladiti validaciju. Promeniti to u dobro projektovanom business layeru je posao od 5 minuta. Pronaci i promeniti logiku u 200 procesnih user kontrola medju hiljadu je sizifovski posao. I to je nazalost simptomatika upotrebe kontrola, vecina korisnika ne razmislja o kontroli kao o necemu generickom i konfigurabilnom sto ce biti upotrebaljavano u razlicitim kontekstima, skoro svi ih koriste da grupisu kontrole na jedan panel sto jedino ima konkretnog smisla ako je aplikacija "portalskog" tipa gde je vizuelni sadrzaj dinamicki odredjen.

l dobro, sad zastranih ovde, poenta je bila da je obavezno imati samo-dovoljan busines layer koji ni u kom smislu nece zavisiti od UI-a i koji ce biti dobro zasticen od UI-a. Osnovno BL test pitanje za bilo koji usecase je: "mogu li simulirati sva scenarija processa kroz kod bez user interfejsa?". Ako mozes onda si ok. Ako ti kroz kod mozes da posaljes "bombu" koja ce napraviti kurslus u business layer-u i onda zavisiti od user interfejsa da te zastiti od tog scenarija, onda definitivno nisi ok.