BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Kaip suprasti, kad nesi vien programuotojas?

Parašė Sergejus | 2011-01-30 12:34

Užtenka pasižiūrėti į kalendorių

image

Klausimas skaitytojams – o kiek jus praleidžiate laiko susitikimuose?

Rodyk draugams

Vartotojų grupės susitikimo iš NoSQL skaidrės

Parašė Sergejus | 2011-01-25 17:03

DotNetGroup.lt puslapyje jau pasirodė skaidrės iš paskutinio iš NoSQL susitikimo:

Rodyk draugams

Išleisti 6 nauji Microsoft produktai skirti programuotojams

Parašė Sergejus | 2011-01-14 07:00

Šiandien Microsoft išleido iš karto kelių naujų produktų galutines versijas:

Rodyk draugams

Mano pristatymų grafikas artimiausiems mėnesiams

Parašė Sergejus | 2011-01-13 09:00

2011 metų pradžia žada būti rekordinį pagal mano pristatymų skaičių, tad nenustebkite, jeigu straipsnių kiekis nebus didelis.

Sausio 18, Vilnius – pristatymas iš NoSQL, Lietuvos .NET vartotojų grupės susitikimas

Sausio 19, Kaunas – pristatymas iš NoSQL, Lietuvos .NET vartotojų grupės susitikimas

Sausio 28, Vilnius – visos dienos seminaras iš Windows Azure

Vasario 10, Riga – pagrindinis pristatymas iš Windows Azure, MVP Roadshow 2011

Vasario 11-12, Riga – MVP Baltics Meeting 2011

Vasario 18, Vilnius – pagrindinis pristatymas iš Windows Azure, MVP Roadshow 2011

Vasario 28 - Kovo 3, Seattle – MVP Global Summit 2011

Kovo 9, Talinas – pagrindinis pristatymas iš Windows Azure, MVP Roadshow 2011

Rodyk draugams

WCF servisų derinimas

Parašė Sergejus | 2011-01-11 21:47

Paskutiniu metu labai dažnai tenka dirbti su WCF servisais ir atitinkamai auga poreikis juos derinti (angl. debug). Kadangi jau kelis kartus iš kolegų girdėjau klausimą dėl WCF servisų derinimo, nusprendžiau tai aprašyti detaliau. Tarkime, mūsų sprendimas sudarytas iš tokių projektų:

image

Detaliau išvardinsiu kiekvieno projekto paskirtį:

  • Wcf.Client – mūsų WCF serviso klientas
  • Wcf.Contract – WCF serviso kontraktas (bendravimo interfeisas)
  • Wcf.Model – WCF serviso duomenų modelis
  • Wcf.Service – WCF serviso verslo logika (kontrakto realizacija)
  • Wcf.Service.Host – WCF serviso aplikacija

Kaip matyti, sprendimas yra minimalus, bet to pakanka parodyti kaip vienu metu derinti tiek WCF klientą, tiek WCF servisą ir/arba WCF serviso aplikaciją. Tam, kad įnešti kontekstą, žemiau pateiksiu kiekvienos klasės kodą.

Projektas Wcf.Client

