2009-06-21 2 views
1

개요 : 웹 응용 프로그램의 일부를 선택하기 위해 C# 사용자 인터페이스를 작성하고자합니다. 이것은 매우 사로 잡힌 관객을 대상으로합니다 (예 : 내부적으로).아파치/PHP/파이썬 (백엔드)에 C# (프론트 엔드) 연결하기

웹 응용 프로그램은 Apache를 웹 서버로 사용하여 PHP 및/또는 Python으로 작성되었습니다.

왜? 잘 짜여진 네이티브 Windows 인터페이스는 때때로 웹 브라우저에 의해 부과 된 규칙에 따라 생활하는 것보다 훨씬 효과적 일 수 있습니다.

질문 : HTTPS를 사용하여 C# 및 PHP/파이썬 사이에 통신 할 수있는 가장 좋은 방법은 무엇입니까? 대부분 직렬화/직렬화 및 각 언어에 상주하는 다양한 데이터 유형 변환에 대해 말하고 있습니다.

이상적으로는 C#에서 작동하도록 강력하게 유형화 된 구조체 또는 객체를 사용하고 PHP/Python에서 해당 데이터 구조를 사용하여 작업해야합니다. 코드 생성기도 좋습니다.

내부 데이터 라이브러리 확장, Google 프로토콜 버퍼 검토 등 Apache Thrift을 보았습니다. 드리프트는 유망 해 보이지만 문서가 너무 희박합니다.

  1. 개발자 오버 헤드를 최소로 유지해야합니다.
  2. 특히 서버 측에서 성능을 유지하는 것이 중요합니다.

XMLRPC, SOAP 또는 기타 관련 기술의 유용성에 대한 의견을 환영합니다.

포인터가 있습니까?

답변

4

저는 PHP에 대한 실제 경험이 없지만 프론트 엔드 클라이언트가 다양한 언어와 환경에서 사용하는 많은 파이썬 백 엔드 웹 서비스를 수행했습니다. SOAP은 내가 시도한 기술 중에서 유일하게 입안에 신맛이 남았습니다. 너무 많은 "의식"/ 오버 헤드가 있습니다. (과거까지도 Corba를 사용해 보았습니다. 다른 언어에 대한 독립적 인 구현간에 상호 작용하려고하자마자 느낌이 전혀 다르지 않았습니다 .-)).

XML-RPC, JSON 및 프로토콜 버퍼가 모두 나를 위해 유용하다는 것이 입증되었습니다.

프로토콜 버퍼는 Google에서 일반적으로 사용하는 프로토콜이며, 이에 대한 정보가 부족하다는 점을 잘 모르겠습니다. 특정 질문을하고 설명서를 더 잘 만들 수있는 방법을 알려 드리겠습니다. 공식적으로 또는 비공식적으로! 그들의 가장 큰 장점은 와이어에 너무 "단단"하다는 것입니다. 유연성이 극대화되어 오버 헤드가 최소화됩니다. JSON은 훌륭한 점도 있습니다. Javascript 클라이언트에서 사용하기 쉽도록하기 위해서가 아닙니다. JS를 전혀 사용하지 않은 경우 다른 언어 간 통신을위한 기본 형식으로 사용하기도합니다. ?를 GET 한 outputformat = JSON 추가 매개 변수 - 당신은 당신의 웹 응용 프로그램이 (말) 프로토콜 버퍼를 방출하도록 설정하면

, 그것은 요청에 따라 XML 또는 JSON을 방출하는 것을 할 수 있도록 모든에 어렵지 않다 요청이 모두 필요하며 올바른 출력 serializer를 선택하는 것이 쉽습니다 (Python에서는 가능하지만 PHP에서도 그렇습니다).

C#에서 "강력하게 형식화 된 개체 가져 오기"는 내보기에 C# 계층에서 가장 잘 할 수있는 작업입니다. 직접적인 경험이 없지만, 예를 들어 은 완벽하게 형성되고 정적으로 유형이 지정된 객체 (또는 들어오는 데이터가 의미 상 올바르지 않은 경우 제기 된 예외)를 추출한 팩토리 클래스로 C의 프로토콜 버퍼 수신을으로 랩핑했습니다. JSON이나 XML에서는 그리 어렵지 않을 것이라는 것을 알고 있습니다. 신경 쓰면 Java, C#, Python, 또는 실제 세계에서 사용하는 다른 언어에 대해서는 더 어려울 것입니다. -)

+0

매우 진실 된 관점을 가져 주셔서 감사합니다. 그건 그렇고, "절약"은 희소 한 문서를 가지고있다 - 프로토콜 버퍼에 대해서는 언급하지 않았다. – gahooa

0

시나리오에 가장 적합한 방법으로 웹 서비스 소리를 사용하십시오.

+0

무엇? 나는 투표를 내려야합니까? C# 창 프런트 엔드를 사용하는 경우 SOAP에서 프록시를 생성하는 것은 쉽습니다. –

0

PHP SOAP 서버와 VB.Net 클라이언트를 사용하여이 작업을 수행했습니다. 일단 VB.Net/C# 클라이언트를 서버 (WSDL 파일의 위치)에 연결하면 C#이 자동으로 모든 기능과 노출 된 모든 객체를 감지합니다. 프로그래밍이 훨씬 쉬워졌습니다.

NuSOAP을 사용하는 것이 더 기능적이라고 생각합니다. http://sourceforge.net/projects/nusoap/

0

PHP/Java Bridge를 사용하는 것이 좋습니다. 이름이 당신을 속일 수 없도록하십시오. 이것은 PHP와 Python을 ECMA-335 가상 머신 (Java와 C#)에 연결하는 데 사용할 수 있습니다! ,

통신이 양방향으로 작동

는 JSR 223 인터페이스는 실행중인 PHP 서버 (아파치/IIS, FastCGI를 연결하는 데 사용할 수 있습니다 .. :

http://php-java-bridge.sourceforge.net/pjb/

는 귀하의 코멘트에 대답하려면 .) Java 구성 요소가 PHP 인스턴스를 호출하고 PHP 스크립트가 CLR (예 : VB.NET, C#, COM) 또는 Java (예 : Java, KAWA, JRuby) 기반 응용 프로그램을 호출하거나 요청을 보낸 환경으로 제어를 이전 할 수 있도록 . 필요한 경우 PHP 프론트 엔드를 자동으로 시작하거나 Java/.NET 백엔드를 시작하도록 브릿지를 설정할 수 있습니다.

+0

포인터 주셔서 감사. 내가 의도 한 용도는 C# 클라이언트 응용 프로그램을 PHP/또는/Python 백엔드 시스템에 연결하는 것이 었습니다. 그게 적용 되는가, 아니면 php-java-bridge의 사용법에서 뒤떨어 졌는가? – gahooa

관련 문제