Applets de .NET usando C#
By: Date: julio 26, 2008 Categories: Programación

Ese TextBox y el Boton “Saludar”, Si lo puedes ver, es porque se esta ejecutando un Applet .NET en tu computadora, si no lo puedes ver, es por que no tienes instalado el FrameWork .NET de preferencia el 2.0

Hoy despues de un tortuoso camino, encontré como hacer Applets de .NET, y es que aunque leia la documentación y hacia las cosas al pie de la letra, simplemente no funcionaba.

A punto estaba de tirar la toalla, cuando sorpresa, por fin funciona. La solución es muy simple, ejecuta los archivos después de descargarlos de internet, nunca en el disco duro local.

¿Por qué?, No tengo la menor idea, pero si se intenta ejecutar un applet en Windows Vista desde el disco duro local, simplemente no funcionara, funciona solo después de subir los DLL al servidor y ejecutarlo entonces desde la URL.

Porque tanto alboroto.

Bueno hoy simplemente pensé, .NET siendo como Java debería tener un modo de Applet para incrustar aplicaciones pre compiladas en el WEB, aplicaciones que luego sería ejecutadas en la pc que visite la WEB

El código que hace esto posible, es muy simple, de hecho es prácticamente una aplicación Windows Form, solo que en lugar de ser un EXE, se espera que sea una biblioteca de clases o DLL para Windows

El código del DLL es:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace IEControl
{

    public class UserControl1 : UserControl
    {

protected override void Dispose(bool disposing)
        {
            if (disposing)
{
              
 if (components != null) {
              
     components.Dispose();
              
 }
            }
          
 base.Dispose(disposing);
        }

        private void InitializeComponent()
        {
            this.button1 =
new System.Windows.Forms.Button();
            this.label1 =
new System.Windows.Forms.Label();
            this.intro =
new System.Windows.Forms.TextBox();
            this.saludo =
new System.Windows.Forms.Label();
          
 this.SuspendLayout();
            //
            // button1
            //
          
 this.button1.Location = new System.Drawing.Point(24, 71);
          
 this.button1.Name = “button1”;
          
 this.button1.Size = new System.Drawing.Size(171, 35);
          
 this.button1.TabIndex = 0;
          
 this.button1.Text = “Saludar”;
          
 this.button1.UseVisualStyleBackColor = true;
          
 this.button1.Click += new System.EventHandler(this.Button1Click);
            //
            // label1
            //
          
 this.label1.Location = new System.Drawing.Point(24, 11);
          
 this.label1.Name = “label1”;
          
 this.label1.Size = new System.Drawing.Size(171, 19);
          
 this.label1.TabIndex = 1;
          
 this.label1.Text = “Nombre”;
            //
            // intro
            //
          
 this.intro.Location = new System.Drawing.Point(27, 39);
          
 this.intro.Name = “intro”;
          
 this.intro.Size = new System.Drawing.Size(167, 20);
          
 this.intro.TabIndex = 2;
            //
            // saludo
            //
          
 this.saludo.Location = new System.Drawing.Point(24, 126);
          
 this.saludo.Name = “saludo”;
          
 this.saludo.Size = new System.Drawing.Size(169, 30);
          
 this.saludo.TabIndex = 3;
          
 this.saludo.Text = “Saludos — “;
            //
            // UserControl1
            //
          
 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
          
 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
          
 this.Controls.Add(this.saludo);
          
 this.Controls.Add(this.intro);
          
 this.Controls.Add(this.label1);
          
 this.Controls.Add(this.button1);
            this.Name =
“UserControl1”;
            this.Size =
new System.Drawing.Size(231, 186);
          
 this.ResumeLayout(false);
          
 this.PerformLayout();
        }
        private
System.Windows.Forms.Label saludo;
        private
System.Windows.Forms.TextBox intro;
        private
System.Windows.Forms.Label label1;
        private
System.Windows.Forms.Button button1;
    }

        public UserControl1()
        {
    
          
 InitializeComponent();
            
        }
        
        void Button1Click(object sender,
EventArgs e)
        {
            saludo.Text =
“Saludos: ” + intro.Text;
          
 MessageBox.Show (“Click en el boton”,”Last Dragon”);
        }
    }
}

Y el Html que lo lanza como Applet es:

<object id=”IEcontrol” height=”620″ width=”500″
classid=”https://www.lastdragon.net/misarchivos/applets/appletnet/IEControl.dll#IEControl.UserControl1″>
</object>

