ºìÁªLinuxÃÅ»§
Linux°ïÖú

C++ Web¹¤¾ß°ü Wt

·¢²¼Ê±¼ä:2013-04-10 14:57:57À´Ô´:ºìÁª×÷Õß:empast
Wt(Òôͬ'witty')ÊÇÒ»¸öC++¿â£¬Í¬Ê±Ò²ÊÇ¿ª·¢ºÍ²¿ÊðwebÓ¦ÓõķþÎñÆ÷¡£ Wt²»ÊÇËùν¿ò¼Ü(framework)£¬ËüÖ»ÊÇÒ»¸ö¿â£¬Ëü²»»á½«±à³Ì·½Ê½Ç¿¼ÓÓÚ¿ª·¢Õß¡£

WtµÄAPIÊÇÒÔwidgetΪÖÐÐÄ(widget-centric)µÄ£¬²¢Êܵ½ÏÖÓÐC++ͼÐÎÓû§½çÃæ(GUI) µÄÓ¦Óñà³Ì½Ó¿Ú(APIs)µÄÆô·¢¡£WtΪ¿ª·¢ÕßÌṩÁ˼¸ºõËùÓÐwebʵÏÖϸ½ÚµÄ³éÏ󣬯äÖÐ °üÀ¨Ê¼þ´¦ÀíºÍͼÏñÖ§³Ö¡£

»ùÓÚÒ³ÃæµÄwebÓ¦Óÿª·¢¿ò¼Ü(Page-based frameworks)£¬ÈçPHP¡¢JSP/JSF (+servlets+struts)µÈ£¬Ã»ÓÐʵÏÖ¶ÔһЩ×î»ù±¾¼¼ÊõµÄÌØÐԵijéÏó£¬ÕâЩ¼¼Êõ°üÀ¨ HTML/XHTML¡¢JavaScript¡¢CSS¡¢AJAX¡¢ Forms¡¢DHTML¡¢SVG/VML/CanvasµÈ£¬ÏÔÈ»»ù ÓÚÒ³ÃæµÄ¿ª·¢¿ò¼Ü(frameworks)±ØÐëÒªÇ󿪷¢ÕßËæÊ±ÊìϤºÍÕÆÎÕÕâЩ»ù±¾¼¼Êõ¡£ÁíÍ⣬ µ±Ñ¡ÔñijһÖÖ»ù±¾¼¼Êõʱ(È統ǰÁ÷ÐеÄAJAX)£¬¿ª·¢ÕßÔòÒª¶Ô¸Ã¼¼ÊõµÄÓÅÑŽµ¼¶ (graceful degradation)¸ºÔ𣬱ÈÈçµ±AJAX»òJavaScriptÒѾ­²»¸´´æÔÚ»òijЩ¹¦ÄÜʧЧ ʱ¡£Í¬Ê±£¬Ó¦ÓóÌÐò½á¹¹»¹Òª×ñÑ­ÔçÆÚHTMLÒÔÒ³ÃæÎª»ù´¡µÄ¿ª·¢·¶Ê½¡£×÷Ϊһ¸öAJAX¿ª ·¢Õߣ¬Õâ¾ÍÒâζ×ÅËûÐèÒªÊÖ¹¤Éè¼ÆºÍά»¤¿Í»§¶Ë/·þÎñÆ÷¶ËµÄͨѶ¡£

¾¡¹Ü¿ª·¢ÕßÓÐʱ²»Ï£Íû£¬µ«ÎªÁËÉú³ÉHTML´úÂë»òÌî³äHTMLÄ£°å»áÔÚÒ³ÃæÖвåÈë JavaScript£¬Èç´Ë²Ù×÷Ôò»á´øÀ´°²È«·çÏÕ£¬Èç¿çÕ¾½Å±¾(XSS:Cross-Site-Scripting)¡£ µ«ÊÇ£¬Ä£°å¿ò¼Ü(template frameworks)±¾ÉíÎÞ·¨±ÜÃâÕâÖÖÇé¿öµÄ·¢Éú£¬ÒòΪ¿ª·¢Õß×ÜÊÇ ÐèÒª²åÈë×Ô¶¨ÒåµÄJavaScriptÀ´Ìá¸ßwebÓ¦Óá£

Ïà±È֮ϣ¬Ê¹ÓÃWt¿ª·¢µÄwebÓ¦ÓþÍÒªºÃÐí¶à£¬ÒòΪÕâÑùµÄÓ¦ÓÃֻʹÓÃÒ»ÖÖ±àÒë ÓïÑÔ(C++)£¬¶øÇÒÉú³É±ØÒªµÄHTML/XHTML¡¢Javascript¡¢CGI¡¢SVG/VML/CanvasÒÔ¼° AJAX´úÂëµÄÈÎÎñ¶¼½»¸øWt¿âÍê³É¡£×ÔÈ»µØ£¬web¿ª·¢µÄ°²È«ÐÔºÍä¯ÀÀÆ÷¿ÉÒÆÖ²ÐÔÎÊÌâÒ²¶¼ ½»¸øÁËWt¡£ÁíÍ⣬ÔÚ¿ÉÄܵÄÇé¿öÏ£¬Wt½«×î´óÏ޶ȵØÊ¹ÓÃJavaScriptºÍAJAX£»ÌØ±ð µØ£¬ÔÚ²»Ö§³ÖAJAXµÄÇé¿öÏ£¬²ÉÓÃWt¿ª·¢µÄwebÓ¦ÓÃÈÔÄÜÕý³£¹¤×÷£¬ÒòΪWt²ÉÓÃÁË ×ª»ØÆÕͨHTML/CGIµÄ»úÖÆ(reverting to a plain HTML/CGI mechanism)£¬±£Ö¤ÁË ä¯ÀÀÆ÷Óë·þÎñÆ÷Ö®¼äµÄÕý³£Í¨Ñ¶¡£

