AJAX: Cómo “embeber” un archivo JavaScript en una DLL

Recordando el post sobre cómo crear un UpdateProgress, puede ser que queramos que nuestro JavaScript lo queramos incrustar en una DLL, por lo que sea, para proteger el JavaScript que no llega al cliente, por ejemplo.

Objetivo:

Debemos desarrollar una especie de librería de clases, pero en vez de clases .NET, JavaScript. Recuperar luego ese recurso será muy sencillo, al igual que incrustarlo.

Requisitos:

Al igual que en el anterior artículo, copy-paste, cualquier versión de ASP.NET AJAX nos sirve, tanto la 1.0 (para .NET 2.0) descargable en http://ajax.asp.net/, como la versión nativa de ASP.NET AJAX. Si usas VS 2008 (o Visual Web Developer 2008 Express Edition) no tendrás que descargar nada.

Análisis:

Si tenemos una libreria en nuestra aplicación web sirve, sino debemos crear una libreria de clases de C#, en mi ejemplo se llamará AjaxLibrary.

Por lo tanto, necesitamos un archivo .js que contenga el código JavaScript del anterior artículo, ClientLibrary.js en este:

function pageLoad() {

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginPageRequest);

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endPageRequest);

}

 

function beginPageRequest(sender, args) {

    updateProgress.className = "showed";

}

 

function endPageRequest(sender, args) {

    updateProgress.className = "hidden";

}

ClientLibrary.js

Coding.

Incrustando el archivo

image

Simplemente añadimos a nuestro proyecto el archivo .js y en sus propiedades cambiamos la propiedad “Build Action” y la establecemos en “Embedded Resource”.

Esto lo que hará es que el archivo js, se incruste en la DLL, como podemos ver en Reflector.

image

Preparando la librería

Bien, el archivo ya está dentro de nuestra DLL… Pero… Con eso no hacemos nada de nada… Debemos convertirlo en un recurso web. Para ello, antes de nada debemos “desocultar” los archivos ocultos del proyecto, como se muestra en la siguiente figura, el punto 1.

image

Eso nos permitirá ver el archivo del punto 2, que es el que nos interesa para convertirlo en un recurso web. Ese archivo, AssemblyInfo.cs, contiene toda la información del ensamblado.

Debemos añadir en nuestro proyecto la referencia System.Web si no la tenemos y en AssemblyInfo.cs, el namespace System.Web.UI.

Y en este archivo debemos añadir la siguiente línea:

[assembly: WebResource("AjaxLibrary.ClientLibrary.js", "text/javascript")]

La librería ya está lista.

Obteniendo la librería en el cliente

Para obtener el javascript debemos modificar el ScriptManager de nuestro sitio, quedando algo así:

<asp:ScriptManager ID="ScriptManager1" runat="server">

    <Scripts>

        <asp:ScriptReference Assembly="AjaxLibrary"

            Name="AjaxLibrary.ClientLibrary.js" />

    </Scripts>

</asp:ScriptManager>

Evidentemente el código JavaScript debemos haberlo borrado 😉 De esta forma ya tenemos el JavaScript en el cliente.

 

http://eugenioestrada.es/blog

4 thoughts on “AJAX: Cómo “embeber” un archivo JavaScript en una DLL

  1. Lo explicaré en un siguiente blog, la idea es que si tu tienes rol de adminsitrador tendrás ciertas librerias JavaScript que un rol de invitado no tendrá. Entre ese código puede haber funciones para modificar datos de la web, por poner un ejemplo.

    Y como siempre toda seguridad es poca, la idea es que al rol de invitado nunca le llegue javascript con ese código.

    En este artículo la referencia al JavaScript lo hago en el propio ScriptManager, pero podríamos hacerlo código behind, en el evento Load de la página según el rol del usuario.

    En el siguiente post lo explico.

Deja un comentario

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