Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > А что выбрать для веб-приложения?


Автор: SoWa 2.3.2011, 22:11
Всем привет!
Возникла задача - по быстрому сделать вот какую штуку(не знаю как это умными словами сказать):
Сайт, страницу, к которой методом GET передаются данные, и в ответ она отдает XML заданной мной структуры.
Дело в том, что часть классов на C# уже написана, и нужно только обернуть их в такой вид - GET`ом получили, обработали и что-то отдали.
А как это сделать, в направлении чего смотреть?

Автор: diadiavova 3.3.2011, 02:19
А ASP.Net чем не устраивает? Ты вполне можешь туда засунуть XML-разметку вместо HTML.

Автор: KelTron 3.3.2011, 06:58
Цитата(SoWa @  3.3.2011,  03:11 Найти цитируемый пост)
Дело в том, что часть классов на C# уже написана, и нужно только обернуть их в такой вид

Однозначно ASP.NET

Например для такого GET запроса:
http://yourhostname/Default.aspx?param1=value1&param2=value2

Можно сделать следующую страничку Default.aspx
В code behind:
Код

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // получаем параметры
        string value1 = Request.QueryString["param1"];
        string value2 = Request.QueryString["param2"];

        // тут какая то логика...
        
        // генерим xml
        string xml = ...
        
        // возвращаем результат
        Response.Write(xml);
    }
}

В самом файле разметки Default.aspx также нужно не забыть удалить всё кроме строки:
Код

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>


Автор: jonie 3.3.2011, 08:34
KelTron, однако не соглашусь. У вас Content-type так и останется application/html (или что там по умолчанию генит asp.net).
Для указанных автором вещей я бы делал ASHX заглушку или модуль asp.net-та... хотя, конечно, можно и в asp странице сделать изменение, но зачем такую тяжесть поднимать, когда достаточно ashx ?

Автор: KelTron 3.3.2011, 09:21
Цитата(jonie @  3.3.2011,  13:34 Найти цитируемый пост)
У вас Content-type так и останется application/html 

И в чём тут проблема? Это же просто текст, тот, кто его получит знает как обработать.

Цитата(jonie @  3.3.2011,  13:34 Найти цитируемый пост)
Для указанных автором вещей я бы делал ASHX заглушку 

Вот с этим я согласен, забыл про такой вариант.. 

Ну чтож, в итоге имеем файл Handler.ashx следующего содержания:
Код

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler 
{
    public void ProcessRequest (HttpContext context) 
    {
        // получаем параметры
        string value1 = context.Request.QueryString["param1"];
        string value2 = context.Request.QueryString["param2"];

        // тут какая то логика...
        
        // генерим xml
        string xml = ...
        
        // возвращаем результат
        context.Response.ContentType = "text/xml";
        context.Response.Write(xml);
    }
 
    public bool IsReusable 
    {
        get { return false; }
    }
}

И вызываем его http://yourhostname/Handler.ashx?param1=value1p&param2=value2

Автор: diadiavova 3.3.2011, 10:52
Цитата(KelTron @  3.3.2011,  06:58 Найти цитируемый пост)
В code behind:

Это совсем не обязательно. Вполне можно впихнуть хмл-разметку в аспх-страницу, а динамическое содержимое сформировать с помощью дескрипторов <%= %> и <% %>. Так же можно вставить скрипты, выполняющиеся на сервере.
Цитата(jonie @  3.3.2011,  08:34 Найти цитируемый пост)
У вас Content-type так и останется application/html (или что там по умолчанию генит asp.net).

Тип содержимого можно поменять в объекте Response.

Цитата(KelTron @  3.3.2011,  09:21 Найти цитируемый пост)
И в чём тут проблема? Это же просто текст, тот, кто его получит знает как обработать.

Получателем может быть браузер или другое приложение, определяющее тип содержимого по заголовкам.

А вообще в такой ситуации я бы предпочел использовать ASP.Net MVC. От форм тут все равно никакого толку, а в мвц свои плюсы есть, например, если документ формируется в коде, то представление можно вообще не писать, достаточно, чтобы соответствующий метод контроллера выдавал текст и он будет отправляться клиенту. 

Автор: QryStaL 12.3.2011, 22:52
Цитата(KelTron @  3.3.2011,  06:58 Найти цитируемый пост)
Однозначно ASP.NET


Однозначно WCF

Здесь подойдет REST-сервис, можно хостить где угодно (хоть в консольном приложении).

Автор: jonie 13.3.2011, 11:31
QryStaL, а кто сам сказал что формат выводимого XML будет как у wcf ? ... этак еще придется дописывать и профит небольшой получится

Автор: QryStaL 13.3.2011, 14:26
Цитата(jonie @  13.3.2011,  11:31 Найти цитируемый пост)
а кто сам сказал что формат выводимого XML будет как у wcf


Ну это надо у ТС спросить ) Но в любом случае Xml можно точно так же руками писать и возвращать из Wcf сервиса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)