µäÐÍÓ¦ÓþÙÓ磺
ÓÉÓÚWt webÓ¦Ó÷þÎñÆ÷Õ¼Óýϵ͵ÄÄÚ´æ(low footprint)£¬¹Ê¶ø¿ÉÒÔΪ ¿ÉÁªÍøµÄǶÈëʽϵͳ(web-enabled embedded systems)Ìṩ»ùÓÚwebµÄͼÐÎ Óû§½çÃæ(GUI)£»
Wt¿ÉÒÔΪÐèÒªÕûºÏÏÖÓÐC++¿âµÄÓ¦ÓÃÌṩ»ùÓÚwebµÄͼÐÎÓû§½çÃæ(GUI), ÕâЩӦÓðüÀ¨¿ÆÑ§ÉϵĻò¹¤³ÌÉϵÄÓ¦Óã»
Wt¿ÉÒÔ´´½¨´ÓÏÖÓÐC++×ÀÃæÓ¦Óõ½webµÄÓÐЧÇþµÀ(port)¡£

ʹÓÃWtµÄºÃ´¦
¿ÉÒÔÏ󿪷¢C++×ÀÃæÓ¦ÓÃÒ»Ñù¿ª·¢webÓ¦Óã»
WtÌṩ×î»ù±¾µÄ(plain)widgets£¬ÕâЩwidgets¿ÉÒÔÔÚÔËÐл·¾³²»Ö§³Ö JavaScriptµÄÇé¿öÏÂÕÕ³£¹¤×÷(µ±È»£¬Èç¹ûÖ§³ÖµÄ»°Ð§¹û»á¸üºÃ)¡£Í¬Ê±Wt::ExtÃüÃû ¿Õ¼äϵÄwidgets¹¤×÷Ч¹û»á¸ü¿á(more polished)£¬¶øÇÒ¿ÉÒÔÌṩ¸ü¸ß¼¶µÄ¹¦ÄÜ£¬ µ«ÊÇ»áÐèÒª¶ÔJavaScriptµÄÖ§³ÖÒÔ¼°¸üΪÁ÷ÐеÄä¯ÀÀÆ÷¡£ÒÔÉÏÁ½ÀàwidgetsÔÚWtÖй²Ïí ͬһÌ×Ó¦Óñà³Ì½Ó¿Ú(API)£»
WtÌṩÁ½ÖÖ¿ª·¢Ó벿Êðģʽ£¬¼´Ê¹ÓÃWtÄÚÖÃ(build-in)httpd»òÕßFastCGIÁ¬½ÓÆ÷ (connector)£¬Ç°ÕßÔÚWtÄÚ½ÏÈÝÒ×ʵÏÖ£¬¶øºóÕßÔòʵ¼ÊÉÏÊÇÔÚ¿ª·¢FastCGIÓ¦Óã»
¿Í»§¶ËÓë·þÎñÆ÷¶ËÔÚÑéÖ¤(validation)ºÍʼþ´¦Àí(event handling)·½Ãæ²ÉÓÃͬ Ò»Ô­Ôò(a single specification)£¬¼´Á½ÖÖÓ¦ÓÃÏ£¬¿ª·¢ÕßÔÚ·þÎñÆ÷¶ËʹÓÃC++±àд£¬ Wt¼ÈÔÚ·þÎñÆ÷¶ËÉú³ÉC++´úÂ룬ÓÖͬʱÔÚ¿Í»§¶ËÉú³ÉJavaScript´úÂ룻ÆäÖÐʼþ´¦ÀíÌØ ָʹÓÃÎÞ״̬²Û(stateless slot)ʵÏÖµÄÇé¿ö£»
¿ÉÒÔ²úÉú±ê×¼µÄ¡¢·ûºÏHTML/XHTML¹æ·¶µÄ´úÂ룻
ʹÓÃÄÚÁªVML¡¢SVG¡¢HTML 5 Canvas¿ÉÒÔÌṩ¿ÉÒÆÖ²µÄ(portable)¡¢¿¹¾â³ÝͼÏñ (anti-aliased graphics)£»
ÎÞ¿çÕ¾½Å±¾(XSS)·çÏÕ£¬ÒòΪWtÍêÈ«¿ØÖƱíʾ²ã(presentation layer)£¬²¢Ìáǰ (proactively)¹ýÂ˵ô»î¶¯(active) ±êÇ©(tags)ºÍÊôÐÔ(attibutes)£¬ÕâÑùºÜºÃµØ Òþ²ØÁËפÁôÔÚ·þÎñÆ÷¶ËµÄÒµÎñÂß¼­(business logic)£»
»ùÓÚWtµÄÓ¦ÓÃÔØÈëʱ¼ä¼«¶Ì(ultra-fast load time)£¬Í¬Ê±Õ¼Óýϵʹø¿í (low bandwidth usage)£¬µ±È»Ò²»áÊܵ½ÏÔʾÄÚÈݸ´Ôӳ̶È(screen complexity)µÄÓ°Ï죬 µ«¿Ï¶¨²»»áÊÇÓ¦ÓóÌÐòµÄ´óС¡£

ÏîÄ¿Ö÷Ò³£ºhttp://www.webtoolkit.eu/wt#/

ÏÂÔØµØÖ·£ºhttp://www.webtoolkit.eu/wt#/download

À´×Ô:¿ªÔ´ÖйúÉçÇø
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