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.