milosev.com
  • Home
    • List all categories
    • Sitemap
  • Downloads
    • WebSphere
    • Hitachi902
    • Hospital
    • Kryptonite
    • OCR
    • APK
  • About me
    • Gallery
    • Curriculum vitae
      • Resume
      • Lebenslauf
    • Social networks
      • Facebook
      • Twitter
      • LinkedIn
      • Xing
      • GitHub
      • Google Maps
      • Sports tracker
    • Adventures planning
  1. You are here:  
  2. Home

RabbitMQ

Details
Written by: Stanko Milosev
Category: C#
Published: 21 May 2016
Last Updated: 21 May 2016
Hits: 5563

First install RabbitMQ server. In my case I installed the one from rabbitmq. If you don't have Erlang, it will direct you to the Erlang page. Download and install Erlang, in my case I downloaded OTP 18.3 Windows 64-bit Binary File.

Then in RabbitMQ command prompt write:

rabbitmqctl.bat status

Result should be something like:

If it is not, try to restart your computer.

Next thing is to setup our management plugin. 

In RabbitMQ command prompt write:

rabbitmq-plugins enable rabbitmq_management

If you installed your RabbitMQ on local host as I did, then go to:

http://localhost:15672/

Username and password is guest / guest

It can be that plugin is not started immediately and you will have to wait couple of seconds before you see login screen of management plugin.

Download .NET/C# RabbitMQ client library, unzip it.

Now, in visual studio start new console application write code like this:

using System;
using RabbitMQ.Client;
using System.Text;

namespace RabbitMQ
{
  class Program
  {
    static void Main(string[] args)
    {
      var factory = new ConnectionFactory() { HostName = "localhost" };
      using (var connection = factory.CreateConnection())
      {
        using (var channel = connection.CreateModel())
        {
          channel.QueueDeclare(queue: "hello",
                                durable: false,
                                exclusive: false,
                                autoDelete: false,
                                arguments: null);

          string message = "Hello World!";
          var body = Encoding.UTF8.GetBytes(message);

          channel.BasicPublish(exchange: "",
                               routingKey: "hello",
                               basicProperties: null,
                               body: body);
          Console.WriteLine(" [x] Sent {0}", message);
        }
      }
    }
  }
}

In reference list add files:

RabbitMQ.Client.dll

and

RabbitMQ.ServiceModel.dll

Which you previously downloaded and uzip it.

When you execute that code open RabbitMQ management, and you should see something like this:

Click on queues button, click on hello

Scroll down and expand get messages

 Click on Get messages button, and you should see your message

Entity framework and Mef example

Details
Written by: Stanko Milosev
Category: C#
Published: 20 May 2016
Last Updated: 17 November 2021
Hits: 5839

Here I already explained what is necessary for creating first step in Mef.  

Right click on references choose Manage NuGet Packages

Install Entity Framework

 In my case I added a folder, and I called it a model, there I created new class which I called PersonModel

