ColdFusion 마크업 언어

ColdFusion Markup Language
콜드퓨전 마크업 언어(CFML)
패러다임명령적, 객체 지향적
설계자제레미 알레어, 조셉 J. 알레어
개발자Adobe Systems(ColdFusion), Lucee Association(Lucee), New Atlanta 및 aw2.0(openBD), The Railo Company(Railo)
처음 등장한1995년, 27년(연간)
구현 언어자바
OS크로스 플랫폼
면허증.구현에 따라 다릅니다.독자 사양, LGPL 및 GPL 라이센스 엔진을 모두 사용할 수 있습니다.
파일 이름 확장자.cfm, .cfc
웹 사이트www.adobe.com/products/coldfusion
주요 구현
Adobe ColdFusion, Lucee, Railo, BlueDragon, Open BlueDragon
영향받은
루세

ColdFusion Markup Language(일반적으로 CFML)는 JVM 상에서 실행되는 웹 개발용 스크립트 언어입니다.NET 프레임워크 및 Google App Engine입니다.Adobe ColdFusion, Lucee, New Atlanta BlueDragon(Java 기반 및 를 모두 제공)을 포함한 CFML 엔진의 여러 상용오픈 소스 구현이 가능합니다.NET 기반 버전), RailoOpen BlueDragon 및 기타 CFML 서버 엔진.

개요

다른 많은 웹 스크립트 언어처럼 가장 간단한 형태로 CFML은 데이터베이스 명령어, 조건부 연산자, 고급 포맷 함수 및 웹 애플리케이션[1][2]생성하기 위한 기타 요소를 사용하여 표준 HTML 파일을 확장합니다.CFML에는 ColdFusion Components(CFC; 콜드퓨전 컴포넌트) 등 비즈니스 로직을 프레젠테이션에서 분리할 수 있는 수많은 구성 요소도 포함되어 있습니다.

CFML은 JavaScript(ECMA 스크립트)와 유사한 태그 또는 CFScript 중 하나를 사용하여 쓸 수 있습니다.

CFML 응용 프로그램의 페이지에는 HTML 태그 외에 서버 측 CFML 태그 및 기능이 포함됩니다.또한 최신 CFML 어플리케이션에는 비즈니스 로직을 실행하기 위해 CFML 페이지에 의해 액세스되는 CFC가 있는 경향이 있습니다. 브라우저가 ColdFusion 응용 프로그램에서 페이지를 요청하면 ColdFusion 응용 프로그램 [3]서버에 의해 자동으로 사전 처리됩니다.

CFML은 HTML 이외의 XML, JavaScript, CSS 의 언어 생성에도 사용할 수 있습니다.

이름에도 불구하고 CFML은 마크업 언어가 아닙니다.또한 SGML이 아닙니다.특정 코어 CFML 기능에 의해 준거할 수 없기 때문입니다.

CFML 엔진은 서버상의 특정 파일 확장자(.cfm, .cfc)가 CFML 엔진에 전달되어 처리되도록 설정됩니다.Java 기반 엔진의 경우 이는 Java 서블릿을 통해 수행됩니다.CFML 엔진은 CFML 태그 및 함수만 처리합니다.CFML 태그 및 함수 이외의 텍스트를 변경하지 않고 [4]웹 서버로 반환합니다.

역사

처음에 콜드 퓨전이라고 이름 붙여진 이 소프트웨어는 미네소타에 위치Alaire Corporation에 의해 1995년에 개발되었습니다.2001년 매크로미디어에 인수되기 전 매사추세츠주 캠브리지로 옮긴 뒤 마침내 매사추세츠주 뉴턴으로 옮겨갔다.알레어 콜드 퓨전은 이렇게 해서 매크로미디어 콜드 퓨전이 되었다.버전 4에서는 이름의 공백이 삭제되어 ColdFusion이 되었습니다.Adobe는 2005년에 Macromedia를 인수해, Cold Fusion의 개발을 계속하고 있습니다.

1998년 Alan Williamson과 그의 스코틀랜드 회사인 "n-ary"는 공통 프로그래밍 [5]작업을 단순화하기 위해 Java용 템플릿 엔진을 만들기 시작했습니다.Williamson은 태그 대신 곱슬머리 괄호 표기법을 사용했지만 CFML의 예와 태그 구문을 사용하여 CFML이 유사한 문제를 해결하는 방법을 보고 최종적으로 BlueDragon이 되는 것을 개발하기 시작했습니다.이것이 CFML 언어의 첫 자바 구현이었습니다.(ColdFusion은 2002년에 첫 번째 Java 기반 ColdFusion 버전인 6.0이 출시될 때까지 C 및 C++로 작성되었습니다.)New Atlanta는 2001년경 BlueDragon을 라이선스하여 상용 제품으로 출시하였고, 결국 을 만들었습니다.CFML의 NET 구현. Open BlueDragon은 시판되는 BlueDragon 제품의 포크이며 2008년에 처음 출시되었습니다.

