Estoy usando ASP.NET con C# 2.0. He creado algunos objetos para una base de datos y cada uno de estos objetos tiene propiedades que se pueden llamar de forma nativa o se llaman de manera similar y crear una API JSON RESTful.Método del lado del servidor y del lado del cliente
Tengo muchas cosas parecidas a pestañas que me gusta llamar 'módulos' en este sitio: la función de un módulo es convertir datos a HTML para que se muestren en la página. Idealmente, esto debe hacerse tanto en el código C# del lado del servidor para cargar la primera pestaña, luego usar Ajax para cargar los otros cuando se hace clic en las pestañas, sin embargo, para navegadores antiguos y motores de búsqueda, la pestaña sigue siendo un enlace que cargará el mismo lado del servidor de código HTML.
Actualmente he escrito el código JavaScript completamente por separado del código C# que convierte cada módulo a HTML, pero el método es prácticamente el mismo, simplemente un idioma diferente. Similar a este ejemplo.
código C#
public override string GetHtml()
{
IJsonObjectCollection<Person> response = ((Village)page).People;
string html = "<div id=\"test\">";
foreach (Person person in response)
{
html += "<div class=\"person\">";
html += person.Name;
if(canEdit) html += "*";
html += "</div>";
}
return html + "</div>";
}
código JavaScript
function getHtml() {
JsonRequest('/json/villages/1/people', function(response) {
var html = '<div id="test">';
for (int i = 0; i < response.length; i++)
{
var person = response[i];
html += '<div class="person">';
html += person.name;
if(canEdit) html += '*';
html += '</div>';
}
return html + '</div>';
});
}
probablemente Se puede ver donde voy con esta pregunta. ¿Cuál sería la forma más eficiente de hacer esto? Estaba pensando en algunas alternativas diferentes:
1. Cada ModuleToHtmlMethod podría ser una clase que define el método de convertir este objeto de datos en HTML. Intenté esto, pero me detuve porque me estaba volviendo demasiado complicado.
2. escribir mi propio lenguaje de script que puede ser interpretado como C#, sino también 'compilado' en el código JavaScript.
3. Sólo tiene que escribir el lote en C# y utiliza Ajax para solicitar simplemente el contenido HTML de C#
4. mantener el código separado y escribir todos los métodos dos veces.
Me gustaría permitir que otros desarrolladores escriban estos 'módulos', por lo que tal vez la opción es la mejor opción?
creo que este es probablemente el mejor camino a seguir. El problema aquí es que la mayoría del código está en bucles (que pueden ser bastante grandes), por lo que la mayoría de los html se repetirían, lo que aumentaría drásticamente el tamaño de la respuesta. ¿La compresión gzip me ayudaría aquí? – Connell
Al usar gzip debe afeitarse el 50-70% del tamaño de la respuesta, es su llamada para ver si es aceptable. Debería calcular la diferencia en Bytes entre la misma respuesta utilizando la API JSON RESTful y la API HTML RESTful. Si la diferencia es inferior al 50%, gzip sin duda resolverá la sobrecarga del marcado. –
No es necesario que lo pruebe para decirle que tendrá que ser más del 50% adicional. Hay bucles que generalmente giran alrededor de 10-20 veces, pero pueden extenderse a 50 impar, dependiendo del tipo de datos llamados. Entonces el código html es similar a ''