Person model code:

  public class PersonModel
    {
        [Key]
        public int PersonId { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public DateTime BirthDate { get; set; }
    }

    public class MyTableDBContext : DbContext
    {
        public DbSet MyTable { get; set; }
    }

In App.config add connection string like:

 
  <connectionStrings>
    <add name="MyTableDBContext" connectionString="Data Source=myServer;
                                                    Initial Catalog=myDb;
                                                    Integrated Security=False;
                                                    Persist Security Info=True;
                                                    User ID=myUser;
                                                    Password=myPass"
             providerName="System.Data.SqlClient" />
  </connectionStrings>

Whole code for export in my case looks like:

using System;
using System.ComponentModel.Composition;
using DbToJson.Model;
using System.Linq;

namespace DbToJson
{
  public interface IDbToJson
  {
    void Seed();
    string DbToJson();
  }

  [Export(typeof(IDbToJson))]
  public class DbToJsonMef : IDbToJson
  {
    public string DbToJson()
    {
      var db = new MyTableDBContext();
      var records = db.MyTable.ToList();
      string myJson = "";
      foreach (var record in records)
      {
        if (myJson == "")
        {
          myJson = "[" +
            "{'PersonId': '" + record.PersonId + "'" +
            "', 'FirstName': '" + record.FirstName + "'" +
            "', 'LastName': '" + record.LastName + "'" +
            "', 'BirthDate': '" + record.BirthDate + "'" +
            "}";
        }
        else
        {
          myJson = myJson +
            "{'PersonId': '" + record.PersonId + "'" +
            "', 'FirstName': '" + record.FirstName + "'" +
            "', 'LastName': '" + record.LastName + "'" +
            "', 'BirthDate': '" + record.BirthDate + "'" +
            "}";
          ;
        }
      }

      myJson = myJson + "]";
      return myJson;
    }

    public void Seed()
    {
      using (var db = new MyTableDBContext())
      {
        db.MyTable.Add(new PersonModel
        {
          FirstName = "Stanko",
          LastName = "Milosev",
          BirthDate = DateTime.Now
        });
        db.MyTable.Add(new PersonModel
        {
          FirstName = "John",
          LastName = "Doe",
          BirthDate = DateTime.Now
        });
        db.MyTable.Add(new PersonModel
        {
          FirstName = "John",
          LastName = "Lennon",
          BirthDate = DateTime.Now
        });
        db.SaveChanges();
      }
    }
  }
}

I made two parts, one I called seed, that one I need to fill database with some data, the other method is for displaying data in JSON.

Now import looks like:

using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using DbToJson;

namespace SeedAndConvertToJson
{
  class Program
  {
    private CompositionContainer _container;

    [Import(typeof(IDbToJson))]
    private IDbToJson dbToJson;
    private Program()
    {
      var catalog = new AggregateCatalog();
      catalog.Catalogs.Add(new AssemblyCatalog(typeof(Program).Assembly));
      catalog.Catalogs.Add(new DirectoryCatalog(@"../../lib"));

      _container = new CompositionContainer(catalog);

      try
      {
        this._container.ComposeParts(this);
      }
      catch (CompositionException compositionException)
      {
        Console.WriteLine(compositionException.ToString());
      }
    }
    static void Main(string[] args)
    {
      Program p = new Program();
      p.dbToJson.Seed();
      Console.WriteLine(p.dbToJson.DbToJson());
      Console.ReadKey();
    }
  }
}

For the import part we also need to install Entity Framework

Hello world MEF example

Details
Written by: Stanko Milosev
Category: C#
Published: 11 May 2016
Last Updated: 20 May 2016
Hits: 10782

Mef is Managed Extensibility Framework. That means that with MEF we can easily make plugin system.

To write this article mostly I was using this article.

In this my small example I am going to make one class library, called MefExport, and with that library I will display "hello world" message in console, in separate solution, in order to have separated as much as possible.

Then I will make console application, called MefImport where I will use method from MefExport.

Let's first make console application, which we will call MefExport:

Right click on references -> Add Reference...

Choose System.ComponentModel.Composition

Code for export:

using System;
using System.ComponentModel.Composition;

namespace MefExport
{
    public interface IHelloWorld
    {
        string HelloWorld();
    }

    [Export(typeof(IHelloWorld))]
    public class MefHelloWorld : IHelloWorld
    {
        public string HelloWorld()
        {
            return "Hello world";
        }
    }

}

After building copy export dll in the lib folder. Change line: catalog.Catalogs.Add(new DirectoryCatalog(@"../../lib")); According to where dll is located.

Import:

using System;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using MefExport;

namespace MefImport
{

    class Program
    {
        private CompositionContainer _container;

        [Import(typeof(IHelloWorld))]
        private IHelloWorld helloWorld;

        private Program()
        {
            var catalog = new AggregateCatalog();
            catalog.Catalogs.Add(new AssemblyCatalog(typeof(Program).Assembly));
            catalog.Catalogs.Add(new DirectoryCatalog(@"../../lib"));

            _container = new CompositionContainer(catalog);

            try
            {
                this._container.ComposeParts(this);
            }
            catch (CompositionException compositionException)
            {
                Console.WriteLine(compositionException.ToString());
            }
        }

        static void Main(string[] args)
        {
            Program p = new Program();
            Console.WriteLine(p.helloWorld.HelloWorld());
            Console.ReadKey();
        }
    }
}

Example project download from here.

Connecting to Oracle XE with ManagedDataAccess

Details
Written by: Stanko Milosev
Category: C#
Published: 31 January 2016
Last Updated: 23 August 2018
Hits: 5461

First I downloaded Oracle Developer Tools for Visual Studio 2015 from here. In my reference list I added Oracle.ManagedDataAccess. My App.config looks like:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="maxaDB"
      connectionString="User ID=userName;Password=pass;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ipAddress)(PORT=myPort))(CONNECT_DATA=(SERVER=dedicated)(SERVICE_NAME=XE)))"
    />
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

User ID and Password have to go before Data Source. Then I added "Oracle.ManagedDataAccess.Client;" in using list, and after that connecting was simple:

string maxaDb = ConfigurationManager.ConnectionStrings["maxaDB"].ConnectionString;
OracleConnection conn = new OracleConnection();
In using list you will need System.Configuration, as well in references.
  1. The name 'ConfigurationManager' does not exist in the current context
  2. WebSockets
  3. XSL transformations
  4. Simple events example

Subcategories

C#

Azure

ASP.NET

JavaScript

Software Development Philosophy

MS SQL

IBM WebSphere MQ

MySQL

Joomla

Delphi

PHP

Windows

Life

Lazarus

Downloads

Android

CSS

Chrome

HTML

Linux

Eclipse

Page 10 of 137

  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14