2012-06-26 21 views
7

jestem w tym projekcie:PHP do C# i odwrotnie

stronę internetową, która jest gonna być wykorzystywane przez ludzi firmowych front-end do kwerendy i aktualizacji danych z SQL DB. Pracuję z visual studio, a kod za (C#) jest prawie gotowy, więc interakcje między SQL i C# są w porządku. Mój oryginalny pomysł polegał na pracy z ASP.NET, która jest mi znana, ale to nie będzie możliwe. Muszę przełączyć się na PHP. Więc dzisiaj jest mój pierwszy dzień nauki PHP, sprawdzanie http://php.net/manual/en/index.php i wiele rzeczy wydaje się być bardzo podobnych do ASP.NET, więc myślę, że to nie będzie takie trudne.

Anyways, kilka pytań pojawiło się dość szybko, jak chciałem czegoś innego skryptu niż „Hello World”.

Czy istnieje prosty sposób na uzyskanie/wysyłanie C# zmienne z mojej klasy za pomocą strony PHP? Czytałem już o używaniu XML-a, ale wciąż dręczę sobie głowę, czy jest inny, łatwiejszy sposób na zrobienie tego?

+4

Może utworzyć C# WebService i skonsumować go za pomocą PHP. – canon

+0

Przeanalizuję twoją drugą opcję, dziękuję za dużo antysanizmu. –

+2

Bez ponownego rozpoczynania wszystkiego w PHP ... Po drugie, ponownie wdrażam C# jako usługę sieciową ... jest to jedyna opcja, jeśli nie chcesz binować kodu naprawdę ... aby utworzyć PHP rzeczy łatwe Wdałbym RESTfull podejście do usługi sieciowej. – Brian

Odpowiedz

11

Masz opcje.

  1. bezpośrednia integracja. PHP może tworzyć wystąpienia i używać obiektów .NET. Zobacz bibliotekę DOTNET w PHP. Jeśli więc uruchomisz PHP w systemie Windows i wystawisz swoją logikę .NET zgodnie z wymaganiami infrastruktury PHP DOTNET, możesz po prostu wywołać klasy .NET bezpośrednio z PHP. Niektóre ograniczenia: PHP jest zbudowany w celu integracji z środowiskiem wykonawczym .NET 2.0. Nie można budować obiektów .NET 4.0 i łączyć się z nimi z PHP.

  2. synchronicznych protokołów sieciowych. Jak inni sugerują, możesz wystawić swoją logikę C# poprzez AREST lub interfejs usług internetowych, a następnie wywołać te usługi z PHP za pomocą biblioteki curl lub file_get_contents(). Logika C# może być, ale nie musi, być publicznie ujawniona. Innymi słowy, możesz udostępnić go tylko z poziomu zapory sieciowej aplikacji, aby żaden anonimowy publiczny dostęp nie był możliwy. z drugiej strony Twoja architektura może wymagać dostępu do tego samego interfejsu API z aplikacji zewnętrznych lub użytkowników. W takim przypadku musi zostać ujawnione publicznie.

    w każdym przypadku, publiczne lub prywatne, będziemy chcieli użyć WCF lub ASPNET MVC narażać tych usług realizowanych w języku C#.

  3. asynchroniczne mechanizmy. PHP może połączyć się z MSMQ. Zobacz Using PHP to Open MSMQ Queues. Oczywiście C# może zrobić podobnie. Możesz użyć MSMQ jako buforującego mechanizmu komunikacji między dwoma światami. Aby to zrobić, musisz wymyślić protokół serializacji danych dla wiadomości, które umieścisz i dostaniesz się do kolejki. JSON lub XML byłyby właściwym wyborem tutaj.

  4. Baza danych. Jeśli obawiasz się o używanie MSMQ, ponieważ jest to "jeszcze jedna infrastruktura do zarządzania", możesz także użyć bazy danych jako pośrednika. Dostęp do współużytkowanej bazy danych można uzyskać zarówno za pomocą PHP, jak i C#, i wykorzystany jako kolejka komunikatów lub kanał komunikacyjny. PHP wstawia wiadomości w tabeli MySQL, a aplikacja C# może je czytać i przetwarzać, a następnie umieszczać wiadomości odpowiedzi w innej tabeli. Wymagałoby to trochę pracy, aby zaprojektować formaty wiadomości, protokoły, indeksy i mechanizm korelacji żądań/odpowiedzi. Ale opiera się na sprawdzonej, istniejącej technologii, z której już wiesz, jak ją wykorzystać.

  5. Wreszcie istnieje Phalanger. Pozwala to na kompilację PHP do platformy .NET Framework. Oznacza to, że integracja języka C# i PHP będzie prosta. Nie próbowałem tego, ale może spełnić twoje wymagania.

+0

wielkie dzięki za odpowiedź, wszystkie wydają się dobrymi pomysłami ale domyślam się, że spróbuję najpierw biblioteki dotnet, ponieważ jestem w porządku z .net. Dzięki jeszcze raz! –

Powiązane problemy