Wednesday, April 17, 2013

Как да си напишем .net web Service и да го ползваме в Delphi 2-ра част

Как да си напишем .net web Service и да го ползваме в Delphi

продължение на http://mehmedov-web.blogspot.com/2013/02/service-net-delphi.html

В този урок продължаваме с писането не service на .net и използването му в Delphi
с разликата, че този път е web service.

Създаваме си един метод GetData, който връща обекти от тип user, като ги конвертира в JSON - връщаме на клиента string от JSON обекти.

Клиента може да се напише метод който да парсва JSON тук показвам как се транспортва колекция от обекти (user)

1. Създайте нов проект в .NET  изберете WCF service library.


























2.Добавете следния код в IService1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace Test
{
[ServiceContract]
public interface IService1
{
[OperationContract] string GetData(); }
}



3.Създайте нов class user.cs и добавете следния код в него.





















using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
public class user
{
public string username { get; set; }
public string phone { get; set; }

public user()
{

}

}
}


4.Добавете следния код в Service1.cs





using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

using Newtonsoft.Json;
using System.Xml.Serialization;

namespace Test
{

public class Service1 : IService1
{
public string GetData()
{
user u = new user();

u.username = "Michael";
u.phone = "8977xxxxxx";

List<user> users = new List<user>();

users.Add(u);
users.Add(u);
users.Add(u);
users.Add(u);

string myJson = JsonConvert.SerializeObject(users, Formatting.Indented);

return myJson;
}


}
}


8.Компилирайте


9. Изберете F5 ще ви се покаже следния диалог от него копирайте 
endpoint addres = http://localhost:8733/Design_Time_Addresses/Test/Service1
това е вашия service адрес който ще ни трябва за delphi проекта.

Използване на .net web service Delphi



1.Създайте нов проект на delphi примерно HelloWorld.


















2. Изберете File - New - Other - webServices - WSDL IMPORTER




















3.Изберете ОК и в следващата форма в поле location of WSDL or URL
добавете вашия service url http://localhost:8733/Design_Time_Addresses/Test/Service1/?wsdl

4.Избирайте Next докато Finish бутона ви стане активен.

5.Delphi ще ви генерира service1.pas файл който е трябва да добавите в code behind на вашата форма

6.Добавете нов бутон във вашата форма и кликнете два пъти на него.

7.Добавете следния код

трябва да добавите HelloWorld_TLB в uses


interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, HelloWorld_TLB, Service1, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Service1: IService1;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

   // стартираме service
   Service1 := GetIService1();
   ShowMessage(Service1.GetData);

end;

















Поздравление вие имате .net Service работещ на delphi application

Поздрави Мехмедов!


Monday, March 18, 2013

bg join сподели ме!


ОТКРИЙ ТОВА КОЕТО ТЪРСИШ!

Направи живота си различен!


Идеята!
Всички ние доста често скучаем и се опитваме да си намерим занимание.
Целта на сайта е да ви предостави услуга, която
лесно и бързо ще ви даде списък от събития на потребители
за които вие може да направите заявка и ако бъде одобрена от
потребителя, ще бъдете поканени към това събитие например:
(Дискотека, Ресторант, Кафе, Планина, Море и др...)


Това е страхотен начин да се запознаете с нови и интересни хора.

Как работи?
Сайта е социална мрежа, които ви дава възможност да споделяте събития.

Примерно предприемате пътуване до София с кола след една седмица.
След това пускате това събитие в сайта и чакате някой да прояви интерес към него и да ви прати заявка.
Вие решавате дали да приемете или не неговото присъствие.


Така вие споделяте това събитие, като ползата от това може да бъде:

1.Разделяне на пътните.
2.Чудесна компания.
3.Срещане на нови интересни хора.
4.Запознанства.


Ползата от този тип услуга не се ограничава до тук, вие също може да направите заявка към друго събитие на даден потребител.

Благодаря Ви!
Поздрави Мехмедов
co-founder: http://bgjoin.com/
email: info@bgjoin.com

Wednesday, March 13, 2013

Ajax Crawlable Demo за работа с динамични сайтове



Здравейте, отново е време да се захванем с някой нови интересни неща с които се занимавах тези дни.

Започнах нов проект за споделяне на събития.

http://bgjoin.com/

в сайта може да разгледате секция "КАК РАБОТИ ?".

Но да се върна към темата:

Технологиите, които ползвам за html 5, jquery, ajax, css и php за rest service.