Railo CFML 엔진은 2002년에 학생 프로젝트로 시작되어 2005년에 [6]상용 프로젝트로 처음 시작되었습니다.Railo는 2008년에 엔진을 오픈 소스로 만들고 있다고 발표했으며, 2009년에 첫 번째 오픈 소스 버전이 출시되었습니다.

2009년 6월 18일 CFUnited Conference에서 Adobe는 CFML 언어 변경에 대한 안내 및 검토를 담당하는 CFML Advisory[7] Committee를 구성했다고 발표했습니다.이 노력은 2010년에 해체되었다.Google Group CFML Convention Width는 언어와 엔진 기능에 대한 공개적인 토론의 장으로 만들어졌습니다.[citation needed]이 포럼의 사용은 2011년 이후 감소했습니다.

2012년에는 OpenCFML Foundation이 출범했습니다.오픈소스 CFML 애플리케이션과 플랫폼을 푸시하는 기능이다.

전 Railo 리드 개발자 Michael Offner는 2015년 1월 29일 런던에서 Railo의 포크인 Lucee를 출시했습니다.커뮤니티 서포터와 Lucee Association 회원들의 지원을 받는 이 프로젝트의 목표는 적은 리소스를 사용하여 CFML의 기능을 제공하고 더 나은 성능을 제공하며 CFML을 그 뿌리를 지나 현대적이고 역동적인 웹 프로그래밍 플랫폼으로 전환하는 것입니다.

구문

CFML 태그의 형식은 HTML 태그와 비슷합니다.이러한 태그는 꺽쇠 괄호(< 및 >)로 둘러싸여 있으며 일반적으로 0 이상의 이름이 붙은 속성을 가집니다.단, 일부 태그(cfset, cfif 등)에는 속성이 아닌 식이 포함되어 있습니다.많은 CFML 태그에는 본문이 있습니다.즉, 본문 사이에 텍스트를 처리하는 시작 태그와 끝 태그가 있습니다.예를 들어 다음과 같습니다.

<cfoutput> #value#Bob!</cfoutput>

cfset 및 cfftp 등의 다른 태그에는 본문이 없습니다.다음 예시와 같이 필요한 모든 정보는 태그 속성(이름/값 쌍) 형식으로 선두(<) 문자와 말미(>) 문자 사이에 있습니다.많은 CFML 개발자는 코드를 읽기 쉽게 하기 위해 두 번째 예와 같이 태그를 스스로 닫는 것을 선택하지만 태그에 본문이 없는 것이 합법적일 경우 첫 번째 예와 같이 닫지 않는 것이 구문적으로 허용됩니다.

<cfset> 가치 = "안녕하세요"> <cfset> 가치 = "안녕하세요" /> 

태그에 본문을 포함할 수 있는 경우에도 속성이 모든 필수 정보를 지정하기 때문에 본문을 포함하여 본문이 필요하지 않을 수 있습니다.이 경우 위의 두 번째 예시와 같이 엔드 태그(태그 본체)가 생략되어 다음 [8]예시와 같이 태그가 셀프 클로즈 될 수 있습니다.

< >cfexecute 이름.="C:\winNT\System32\netstat.exe" 논쟁들="-e" 출력 파일="C:\Temp\out.txt" 타임아웃="1" /> 

다양한 태그는 프로그래머가 구체적으로 입력 파라미터를 선언할 경우 입력 파라미터(cffunction, cfparam, cfqueryparam 등)를 체크하는 기능을 제공합니다.이 기능은 cfqueryparam과 함께 사용되며 해커 및 SQL 주입 등의 악의적인 웹 요청으로부터 웹 응용 프로그램 및 데이터베이스를 보호합니다.

내장 태그

거의 100개의 태그와 더 많은 기능들이 CFML 언어의 핵심을 이루고 있습니다.다음으로 CFML 태그를 기능 [9]또는 용도별로 나타냅니다.

커스텀 태그

CFML에서는 커스텀태그 형식으로 언어 확장을 할 수 있습니다.커스텀태그란 CFML 언어 자체에 속하지 않는 개발자에 의해 작성된 태그입니다.커스텀 태그는 태그로 호출되는 일반 CFML 파일입니다., 템플릿을 커스텀태그와 일반 템플릿 양쪽으로 취급할 수도 있습니다.커스텀 태그는 CFML로 작성되며 일반적으로 커스텀태그의 파일명 앞에 cf_를 붙이는 것으로 호출됩니다.단, 커스텀태그를 호출하는 다른 방법도 있습니다.

