Вот пример создания и использования события с C #
using System;
namespace Event_Example
{
//First we have to define a delegate that acts as a signature for the
//function that is ultimately called when the event is triggered.
//You will notice that the second parameter is of MyEventArgs type.
//This object will contain information about the triggered event.
public delegate void MyEventHandler(object source, MyEventArgs e);
//This is a class which describes the event to the class that recieves it.
//An EventArgs class must always derive from System.EventArgs.
public class MyEventArgs : EventArgs
{
private string EventInfo;
public MyEventArgs(string Text)
{
EventInfo = Text;
}
public string GetInfo()
{
return EventInfo;
}
}
//This next class is the one which contains an event and triggers it
//once an action is performed. For example, lets trigger this event
//once a variable is incremented over a particular value. Notice the
//event uses the MyEventHandler delegate to create a signature
//for the called function.
public class MyClass
{
public event MyEventHandler OnMaximum;
private int i;
private int Maximum = 10;
public int MyValue
{
get
{
return i;
}
set
{
if(value <= Maximum)
{
i = value;
}
else
{
//To make sure we only trigger the event if a handler is present
//we check the event to make sure it's not null.
if(OnMaximum != null)
{
OnMaximum(this, new MyEventArgs("You've entered " +
value.ToString() +
", but the maximum is " +
Maximum.ToString()));
}
}
}
}
}
class Program
{
//This is the actual method that will be assigned to the event handler
//within the above class. This is where we perform an action once the
//event has been triggered.
static void MaximumReached(object source, MyEventArgs e)
{
Console.WriteLine(e.GetInfo());
}
static void Main(string[] args)
{
//Now lets test the event contained in the above class.
MyClass MyObject = new MyClass();
MyObject.OnMaximum += new MyEventHandler(MaximumReached);
for(int x = 0; x <= 15; x++)
{
MyObject.MyValue = x;
}
Console.ReadLine();
}
}
}
Я использовал Гобелен 3 , Калитка , Эхо , и JSF справедливо экстенсивно. Я действительно рекомендовал бы, чтобы Вы просмотрели тех и выбрали того, который появляется самое легкое для Вас, и наиболее тесно соответствовать способу, которым Вы предпочитаете работать.
Из них, самое удобное для меня для работы с было Калитка , из-за легкой природы здания компонента и простоты шаблонной обработки страницы. Это идет вдвойне поэтому при использовании собственного кода дб вместо, в спящем режиме или некоторая другая платформа (я никогда не был абсолютно доволен Калиткой, в спящем режиме или Интеграция Spring).
Эхо является большим, если Вы не возражаете писать все свое расположение в Java. Я знаю, что это отличается теперь, но я все еще думаю, что продукт служит довольно узкой нише. Они изменяют модель разработки с каждой главной версией также, это кажется.
Гобелен является большим продуктом, но это очевидно очень отличается от других с точки зрения модели разработки, поскольку это ведется главным образом одним чуваком. Howard Lewis Ship несомненно довольно умен, но я разочарован их решением в основном забыть назад совместимость с каждым выпуском. Снова, тем не менее, для Ваших потребностей это не может иметь значения, и я всегда находил продукты Гобелена радостными для работы против.
JSF отсутствовал в течение многих лет, и все еще чувствует себя подобно чему-то, что парень Struts создал для фиксации всех проблем Struts. Действительно не понимая все проблемы с Struts. Это все еще имеет незаконченное чувство к нему, хотя продукт очевидно очень гибок. Я использую его и имею некоторую нежность к нему с большими надеждами на ее будущее. Я думаю, что следующий выпуск (2.0), который будет поставлен в JEE6, действительно принесет его в свое собственное с новым шаблонным синтаксисом (подобный Facelets) и упрощенная компонентная модель (пользовательские компоненты только в 1 файле... наконец).
И, конечно, существует миллион меньших платформ и инструментов, которые получают их собственное следующее ( Скорость для главных потребностей, сырые данные JSPs, Struts, и т.д.). Я обычно предпочитаю, чтобы компонент ориентировал платформы сам, все же.
В конце, я рекомендовал бы просто смотреть на Гобелен, Калитку и JSF и просто выбрать тот, который чувствует лучшее Вам. Вы, вероятно, найдете тот, который просто соответствует способу, которым Вам нравится работать очень быстро.
Моим любимым способом пойти для действительно простых приложений является Apache VelocityTools (VelocityLayoutServlet) с Velosurf ( http://velosurf.sourceforge.net ).
Для более сложных приложений, Spring MVC или Struts 2.
Не может полагать, что никто не упомянул GWT
Высказывание "использования JSF" немного к простому. Когда Вы решаете использовать JSF, необходимо выбрать библиотеку компонентов сверху его. Вы примените Томагавк MyFaces, Тринидад, Тобаго ( http://myfaces.apache.org/ )? Или возможно ICEfaces ( http://www.icefaces.org/ )? О, и если Вы будете использовать ICEfaces, то Вы будете использовать JSPs или Facelets для Ваших представлений?
, По-моему, это трудно для сообщения. Ни у кого нет времени для оценки всех многообещающих альтернатив, по крайней мере, в проектах, я продолжаю работать, потому что они не являются достаточно большими, чтобы сделать трехмесячные фазы оценки. Однако необходимо навести справки о некоторых, который имеет многочисленное и активное сообщество и не не стал через год. JSF вокруг в течение некоторого времени, и так как он продвинут солнцем, это еще будет вокруг для некоторых. Я не могу сказать, является ли это лучший выбор, но это будет хорошее.
Я думаю для Ваших скромных требований, просто необходимо кодировать сервлеты или простые jsp страницы, которым можно служить с сервера Tomcat. Я не думаю, что Вам нужен любой вид веб-платформы (как распорки) для персональных данных веб-сайта
Я услышал хорошие вещи о Платформе Spring также. В целом, тем не менее, я был не приведен в восторг большинством веб-платформ Java, я посмотрел на (особенно Struts).
Для простого приложения я определенно рассмотрел бы использование "необработанных" сервлетов и JSPs и не волновался бы о принятии платформы. Если сервлеты правильно написаны, это должно быть просто в будущем к порту к платформе при необходимости, когда приложение растет в сложности.
Disclamer: Я работаю в Vaadin (ранее Фреза IT)
, Если Вы делаете что-то RIAish, Вы могли бы хотеть бросить взгляд на Vaadin. Это - открытый исходный код, ориентированный на UI на платформу Ajax, которая, мне, хороша использовать (я происхожу из среды PHP сам).
существует тематическое исследование , который сравнивает выполнение того же приложения (т.е. двух приложений с тем же набором функций) в Icefaces и Vaadin. Короче говоря это указывает, что разработка UI была значительно быстрее.
Даже при том, что исследование размещается в Wiki компании, я могу гарантировать, что это является объективным, подлинным и правдивым, хотя я не могу вынудить Вас в вере мне.
ОБНОВЛЕНИЕ: Гобелен 5.2 отсутствует, таким образом, от него не отказываются, как это ранее, казалось, было. Мой опыт с Гобеленом 4, не 5, таким образом, Ваш пробег может варьироваться. Мое мнение о Гобелене изменилось за эти годы; я изменил это сообщение для отражения его.
я больше не могу рекомендовать Гобелен, как я сделал ранее. Гобелен 5, кажется, существенное улучшение, но мой основной вопрос с Гобеленом не с самой платформой; это с людьми позади него.
Исторически, каждое обновление основной версии Гобелена повредило назад совместимость с экстремальным предубеждением, намного больше, чем можно было бы ожидать. Это, кажется, происходит из-за объединения новых методов кодирования или технологий, которые требуют значительных перезаписей.
Howard Lewis Ship (основной автор Гобелена) является, конечно, блестящим разработчиком, но я не могу сказать, что забочусь о его управлении проектом Гобелена. Разработка Гобелена 5 началась почти сразу после Гобелена 4 поставленных. Из того, что я могу сказать, Ship в значительной степени посвятил себя этому, оставив Гобелен 4 в руках других вкладчиков, которых я чувствую, совсем не так же способны как Ship. Сделав болезненный переключатель из Гобелена 3 к Гобелену 4, я чувствовал, что от меня отказались почти сразу.
, Конечно, с выпуском Гобелена 5, Гобелен 4 стал продуктом прежней версии. У меня не было бы проблемы с этим, если бы процедура обновления не была настолько жестокая снова . Таким образом, теперь наша группа разработчиков находится в довольно незавидном положении: Мы могли продолжить использовать чрезвычайно заброшенную веб-платформу (Гобелен 4), делать отвратительное обновление Гобелена 5, или разочаровываться в Гобелене полностью и переписывать наше приложение с помощью другой платформы. Ни одна из этих опций не очень привлекательна.
Гобелен 5, предположительно, записан, чтобы уменьшить вероятность поломки обновления от этой точки вперед. Хороший пример находится в классах страницы: в предыдущих воплощениях классы страницы убывали от базового класса, обеспеченного Гобеленом; несовместимые изменения API в этом классе были причиной большого количества проблем обратной совместимости. В Гобелене 5, страницы являются POJOs, которые улучшены во времени выполнения с "волшебной пылью феи Гобелена" с помощью аннотаций. Таким образом, пока контракт для аннотаций сохраняется, изменения в Гобелене не будут влиять на Ваши классы страницы.
, Если это правильно, то запись нового приложения с помощью Гобелена 5 могла получиться хорошо. Но лично, я не испытываю желание помещать руку на средстве записи снова.
Я недавно начал использовать Платформа Дорожек . Если Вы ищете основанную на запросе платформу, это действительно просто в использовании, но не накладывает ограничений на то, что Вы делаете, я настоятельно рекомендовал бы его.
Это подобно распоркам, но это идет путем вне его. Существуют даже некоторые сменные проекты, которые позволяют Вам сделать, использование в спящем режиме или jpa с очень небольшим количеством конфигурации.
существует много хороших платформ там, хотя я услышал, что калитка является хорошей также, но я не использовал ее.
Я рекомендую, чтобы компонент ориентировался Калитка платформа. Это позволяет Вам писать свое веб-приложение в простом коде Java, Вы можете использовать POJOs в качестве модели для всех компонентов и не должны бездельничать с огромными конфигурационными XML-файлами.
я успешно разработал заявление на дистанционное банковское обслуживание с Struts, когда я обнаружил Калитку и видел, как легкая разработка веб-приложения может быть!
Моим фаворитом является Платформа Spring. С 2,5 Spring MVC является задницей удара soooo, с новыми аннотациями, соглашением по функциям конфигурации, и т.д.
, Если Вы просто делаете что-то супер простое, Вы могли бы также просто попытаться использовать регулярный API Сервлета и не обеспокоиться платформой.
Сам не пробовал, но думаю, что
имеет большой потенциал ...
исходящий из php и классический asp, это первый веб-фреймворк на Java, который звучит многообещающе для меня ....
Для сайтов с высоким трафиком я бы использовал фреймворк, который не управляет состоянием клиента на сервере - Wicket, JSF и Tapestry управляют состоянием клиента на сервере. Я бы использовал эти фреймворки (Wicket - мой любимый) только в том случае, если приложение должно быть больше похоже на десктопное приложение. Но я бы попытался использовать более масштабируемый и простой REST+AJAX подход.
Spring MVC был бы кандидатом, но с весны MVC 3 имеет странную перегруженную аннотациями модель программирования, которая не использует преимущества статического набора текста. В методах, совмещенных с обычным возвратом, есть и другие уродливые вещи, такие как выходные параметры, поэтому существует два выходных канала одного метода. Пружинный MVC также имеет тенденцию к повторному изобретанию колеса, и вам придется больше настраивать по сравнению с другими фреймворками. Я не могу порекомендовать Spring MVC, хотя у него есть несколько хороших идей.
Grails - это удобный способ использовать Spring MVC и другие устоявшиеся фреймворки, такие как Hibernate. Кодирование забавно и вы быстро увидите результаты.
И не забывайте, что сервлет API с несколькими маленькими помощниками, такими как FreeMarker для шаблонирования, очень мощный.
.Мой выбор будет калитка Для крупных проектов и предсказуемой пользовательской базы), GWT (для крупных проектов, которые являются в основном публичные облицовки) или просто сервисная структура (например, Jersey / Jaxrs) вместе с помощью инструментария JavaScript (для небольших до средних проектов).
Я рекомендую Seam, особенно если вам нужна персистентность.
Я оценил довольно много фреймворков, и Vaadin ( http://vaadin.com/home ) просочился до самого верха.
Вы должны дать ему хотя бы краткую оценку.
Ура!
Попробуйте HybridJava - это намного проще, чем что-либо еще.
См. Несколько комментариев к некоторым платформам приложений Java (второй абзац):
http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html
После долгого тестирования различных решений для меня это оказалось:
Spring MVC для презентации и уровень контроллера (НЕТ Spring Webflow, потому что мои потоки основаны на ajax)
jQuery для всех вещей на стороне клиента
Spring Security для, ну, аспекта безопасности
Hibernate / JPA2
Jetty для продолжения (комета)
Один месяц необычайно крутого обучения, но теперь я счастлив.
Я также хотел бы упомянуть, что я был всего в небольшом шаге от того, чтобы отказаться от всего этого Java и вместо этого изучать Scala / LIFT. Насколько мне известно, все в Java, что связано с передовой веб-разработкой (комета, асинхронная связь, безопасность (да, даже с Spring Security!)), Все еще является чем-то вроде взлома (доказательство я ошибаюсь по доказательствам, пожалуйста!). Мне Scala / LIFT кажется более готовым и универсальным решением.
Причина, по которой я окончательно решил не переходить на Scala,
как руководитель проекта, я должен учитывать человеческие ресурсы, и разработчиков Java намного легче найти, чем разработчиков Scala
для большинства разработчиков в моей команде функциональную концепцию Scala, сколь бы прекрасной она ни была, трудно понять
Ура Er