15 thoughts on “Applets de .NET usando C#

  1. Usa: Mozilla Firefox Mozilla Firefox 2.0.0.14 en Windows Windows Vista - Detectado...

    NO SE VE EN FIREFOX PERO EN EXPLORER SI Y NO AVISA QUE SE VA A EJECUTAR UN PROGRAMA COMO AVISA CON LOS JAVAS DIME SE PUEDEN ESCONDER VIRUS

  2. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows Vista - Detectado...

    Pues he estado probando, para conocer los límites de un applet .NET, pues la documentación no me lo deja muy en claro.

    Parece que desde el applet no es posible llegar al kernel ni a las Apis del sistema, por lo que parecen seguros, como los applets javas que están limitados.

    Solo que los applets de java son bien conocidos en sus limitantes al sistema, el applet .net como dices, ni siquiera avisa con un acceso denegado que intento hacer algo prohibido, simplemente no lo hace

    Este otro applet .Net https://www.lastdragon.net/misarchivos/applets/relojpc/ si fuera un EXE accesaria al kernel y mostraría el tiempo que lleva una computadora prendida, pero… el applet no alcanza a llegar al kernel, aunque tampoco da errores ni accesos denegados.

    Parece que los applets .NET aun están muy verdes

  3. Usa: Opera Opera 9.50 en Windows Windows Vista - Detectado...

    “Solo que los applets de java son bien conocidos en sus limitantes al sistema”

    Se llama: sandbox , y seria muy inusual (no dire tonto) si te dejara acceder al api del sistema.

    “Parece que los applets .NET aun están muy verdes”

    Muy verdes?, crees que en el futuro veras “applets” (controles embebidos) en c#, teniendo silverlight y tecnologias similares?. Del FW 1.0 al 2.0, esta forma de trabajar fue perdiendo caracteristicas,asi que yo que tu no esperaria por mejoras.
    La verdad no le veo utilidad, si quieres insertar controles en paginas, solución facil: usa asp.net

  4. Usa: Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003 - Detectado...

    No se pueden obtener accesos a la api,ni P/invokes ni COM+ por que el assembly tiene los minimos niveles de seguridad, la unica forma seria que el cliente por medio del caspol.exe o en el administrador de .net, le diera permisos a tu executable, ya sea por un strong name o por el nombre del assembly. De esta manera deberias tener acceso a todos los recursos, asignadole el permiso de fulltrust.

    Los permisos que tienen los assemblies cuando los bajas desde internt son de la zona internet, es decir, pueden imprimir, mostrar dialogos y tienen un temporal aislado.

    Es basicamente lo que hace el silverlight, la unica diferencia es que se ejecuta dentro de un dominio controlado o sandbox de .net, el que tiene los permisos limitado por seguridad.

    Podrias darle permisos en el cliente con el siguiente comando:
    caspol.exe -m -pp off -addgroup 1. -strong -file “archivo.dll” -noname -noversion FullTrust -name “archivo” -description “Archivo:prueba seguridad”

    pero… tendría que tener una copia el cliente y hacerlo manualmente, ja ja. Quizas serviria solo en ambientes corporativos donde los usuarios necesitaran una herramienta Windows forms y donde puedes lanzar una politica por active directory y asignarle permisos de full trust, pero para eso esta Click once.

  5. Usa: Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003 - Detectado...

    Lo que comenta Marioly, en parte tiene razón, pero si requirieras que la aplicación accediera a ciertos recursos del equipo, o que realizara cierto procesamiento haciendo uso de los recursos del cliente(analisis de tendencia en unos datos, calculos para hacer una simulacion o escenario), pero quisieras evitarte el problema de que el usuario tuviera que hacer la instalación, esta seria la única manera de implementarlo.

    Como menciona, microsoft se ha decantado por el silverlight al contrario de estas soluciones, ademas que el silverlight esta un poco mas completa y es mas facil de implementar, aunque el unico problema, como flash, es necesario instalar un plugin. Asi que de instalar algo al usuario no te salvas, jeje.

    Un articulo donde exponen este tipo de deployment y mencionan una posible solución usando una firma sobre el archivo ademas del strong name:

    http://msdn.microsoft.com/en-us/library/a7as3z1d(VS.71).aspx

  6. Usa: Internet Explorer Internet Explorer 6.0 en Windows Windows XP - Detectado...

    El siguiente comentario fue escrito por un Wazz espurio =) No fue Wazz

    Ya se los he dicho mocosos, yo no soy facil de tomar por sorpresa con ingenieria social.

    Para suplantar a alguien antes deben conocerlo para poder saber como escribe, asi que
    aunque te arda bien el orto, SUERTE! disque anonimo

    marioly tiene razon, el que esta verde eres tu last dragon,
    este post es patetico y deprimente, mejor borralo, asi te ayudas a ti y a tu “reputacion” xD

    marioly rulez!
    lastdragon empiezas a sukear xD lamer

  7. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows Vista - Detectado...

    Yo difiero de lo que Marioly argumenta, no del SandBox, eso esta bien

    Me refiero a la parte de silverlight

    Afirmarlo de esa forma es como decir, que no veremos Applets Java solo porque existe Flash

    Silverlight es para Flash

    Lo que .NET para Java

    En todo caso tal vez no tenga futuro los applets de .NET tan simple porque resulta mejor hacerlo en Java que es una tecnología bien conocida..

    Silverlight es una herramienta multimedia, no creo que tenga forma de competir contra un applet, ni siquiera son terrenos similares, uno es multimedios y el otro son aplicaciones.

    Y tomando en cuenta los años que lleva en línea los Flash, tampoco le veo mucho futuro a silverlight, sera un competidor estorbo, pero solo eso.

  8. Usa: Opera Opera 9.50 en Windows Windows Vista - Detectado...

    “Afirmarlo de esa forma es como decir, que no veremos Applets Java solo porque existe Flash”

    No, no los veremos por muchas otras cosas, los applets java estan casi obsoletos.

    “Silverlight es una herramienta multimedia, no creo que tenga forma de competir contra un applet”

    Ve el ejemplo de Flash, segun tu logica, son completamente diferentes, sin embargo muchas aplicaciones en Java se portaron a Flash, ejemplo yahoo games

    “Y tomando en cuenta los años que lleva en línea los Flash, tampoco le veo mucho futuro a silverlight”

    Toma encuenta lo que llevaba Java en el mercado cuando llego .NET, su tiempo de existencia no impidio que la plataforma de microsoft fuera mucho mas que un competidor estorbo.

    En fin, sin ofender, no entiendo tu gusto de ir para atras :/ , es como visitar un blog del 2000

  9. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows Vista - Detectado...

    No voy para atrás, sé en qué año estoy.

    Java no es obsoleto, si no fuera por Ximian-Novell y Miguel de ICaza, .Net no saldría de entornos Microsoft , Java es posible hasta en las cafeteras.

    .NET es un buen competidor para Java, pero no sera totalmente mejor, mejores ideas si, pero lleva la maldición de su creador, Miguel de Icaza ayuda mas a .Net que la misma Microsoft

    El mismo destino tendrá ese juguete, silverlight, Flash funciona en mas plataformas, silverlight funcionara en entornos microsoft y hasta ahí se quedara,

    Se que Windows como OS domina el mercado, pero es obvio que esto ya no será fácil de mantener por mucho tiempo, a adopción del formato de Microsoft como standart es un claro ejemplo, debería ser aprobado inmediatamente, pero no fue asi porque, la tendencia a nivel global no va a favorecer a microsoft, quien quiera aprender .NET en lugar de Java estará cometiendo un gran error.

    Yo muestro mucho código .NET aquí porque es fácil, me gusta el concepto, si, pero antes de escribir mi primera clase de .NET lo hice en Java años antes.

    Debido a la opinión que me expresan por el MSG algunos de los contactos, creo que el contenido “retro” les gusta a una interesante cantidad de personas que están interesados en saber más y ya que yo tengo ese “know how” acumulado ¿porque no?

  10. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows Vista - Detectado...

    Tienes razon, no dijiste obsoleto, solo casi

    No, no los veremos por muchas otras cosas, los applets java estan casi obsoletos

    De acuerdo, los applets de Java no estan CASI obsoletos.

    sobre

    “silverlight funcionara en entornos microsoft y hasta ahí se quedara”
    conoce: moonlight http://www.mono-project.com/Moonlight

    como lo comentado anteriormente, que haria Microsoft sin caudillos como Miguel de Icaza, bueno ojala que siempre este ahi apoyando estos proyectos.

  11. Usa: Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003 - Detectado...

    Difiero en que .Net sea una plataforma de estorbo, y menos como mencionas, que va rumbo al fracaso, ya que aparte que tiene mucho respaldo ($$$) muchas gente esta haciendo uso de ella.

    Ahora con respecto a tus comentarios, nada mas tengo algo que comentar, como por ejemplo:

    “Parece que los applets .NET aun están muy verdes”

    Como tal, en cuestion de arquitectura, .Net no tiene un soporte para applets, y tampoco figura ese “modo” de aplicaciones en niguna parte, pero pos ya ves, es tan flexible que se puede hacer. Aunque tambien una applet se considerar a cualquier aplicacion que pueda correr dentro de aplicacion, como lo es flash, silverlight en el caso de los navegadores Web. Como te comento, se puede, pero es como si quisieras freir un huevo con la tapa de una olla, se puede, pero no es lo mas recomendable.

    Otro comentario:

    “Silverlight es una herramienta multimedia, no creo que tenga forma de competir contra un applet”

    Un applet, como tal es cualquier aplicacion o codigo que funcione dentro de otra aplicacion en un sandbox, logico, en el cual el interprete o runtime no este dentro del mismo motor del browser,como el caso de Java, el Java runtime. Pero en silverlight puedes hacer una aplicacion, con botoncitos y demas, no es una obligacion para la plataforma el poner animaciones o sonidos, asi como tampoco lo es para flash. Entonces alternativas como adobe air, Adobe flex, JavaFX no serian viables, ya que su finalidad es crear aplicaciones que requieren mucha interactividad (salida instantanea de datos, calculos, etc) para casos donde el tiempo de deployment debe ser minimo y una aplicacion web no seria adecuada. Pueden competir,y bastante bien,ademas los clientes tienden a preferirlas por el eye candy.

    Otro mas:

    “En todo caso tal vez no tenga futuro los applets de .NET tan simple porque resulta mejor hacerlo en Java que es una tecnología bien conocida.”

    Como menciona Marioly, no esta soportado, .Net no fue diseñado para hacer applets, si requieres hacerlas, las puedes hacer con silverlight sin ningun problema.

    Usar Java por que es conocida, entonces seria mejor usar C antes que java, o fortran y cobol antes que C, o ada por que fue creado por la milicia norteamericana, como tal no es una razon viable el por que de los applets no deben realizarse en una plataforma u otra, seria mas sencillo decir, java tiene un nicho muy bien ganado en cuanto a los applets, por que desde el principio asi fue diseñado y esta implementado en su arquitectura, .Net como tal no lo implementa, pero ya ves, puedes hacerlo tambien.

    Por ultimo:

    “como lo comentado anteriormente, que haria Microsoft sin caudillos como Miguel de Icaza”

    Microsoft no es una blanca paloma, pero Novell le paga a Miguel de Icaza, y si a Novell le conviene que silverlight salte a linux y otros OS por medio de moonlight, por que Microsoft tenga la manos o no metidas en esto, o por el trato que tengan con Novell, que bueno, mejor para nosotros, y si Microsoft no ofrece apoyo para la plataforma en la cual trabajas, pos simplemente, no compres sus productos o en su defecto no los uses, pero como comento no es nada mas decir, no sirve por que Microsoft es malo. Los de Microsoft son bien cabrones, pero eso no quita, que a mi gusto, la plataforma de .Net es bastante flexible y es muy buena para desarrollo.

  12. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows Vista - Detectado...

    Dark Zen

    Cuando me referia a la maldicion de su creador (Microsoft) no es que pensara que son malos, pensaba en que hasta ahora no conozco un framework de microsoft que funcione fuera de su propio OS, si Miguel de Icaza no le hubiera gustado el concepto de .NET, no existiria mono.

    La maldicion es, que solo hacen cosas que funcionan para ellos mismos, como el Java de Microsoft el asunto que llevo a jucio a Sun Vs Microsoft, pero ya son otros casos e historias.

    No tengo nada encontra de .NET me gusta, ya lo deje claro, el metodo filosifico de distribucion es lo que no me gusta.

    sobre los estorbos, fuera de .NET en muchos años Microsoft no ha tenido ningun producto interesante, estaba pensando en muchas cosas cuando lo exprese como un estorbo.

  13. Usa: Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003 - Detectado...

    Lo de java y microsoft si tienes razón, la regaron toda con el agandalle que pretendían hacerle a java, y básicamente esa es la razón por que se origino .Net.

    Por cierto, el día de hoy, leyendo las noticias, microsoft según tiene un proyecto llamado Midori, el cual tentativamente esta basado en Singularity, singularity es un OS que esta escrito en Managed code (una versión especial de C#) y que básicamente es un OS con un micro kernel, que opera con modulos como Plan9 o Inferno, se ve que esta bastante interesante ya que anuncian que vendría sustituir al Windows (cosa que dudo).

  14. Usa: Internet Explorer Internet Explorer 7.0 en Windows Windows XP - Detectado...

    Muy buen post, he llegado aquí buscando en bing y la verdad es que ha sido una grata sorpresa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *