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:
ClientLibrary.js
Coding.
Incrustando el archivo
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.
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.
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.