Здравствуйте, Sinclair, Вы писали:
ГВ>>Смотря, какая специфика. Кстати, а как это можно сделать средствами MVC? S>Очень просто — поменять, к примеру, конфиг роутинга.
Например?
S>Фишка именно в том, что для генерации и парсинга применяется один и тот же набор правил.
Ну это как раз достижимо — генерировать URL-ы и парсить их по одним и тем же внешним правилам.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Sinclair, Вы писали:
WF>>>А зачем тебе создавать объект-обработчик, если тебе надо только лишь создать URL (например, для вписания его в HTML)?
ГВ>>По идее, чтобы потом к этому объекту можно было обратиться по его "собственному" URL. Если я тебя правильно понял. S>Нет. Никакого "собственного" URL у объекта нет. Экземпляр объекта-обработчика будет предоставлен фреймворком при разборе запроса. Рассчитывать на то, что объект, ссылку на который я отдаю в рамках некоторого респонса, доживет до следующего реквеста, в вебе нельзя.
Согласен, что можно и так поступать: создавать объект только при обращении по соответствующему ему URL (не путать с собственным URL объекта).
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, AndrewVK, Вы писали:
ГВ>>Смотря, какая специфика. Кстати, а как это можно сделать средствами MVC? AVK>Поскольку трансляция реально происходит в рантайме, то проблем там никаких.
Трансляция чего во что?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Например?
Я приводил пример. Когда вместо /beverages/2 используются /search.aspx?category=beverages&page=2
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
ГВ>>Например? S>Я приводил пример. Когда вместо /beverages/2 используются /search.aspx?category=beverages&page=2
Принципиальных препятствий опять таки не вижу. Никто же не заставляет генерировать именно URL в месте обращения на CSP-странице. Можно выталкивать какие-то промежуточные описания. А потом уже настраивать распознаватель.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали: ГВ>Принципиальных препятствий опять таки не вижу. Никто же не заставляет генерировать именно URL в месте обращения на CSP-странице. Можно выталкивать какие-то промежуточные описания. А потом уже настраивать распознаватель.
Про это я и говорил. Ок, вижу, моих знаний плюсов не хватило. (В скобках докопаюсь всё же до того, что я писал про невозможность воспроизвести функционал на дельфи . Впрочем, это неважно).
Давайте теперь проверим, у кого лучше диагностика ошибок (ради борьбы с которыми собственно всё и затевалось).
Предположим, у меня есть банальный код:
string s = Url::Helper(&MyController::Search, "Beverages", 2);
Теперь я беру и меняю сигнатуру метода MyController::Search на, скажем, такую:
void MyController::Search(string category, string nameMatch, int page);
Что мне скажет компилятор?
В шарпе компилятор говорит примерно следующее:
No overload for method Search takes 2 arguments
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>В шарпе компилятор говорит примерно следующее: S>
S>No overload for method Search takes 2 arguments
C++ будет многословней раза в... В несколько. Но тоже возмутится. Будут ошибки несоответствия ожидаемой и действительной сигнатуры.
Чтобы не быть голословным, скомпилируй у себя вот это:
#include <string>
class X
{
public:
void method(int p, std::string v){}
};
class Url
{
public:
template<typename T, typename R, typename P>
static void bind(R (T::*method)(P), const char *, P p){}
template<typename T, typename R, typename P1, typename P2>
static void bind(R (T::*method)(P1, P2), const char *, P1 p1, P2 p2){}
};
void f()
{
X x;
Url::bind(&X::method, "abc", 1); // Здесь вызов предполагает сигнатуру void(int), а не void(int, string)
}
Студию можно взять любую, начиная с 2003-й.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Gaperton, Вы писали:
G>Плюс, готовится совершенно потрясающий F# web-фреймворк, с автоматической трансляцией F# в клиентский JavaScript и _синхронным_ стилем программирования AJAX-приложений, который эти "монады" задействует.
Вопрос — а зачем транслировать F# в JavaScript, если у нас уже есть .net run-time в браузере в виде silverlight 2.0?
Здравствуйте, Klapaucius, Вы писали:
G>>я читал, что на F# можно изобразить "гражданские монады", имеющие эффект монад но при этом не взрывающие мозг.
K>А в чем отличие "гражданских" монад от военно-полевых?
Есть мысль, что они хорошо законспирированны .
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, Gaperton, Вы писали:
G>В F# есть очень прикольные штуки, вообще-то. Скажем, я читал, что на F# можно изобразить "гражданские монады", имеющие эффект монад но при этом не взрывающие мозг. Плюс, готовится совершенно потрясающий F# web-фреймворк, с автоматической трансляцией F# в клиентский JavaScript и _синхронным_ стилем программирования AJAX-приложений, который эти "монады" задействует.
На Хаскелле уже есть такой фреймворк — Haskell Server Pages называется и трансляция в клиентский JavaScript там есть.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
S>Да, вижу. Я не понимаю, каким образом компилятор С++ сможет извлечь информацию о вызове метода из вызова метода и вместо выполнения вызова отдать эту информацию в некий фреймворк.
bind, function<>, а так же сахар boost::lambda и т.д.
Здравствуйте, vdimas, Вы писали: V>bind, function<>, а так же сахар boost::lambda и т.д.
Да, мне уже показали. В принципе, оно даже работает, хоть и с несколько менее очевидным error reporting.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Gaperton, Вы писали:
G>>http://tomasp.net/projects/fswebtools.aspx
AVK>Там написано, что используется продвинутый фшарповый аналог expression tree. Вобщем, получается эдакий struts с использованием синтаксиса F#.
Там используются:
1) quotations (те же expression tree но шире) для трансляции кода в JS
2) sequences (те же монады, но для простых смертных) для смешанного кода client/server
Здравствуйте, Gaperton, Вы писали:
G>>> Плюс, готовится совершенно потрясающий F# web-фреймворк, с автоматической трансляцией F# в клиентский JavaScript G>http://tomasp.net/projects/fswebtools.aspx
По всей видимости этот проект только концепт,
последняя доступная версия от 1 Марта 2008 собирается самым древним доступным F#.