템플릿이 커스텀태그로서 호출되는 경우, 그 태그의 호출에 사용되는 어트리뷰트는, 어트리뷰트 스코프의 태그내에서 사용할 수 있습니다.또, 발신자 스코프를 개입시켜 콜링 페이지의 변수에 액세스 할 수 있습니다.

예를 들어 추가를 수행할 커스텀태그를 작성하고 2개의 Atribut을 취하여 함께 추가하는 경우 태그는 다음과 같은 addition.cfm 파일이 됩니다.

<cfset> caller.discloss(발신자.disc) = 특성.첫번째 + 특성.둘째 /> < >프렉시트 방법="종료 태그" /> 

태그가 파일과 같은 디렉토리(또는 사전 정의된 커스텀태그 디렉토리)에 있는 경우, 다음과 같이 태그를 호출할 수 있습니다.

< >cf_module 첫번째="1" 둘째="2"> 

CFX 태그는 Java 또는 C++사용하여 개발된 커스텀태그이며 cf_와 마찬가지로 cfx_가 붙습니다.Java 및 C++ 태그는 CFML 엔진의 관리자를 사용하거나 구성 파일을 편집하여 CFML 런타임 환경에 추가됩니다.

일부 CFML 엔진에서는 <cfimport> [citation needed]태그를 사용하여 JSP 태그를 CFML 페이지에 포함할 수도 있습니다.

기능들

ColdFusion Markup Language에는 논리 연산 및 산술 연산을 수행하고 데이터를 조작하기 위해 사용하는 일련의 기능이 포함되어 있습니다.

기능. 언급 코드
어레이 [10] (ArraySort, ArrayAppend, ArrayDeleteAt...)
변환 [11] (URLEncodedFormat, ToString...)
일시 [12] (LsTimeFormat, DateAdd, DateDiff...)
결정 [13] (정의, IIF...)
표시 및 포맷 [14] (CJustify, 번호)포맷...)
동적 평가 [15] (DE, 평가...)
확장성 [16] (Create Object, ToScript...)
이미지 [17] (ImageRotate, ImageAddBorder...)
국제 기능 [18] (SetLocale, GetTimeZoneInfo...)
목록. [19] (Find One Of, List Set At...)
수학 [20] (랜덤화, Squr...)
기타 기능 [21] (WriteOutput, GetBaseTemplatePath...)
쿼리 [22] (QueryAddColumn, QuerySetCell...)
보안. [23] (암호화, 복호화...)
스트링 [24] (역방향, HTMLCodeFormat...)
구조. [25] (StructKey)존재합니다.StructureDelete...)
시스템. [26] (GetTickCount, GetTempFile...)
XML [27] (XML 해석, GetSOAP Response...)

Cold Fusion 컴포넌트(CFC)

CFC는 오브젝트 지향(OOP) 언어에 의해 제공되는 일반적인 기능의 일부(전부는 아닙니다)를 제공합니다.CFC를 작성하려면:

를 사용하여 파일을 만듭니다.CFC 확장(이를 통해 CFC는 를 가진 ColdFusion 템플릿과 구별됩니다).CFM 확장).
4개의 태그를 사용하여 컴포넌트를 만들고 해당 함수와 인수를 정의하며 값을 반환합니다.
<cfcomponent>:CFC를 정의합니다.
<cffunction>:CFC 내의 기능(방식)을 정의합니다.
<cfargument>:함수가 받아들이는 인수(파라미터)를 정의합니다.
<cfreturn>: 함수에서 값 또는 결과를 반환합니다.

CFC는 플레인 CFML입니다.CFC 내에서 CFML 태그, 기능, 커스텀태그, 기타 컴포넌트 등을 사용할 수 있습니다.

CFC는 다양한 방법으로 사용할 수 있습니다.CFC에 포함된 메서드를 단순히 호출할 필요가 있는 경우 <cfinvoke> 태그는 CFC 인스턴스를 생성하고 원하는 메서드를 호출한 후 CFC 인스턴스를 파기합니다.<cfinvoke>는 컴포넌트 이름(.cfc 확장자 포함)과 실행할 메서드를 가져옵니다.반환된 데이터에 액세스하기 위해 RETURNVARILE 속성은 함수가 반환하는 모든 데이터를 포함하는 변수의 이름을 제공합니다.CFC는 로 저장된4개의 태그를 사용하여 작성됩니다.CFC 파일 및 <cfinvoke> [28]태그를 사용하여 호출됩니다.

