Tag Archives: windows-dev

CS-Script (C#script) – nejlepší skriptovací prostředí pro Windows

Microsoftí framework .NET nepovažuji za nejlepší možnou implementaci podobné věci. JVM je prostě lepší. Ale .NET obsahuje jednu kouzelnou funkci – zabudovaný kompilátor.

Na každém počítači, kde je .NET, je možné kompilovat objekty v C#. (Když je nainstalované i MS Visual Studio, je možné kompilovat i C++/CLR, ale to není pro širokou bázi zákazníků použitelné).

Co z toho plyne? Je možno napsat malou aplikaci, která dostane jako vstup textový soubor se skriptem v syntaxi C#, zkompiluje ho a spustí. Získáme tím silný skriptovací nástroj – oproti ve WSH zabudovanému VBScriptu či JScriptu v podstatě neomezený.

Tímto způsobem uvažovalo mnoho lidí a podobných nástrojů se dá stáhnout mnoho. Pan Programátor Oleg Shilo ovšem přemýšlel i dál a stvořil CS-Script. Kromě vlastního „interpretu“ C# skriptu (vím – není to interpret, ale kompilátror+spouštěč) udělal i sadu velmi silných knihoven a nástrojů… a vše to dal k dispozici pod licencí, která umožňuje i komerční použití.

Co to tedy umí?

Skriptování v C#, tak jak by člověk čekal. Ale taky kompilaci skriptu do EXE souboru, takže pak není potřeba žádný skriptovací systém. Nebo do DLL, takže se dá použít z dalších aplikací.

Tisk ze skriptu. Vytváření WinForms dialogů. Práce s webem(stahování URL včetně prostupu přes proxy, parsování XML, …). Použití.NET remotingu – jako klient i jako server.

Použití COM objektů – bez složitých nastavování. Následujcí kus kódu použije COM objekt pro zjištění režimu napájení. Jde to udělat jednodušeji?

//css_prescript com(SYSINFO.SysInfo.1, SisInfoLib);
using System;
using SisInfoLib;

 

class Script
{

 

[STAThread]
static public void Main(string[] args)
{

SysInfoClass sysInfo = new SysInfoClass();

switch (sysInfo.ACStatus)

{
case 0:

Console.WriteLine(„Not using AC power“);
break;

case 1:

Console.WriteLine(„Using AC power“);
break;

default:

Console.WriteLine(„Unknown AC power status“);
break;

}

if (sysInfo.BatteryLifePercent != 255)

Console.WriteLine(„Battery life „+sysInfo.BatteryLifePercent+“%“);

else

Console.WriteLine(„Battery charge status not known“);

}

 

}

Na tom prvním řádku (//css_prescript) je schováno to kouzlo – pomocí tohoto rozšíření jazyka se dělají věci, které by z „prostého“ C# skriptu šly dělat dost těžko.

On-fly použití WebServices, tj. v rámci skriptu se stáhne WSDL soubor, vygeneruje WebServices klient a je možno ho použít. Asi takto jednoduše:

//css_prescript wsdl(http://localhost/hello/hello.asmx?WSDL, HelloService);
//css_import HelloService;
using System;
using System.Xml;

 

class Program
{

 

static void Main(string[] args)
{

Console.WriteLine(new HelloWorld().SayHello());

}

 

}

Statické použití WebServices – přiloženým nástrojem se z WSDL vygeneruje objekt klienta. A ten se používá. Snadno, rychle.

Vytvoření WebServices serveru …

using System;
using System.Web;
using System.Web.Services;

 

public class HelloWorld : System.Web.Services.WebService
{

 

[WebMethod]
public string SayHello()
{

return „Hello World (WebService)“;

}

 

}

… a jeho deploy do MS IIS:

cscs css2ws Hello.cs HelloWorld

a tak dále.

Prostě: moc hezké prostředí, doporučuji vyzkoušet.

[Home page projektu]

 

Reklamy

Napsat komentář

Filed under Počítače, vývoj HW a SW