Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А что выбрать для веб-приложения? 
:(
    Опции темы
SoWa
Дата 2.3.2011, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: нет
Всего: 74



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


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
diadiavova
Дата 3.3.2011, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



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


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
KelTron
Дата 3.3.2011, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



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

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

Например для такого GET запроса:
http://yourhostname/Default.aspx?param1=va...p;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" %>




--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
jonie
Дата 3.3.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
KelTron
Дата 3.3.2011, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 11
Всего: 38



Цитата(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=va...p;param2=value2



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
diadiavova
Дата 3.3.2011, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(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. От форм тут все равно никакого толку, а в мвц свои плюсы есть, например, если документ формируется в коде, то представление можно вообще не писать, достаточно, чтобы соответствующий метод контроллера выдавал текст и он будет отправляться клиенту. 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
QryStaL
Дата 12.3.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



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


Однозначно WCF

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


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
jonie
Дата 13.3.2011, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
QryStaL
Дата 13.3.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



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


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


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.