다음 예시에서 컴포넌트 온도.cfc에는 온도를 화씨에서 섭씨로 변환하는 FtoC 메서드가 있습니다.test.cfm 템플릿은 메서드를 호출하여 화씨 212도를 변환하여 결과를 출력합니다.

<>!..-temperature.cfc--->,<>cfcomponent>,<>cffunction name="FtoC"access="공공"returntype="숫자">,>cfargument name="화씨"required="네"type="숫자"/>,<>cfsetanswer=(화씨-32)*100/180 />, <,cfreturn 대답 />,<>/cffunction>,<>/cfcomponent>,>!..-test.cfm--->,<>cfset fDegree.S=212/>,<>cfinvoke component="온도"method="FtoC."return variable = "result" > < cfinvoke > < cfinvoke > < cfinvoke > # fDegree # & deg ;F = #result #&quot;C </cfoutput> <br />

CFC는 오브젝트로 인스턴스화될 수도 있습니다.Person.cfc라는 이름의 CFC 파일이 있다고 가정하면 이 CFC의 인스턴스는 다음과 같이 인스턴스화됩니다.

<cfset> 사람인 = Create Object(작성 객체)("컴포넌트", '사람') /> 

또한 CFC는 CFML에서 웹 서비스를 생성하는 기능의 기초를 형성합니다. CFC는 일반적인 방법으로 생성되며, CFC 내의 모든 기능에 추가된 access="remote" 속성은 해당 기능을 SOAP 기반 웹 서비스로 호출할 수 있도록 합니다.CFML 엔진은 WSDL을 자동으로 생성하고 웹 서비스가 기능하기 위해 필요한 모든 스터브를 만듭니다.

레퍼런스

  1. ^ Adobe ColdFusion 8 – Wayback Machine에서 2012년 5월 13일 아카이브된 인터넷 애플리케이션 및 웹 애플리케이션 서버대해Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  2. ^ BlueDragon 매뉴얼을 엽니다.Openbd.org 를 참조해 주세요.2013-09-17에 회수.
  3. ^ 스미스, 마이클 콜드퓨전이란?fusionauthority.com
  4. ^ 태그는 2008년 3월 24일 Wayback Machine에서 아카이브 완료
  5. ^ BlueDragon 운영위원회 인터뷰 시리즈 오픈– Alan Williamson alan.blog-city.com
  6. ^ Wayback Machine에서 Railo Archived 2011-06-30에 대해Getrailo.org 를 참조해 주세요.2013-09-17에 회수.
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee Wayback Machine CFML Advisory Committee - Architect's View에서 2009-01-07년 아카이브 완료.Corfield.org 를 참조해 주세요.2013-07-21에 회수.
  8. ^ 태그 구문 2008년 5월 27일 웨이백 머신에서 아카이브
  9. ^ Wayback Machine에서 기능별 태그 보관 2008-05-09. (PDF) . 2013-09-17에 검색됨.
  10. ^ 어레이 기능 Wayback Machine 2008-12-10 아카이브 완료Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  11. ^ 변환 함수 Wayback Machine에 아카이브된 2008-12-08.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  12. ^ 날짜시간 기능웨이백 머신에서 아카이브된 2008-12-02입니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  13. ^ 의사결정 기능 Wayback Machine에 아카이브된 2009-02-01.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  14. ^ Wayback Machine에서 보관된 2008-12-20 표시포맷 기능.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  15. ^ Wayback Machine에 아카이브된 2008-12-07 동적 평가 기능.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  16. ^ 확장성 2009-02-14년 Wayback Machine에 아카이브되었습니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  17. ^ 이미지 기능 2009-01-31 Wayback Machine에 보관.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  18. ^ International functions 2009-02-08 Wayback Machine에 보관된 입니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  19. ^ Wayback Machine에서 아카이브된 2008-12-10 함수나열합니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  20. ^ Wayback Machine에서 2008-12-07년 수학 함수 아카이브.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  21. ^ 기타 기능은 Wayback Machine에서 2009-01-30으로 아카이브되었습니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  22. ^ Wayback Machine에서 보관된 쿼리 함수 2009-02-21.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  23. ^ Wayback Machine에 보관된 보안 기능 2008-12-05.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  24. ^ Wayback Machine에서 보관된 문자열 함수 2009-01-29.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  25. ^ 구조 함수 2009-02-14 Wayback Machine에 보관.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  26. ^ 시스템 기능 2009-02-01이 웨이백 머신에 보관되었습니다.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  27. ^ XML 함수 Wayback Machine에서 아카이브된 2009-02-20.Livedocs.adobe.com 를 참조해 주세요.2013-09-17에 회수.
  28. ^ Forta, Ben ColdFusion 구성 요소 사용.adobe.com

외부 링크