Archive for the ‘Archi’ Category

h1

Timeout SQL problem when calling procedure

September 17, 2008

What happens  if you make some difficult stored procedure (SP) and call it by ADO for example in connected mode?? All code is just pseudo….

  • We have this code: 

    Command cmd = new  SqlCommand(“LongCall”,con)    ;
    cmd.CommandType = CmdType.StroredProcedure;
    cmd.ExecuteNonQuery();

 

  • We have this procedure
    CREATE  PROCEDURE  LongCall AS
      …….Inside of LongCall SP can be cascade calling of selects    
          SELECT * FROM ( SELECT * ……( SELECT *)  ) basically  something with huge complexity

What happened??  ExecuteNonQuery closes connection. Implicitly after 30 seconds.  So what you have to do?  
 

  • You can set TimeOut
    cmd.TimeOut = 100; //sets timeout to 100 seconds
     
  • You can disable Timeout
    cmd.Timeout = 0;  //calling of cmd.ExecuteNonQuery finish however LongCall ends.
     
  • You should call asynchronous ExecuteNonQuery
    IAsyncResult result = cmd.BeginExecuteReader(CommandBehavior.CloseConnection)
    while(!result.IsCompleted)
    {
      ….
    }
    cmd.EndExecuteReader();

     

  • Take a thing on your Stored Procedure LongCall. Can you degrease complexity??
    What about make a cache!! Use temporary  tables as much as you can.  Replace Views by selects etc…

http://www.csharphelp.com/archives4/archive640.html

h1

Urychlení workflow

August 18, 2008

Workflow se dá zrychlovat. V práci jsme řešili tento problém: Jednotlivé akce softwaru generují tasky. Jedny tasky mohou generovat spoustu jiných tásků, servicy spouštějí tasky atd… společně s tasky se spouští i WFL.   Při velikém objemu dat to ale může celé bouchnout na výkonu. Proto je dobré se zamyslet, jestli nestačí zapsat záznam do DB a instanci  WFL pro Task spustit jen tehdy, pokud se actor rozhodne na daném tasku pracovat. Očekávaný výkon takového systému s WFL na pozadí je pro nás cca 10% původního výkonu.

h1

UML crib 1

April 8, 2008

This is my UML crib, taht is devoted to relationships between entities. Be careful, I don’t recognize between analyze and design disciplines in this crib

I found nice links here:

Association

associations

NOTE:  Undefined line between entity (no arrow) is used in Architecture. But in the design dicipline it has no sense. In the design discipline it means bi-directional arrow <->. Or nothing. In the all cases. Use it in Analyse discipline, but not in the design discipline. 

Aggregation

 

Aggregation

Composition

 

Composition

NOTE: By my opinion. It has no sense in the analyse discipline. Use it in the design discipline.

Specialization

 

Specialization

Association versus Aggregation

 

AssociationVsAggregation

Aggregation versus Composition

AggregationVsComposition

h1

Agenti v .NetTiers, pres WCF

April 3, 2008

Agenti jsou servicy, ktere periodicky spousteji nejaky kod. Napriklad prepocitavani priorit tasku, generovani tasku atd…
Dulezitym prvkem je to, ze kod, ktery agenti vykonavaji je lepsi drzet na strane orchestraci.
Proc?? 
Pokud budeme volat kod na strane agenta (client-side), musime resit serializace (napriklad serializaci CaseQuery, ktery posilame service).V agentovi volame servicy ktere jsou na strane serveru. Musime si uvedomit, ze neni mozne volat primo servicy z Aplikace, ktera bezi na localhostu. Tim myslim nevolat

IService service = new Services.Service()

Musime volat pekne pres WCF servicy, ktere jsou ne na localu, ale na strane aplikace:

IFutureActivityService futureActivityService = WcfClient.ProxyFactory.Orchestrations.FutureActivityProxyInstance();Potom ale nesmime zapomenout endpointy v App.configu.

Dale je vhodne zvazit, jestli uz operace nad DB nevolat primo v SQL procedurach. Opet si tim muzeme usetrit spousty prace. Udelat join pres vice jak dve tabulky je v .Nettiers preci jenom orisek. Pokud chceme volat spolecne s nasi metodou Workflow, pouziti trored procedur zase nemusi byt nejlepsi napad. Tim myslim, volat z SP workflow. furtn nam ale SP mohou velmi zjednodusit zivot. Dalsi vyhodou pro pouziti servis na strane aplikace je fakt, ze se to mnohonasobne lepe testuje. Jenom zavolate metodu servicy v unit testu. Nejakeho agenta neresite.  
 

  • Zkratka agent by se mel postarat pouze o spusteni metody v orchestraci a na nejakou dobu skoncit. Nic vic, nic min. Usetrime si tim mraky casu.
  • Vsechna logika musi byt na strane orchestraci, usetrime si ohromna kvanta prace!!
  • Vzdy zvazte pouziti Stored procedur, pokud agent dela hromadne operace nad DB.
      
h1

GMT problem for CZ

March 31, 2008

One time I solved this complication. I need to know difference of time between Prague (GMT +1) and the rest of the world. Complication was evocated by summer time. Summer time has been established for reducation of energy wasting. Summer time has no any effect for energy wasting now.

Nobody knew which time is right (summer or winter).

Solution:
Right time is Winter time (GMT +1).
Wrong time is summer time (GMT +2)

h1

STORED PROCEDURES IN CHANGE SCRIPTS

March 16, 2008

Nedávno jsme řešili, jak ukládat stored procedury do change scriptů.

Jednou z možností bylo ukládat jednotlivé change do adresářů ve formátu  StoredProcedures\Namespace\yyyymmdd  Druhá možnost bylo ukládání Stored procedures do adresáře StoredProcedures\Namespace. To znamená, že by se staré verze SP přepisovali těmi novými.

Které řešení je lepší??

Špatné uložení
Jako horší se jeví první uložení.  Hlavní důvod je ten, že pokud chci předělávat nějakou SP, musím procházet předchozí adresáře. Aktuální verze lze získat pomocí modifikace procedury v SQL manageru. Ale I tak je to opruz. Dále. Pokud změním jméno sloupce/tabulky, opět” bude mi to padat na předchiozích verzích SP. A ta poslední bude jen opsaná předchozí SP se správnými jmény.  Všemu se lze vyhnout, ale zkrátka, stojí to moc sil.

bad type of saving SP

Dobré uložení 
Historii SP jsou uloženy v TFS, proč tedy zbytečně držet historie v change scriptech.  Rychlá údržba, úprava vždy ma jednom místě.

goodsave.png

Follow

Get every new post delivered to your Inbox.