class MessangerClient : ClientBase<IMessanger>, IMessanger
{
    public void Send(Message message)
    {
        base.Channel.Send(message);
    }
}
class Program
{
    static void Main()
    {
        var client = new MessangerClient();
        try
        {
            client.Send(new Message { Text = "Test" });
        }
        finally
        {
            if (client.State == CommunicationState.Faulted)
            {
                client.Abort();
            }
            else
            {
                client.Close();
            }
        }
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <client>
      <endpoint address="net.tcp://localhost:9000/Messanger"
                binding="netTcpBinding"
                contract="Wcf.Contract.IMessanger" />
    </client>
  </system.serviceModel>
</configuration>

Projektas Wcf.Contract

[ServiceContract]
public interface IMessanger
{
    [OperationContract]
    void Send(Message message);
}

Projektas Wcf.Model

[DataContract]
public class Message
{
    [DataMember]
    public string Text { get; set; }
}

Projektas Wcf.Service

public class Messanger : IMessanger
{
    public void Send(Message message)
    {
        throw new NotImplementedException("This method is not implemented");
    }
}

Projektas Wcf.Service.Host

class Program
{
    static void Main()
    {
        var host = new ServiceHost(typeof(Messanger));
        try
        {
            host.Open();

            Console.ReadKey();
        }
        finally
        {
            if (host.State == CommunicationState.Faulted)
            {
                host.Abort();
            }
            else
            {
                host.Close();
            }
        }
    }
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Wcf.Service.Messanger" behaviorConfiguration="ServiceBehavior">
        <endpoint binding="netTcpBinding" contract="Wcf.Contract.IMessanger" />
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:9000/Messanger" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Wcf.Client ir Wcf.Service.Host derinimas

Paprasčiausias atvejis – jus norite derinti pradedant WCF serviso klientu ir baigiant WCF serviso aplikacija. Tam tereikia atlikti du žingsnius:

  • Wcf.Service.Host App.config faile nurodyti <serviceDebug includeExceptionDetailInFaults="true"/> (žr. aukščiau)
  • Vienu metu paleisti derinimui Wcf.Service.Host (dešiniu pelės mygtuku ant projekto → Debug Start → new instance) ir tada tuo pačiu būdu Wcf.Client

Wcf.Client ir Wcf.Service derinimas

Derinti WCF klientą ir serviso aplikaciją yra paprasta, bet dažnai nėra galimybės tiesiogiai paleisti derinimui WCF serviso aplikaciją. Tokiais atvejais tenka derinti WCF kliento sąveiką su WCF servisu (Wcf.Service). Kadangi Wcf.Service yra biblioteka (DLL), prieš tai išvardintas derinimo būdas netinka. Laimei, kartu su Visual Studio eina labai naudinga programa WcfTestClient, kurios pagalba mes ir derinsime WCF servisą. Tam reikia atlikti keletą žingsnių:

  • Wcf.Service.Host App.config faile nurodyti <serviceDebug includeExceptionDetailInFaults="true"/> (žr. aukščiau)
  • Nukopijuoti Wcf.Service.Host App.config failą į Wcf.Service projektą (rekomenduoju kopijuoti ne fiziškai, o kaip Linked Item)
  • Nurodyti WcfTestClient kaip Wcf.Service klientą (dešiniu pelės mygtuku ant projekto → Properties → Debug → Command line arguments laukelyje įveskite /client:"WcfTestClient.exe")
  • Pakeisti Wcf.Service projekto tipą į WCF Service Library (žingsnis reikalingas tik jeigu projektas sukurtas kaip paprasta C# biblioteka) (dešiniu pelės mygtuku ant projekto → Unload Project, dešiniu pelės mygtuku ant projekto → Edit Wcf.Service.csproj, suraskite elementą ProjectGuid ir žemiau pridėkite <ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>)
  • Vienu metu paleisti derinimui Wcf.Service (dešiniu pelės mygtuku ant projekto → Debug Start → new instance) ir tada tuo pačiu būdu Wcf.Client

Tikiuosi, aukščiau pateikti patarimai pravers derinant WCF servisus ir sutaupys nemažai jūsų (brangaus) laiko. Efektyvaus derinimo!

Rodyk draugams

Lietuvos .NET vartotojų grupės susitikimas (su Kinect)

Parašė Sergejus | 2011-01-06 19:20

Atnaujinta susitikimo vieta Vilniuje!

Šį kartą kalbėsime apie daugeliui naują temą - NoSQL duomenų bazes. Pristatymo metu sužinosite pagrindinius NoSQL duomenų bazių tipus, jų privalumus bei trūkumus, sužinosite apie darbą su jomis iš .NET.

Susitikimai vyks Vilniuje – sausio 18 d. (Crowne Plaza viešbutyje), Kaune – sausio 19 d. (Microsoft inovacijų centre, Technopolyje).

18:00 - 18:45 - NoSQL - kas tai? (Sergejus Barinovas)
19:00 - 19:45 - MongoDB duomenų bazė ir jos panaudojimas iš .NET (Mindaugas Mozūras)
20:00 - 20:45 - Efektyvi teksto paieška naudojant Solr ir jo panaudojimas iš .NET (Giedrius Banaitis)
20:45 - Vakarinė dalis su Kinect ir užkandžiais!

Registracija Vilniuje, Kaune.

Rodyk draugams

Microsoft Lietuva programuotojų apklausa

Parašė Sergejus | 2011-01-04 20:43

Microsoft Lietuva pirmą kartą rengia Lietuvos programuotojų apklausą. Apklausa yra pakankamai trumpa, bet jus turėsite puikią progą išsakyti savo nuomonę apie Microsoft Lietuva darbą (patikėkite, apklausos rezultatai eis gerokai toliau už Lietuvos ribų). Apklausa sukurta Silverlight pagalba, kurį (esant reikalui) galite gauti čia. Atlygis už dalyvavimą – galimybė laimėti pelę, ausines ar klaviatūrą (daugiau informacijos, Tautvydo tinklaraštyje).

Rodyk draugams