По време на разработка на проекта  всичко беше добре, докато не стигнах до извода, че динамичните сайтове не се индексират от google.

Веднага се разрових в internet и открих решение на проблем става въпрос за:

how to make ajax crawlable

Ето и мое демо http://test.nh.zonebg.com/

Идеята на всичко това е, че когато зареждаме динамично сайта ние работим с # hash знака
и така с jquery прихващаме този селектор, но проблема е  че това се рендира при клиента 
и няма content които да бъде индексиран от google.

За целта от google са намерили решение, като след # добавяме и удивителен знак (!)
получаваме www.example.com/#!99 примерно 99 играе ролята на ID за да може после да се направим заявка и да се генерира content.

как става това.

google замества кобинацията от #! със ?_escaped_fragment_  което играе ролята на ключ за търсене в $_GET.

Примерно $_GET['_escaped_fragment_'];


но за да стане всичко по прегледно нека пусна и кода



Надявам се да съм бил полезен.

Ако имате въпроси пишете ми

Поздрави Мемхедов!


Tuesday, February 19, 2013

NodeJS пример четене от MySQl



Ех доста време си играх с това чудо, докато си направя прост
пример с който да покажа как се чете от база данни и как се обработва DOM

NodeJS пример четене от MySQl -
http://jakomen.chat.jakomen.jit.su/

И тук
http://chat.pmsys.org/

Ето и кода да се забавлявате
https://github.com/halachev/NodeJS-Example---MySql

Поздрави Мехмедов

















Monday, February 18, 2013

Hello World на node.js


Hello World на node.js

Здравейте, днес ще ви покажа как да инсталираме node.js и да си направим hello world.


Сваляте файла от http://nodejs.org/ инсталирате

пускате cmd козолата и пишите:

npm install -g express

намирате папката на инсталацията създавате си файл app.js (Най - добре си направете нова папка)

пишите следния код и запазвате (ползвам notepad++):

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Стартирате node server с конзолна команда:

node + file name

example: node app.js

Стартирате chrome или mozila локално на адрес http://localhost:1337/

Честито имате Hello World!

Поздрави Мехмедов

Wednesday, February 6, 2013

Как да си напишем Service на .NET и да го ползваме в Delphi XE.

Using C# Library in Delphi XE


Как да си напишем Service на .NET и да го ползваме в Delphi XE


Ще започна с един прост пример "Hello World", който онагледява целия процес при изграждането на Dynamic-link library

1. Създайте нов проект в .NET  изберете class library.




















2. Изтрийте файла class1.cs
3. Създайте нов interface: ITest.cs























4. Създайте нов class : Test.cs

5. Добавете следния код в ITest.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace HelloWorld
{
public interface ITest
{
[ComVisible(true)]
string HelloWorld();
}
}


6.Добавете следния код в Test.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace HelloWorld
{
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public class Test : ITest
{
public Test()
{

}

[ComVisible(true)]
public string HelloWorld()
{
return "Hello World";
}
}
}

7.Отворете файла AssemblyInfo.cs и променете  [assembly: ComVisible(false)]
 на  [assembly: ComVisible(true)]


8.Компилирайте

9.Отворете с administrator command prompt на Visual Studio и регистрирайте вашата dll-ка














regasm [target path] /tlb:HelloWorld.tlb

Тarget path e пътя до вашата dll-ка пример:  (D:\Projects\HelloWorld\\HelloWorld\bin\Debug\HelloWorld.dll)


Използване на Dll в Delphi


1.Изберете Component - Import component - import type library.Изберете Next
2. Изберете (потърсете) HelloWorld от списъка - Изберете Next
3.Изберете отметка "Generate Component Wrappers"
4.Изберете отметка "Create Unit"

Създайте нов проект добавете в uses HelloWorld_TLB
Добавете файла създаден в .net HelloWorld.dll  в Debug\Win32

Ето и кода в Delphi


unit HelloWorld;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, HelloWorld_TLB, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    ftest: TTest;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ftest := TTest.Create(nil);
  ShowMessage(ftest.HelloWorld);
end;

end.


Резултат



















Надявам се да съм бил полезен!





Tuesday, January 8, 2013

.net custom control

.net custom control


Преди време тръгнах да пиша на .net custom control с идеята да си направя Grid View.
Оказа се , че се получи нещо прилично за което ми пишат вече разни хора.


Ако мислите, че и на вас ви харесва идеята, може да се включите към проекта като ми пишете на email.


Поздрави мехмедов!