2012-06-26 37 views
7

Tôi đang tham gia dự án này:PHP tới C# và ngược lại

Trang web sẽ được nhân viên front-end sử dụng để truy vấn và cập nhật dữ liệu từ SQL DB. Tôi đang làm việc với studio trực quan và mã phía sau (C#) gần như đã hoàn tất, vì vậy tương tác giữa SQL và C# là ok. Ý tưởng ban đầu của tôi là làm việc với ASP.NET vốn quen thuộc với tôi, nhưng điều đó sẽ không thể thực hiện được. Tôi phải chuyển sang PHP. Vì vậy, hôm nay là ngày đầu tiên tôi học PHP, kiểm tra http://php.net/manual/en/index.php và rất nhiều thứ có vẻ khá giống với ASP.NET nên tôi đoán nó sẽ không quá khó.

Dù sao, một số câu hỏi xuất hiện khá nhanh khi tôi muốn viết kịch bản gì đó khác với "hello world".

Có cách nào dễ dàng để nhận/gửi biến C# từ lớp của tôi bằng trang php không? Tôi đã đọc bài viết về việc sử dụng XML để làm như vậy, nhưng tôi vẫn đang gãi đầu, có cách nào khác, dễ dàng hơn, để làm điều này không?

+4

Có thể tạo C# WebService và sử dụng nó qua PHP. – canon

+0

Sẽ điều tra tùy chọn thứ 2 của bạn, cảm ơn rất nhiều sự chống đối. –

+2

Nếu không có khởi động lại mọi thứ trong PHP ... Tôi thứ hai triển khai lại C# như một Dịch vụ Web ... đó là tùy chọn duy nhất bạn có nếu bạn không muốn bin thực sự mã ... để làm cho PHP thứ dễ dàng tôi muốn áp dụng một cách tiếp cận RESTfull cho Dịch vụ Web. – Brian

Trả lời

11

Bạn có các tùy chọn.

  1. tích hợp trực tiếp. PHP có thể khởi tạo và sử dụng các đối tượng .NET. Xem thư viện DOTNET trong PHP. Vì vậy, nếu bạn chạy PHP trên Windows, và bạn trưng ra logic .NET của bạn theo các yêu cầu của cơ sở hạ tầng PHP DOTNET, thì bạn có thể chỉ cần gọi các lớp .NET trực tiếp từ PHP. Một số hạn chế: PHP được xây dựng để tích hợp với thời gian chạy .NET 2.0. Bạn không thể xây dựng các đối tượng .NET 4.0 và kết nối chúng với PHP.

  2. giao thức mạng đồng bộ. Như những người khác đã gợi ý bạn có thể trưng ra logic C# của bạn thông qua giao diện dịch vụ web hoặc IMRE, sau đó gọi các dịch vụ đó từ PHP bằng cách sử dụng thư viện curl hoặc file_get_contents(). C# logic có thể được, nhưng không cần phải được, công khai tiếp xúc. Nói cách khác, bạn có thể làm cho nó chỉ có thể truy cập từ bên trong tường lửa của ứng dụng của bạn, do đó không thể truy cập công cộng ẩn danh. mặt khác, kiến ​​trúc của bạn có thể yêu cầu quyền truy cập vào cùng một API từ ứng dụng của bên thứ ba hoặc của người dùng. Trong trường hợp đó, nó cần phải được tiếp xúc công khai.

    trong cả hai trường hợp, công khai hoặc riêng tư, bạn sẽ muốn sử dụng WCF hoặc ASPNET MVC để hiển thị các dịch vụ này được triển khai trong C#.

  3. cơ chế không đồng bộ. PHP có thể kết nối với MSMQ. Xem Using PHP to Open MSMQ Queues. Tất nhiên C# có thể làm tương tự như vậy. Bạn có thể sử dụng MSMQ như một cơ chế truyền thông đệm giữa hai thế giới. Để làm điều này, bạn cần phải đưa ra một giao thức tuần tự hóa dữ liệu, cho các thư bạn đặt và nhận được trên hàng đợi. JSON hoặc XML sẽ là lựa chọn thích hợp ở đây.

  4. Cơ sở dữ liệu. Nếu bạn lo lắng về việc sử dụng MSMQ vì nó là "một phần cơ sở hạ tầng để quản lý" bạn cũng có thể sử dụng cơ sở dữ liệu như một sự chuyển đổi giữa chúng. Một cơ sở dữ liệu được chia sẻ có thể được truy cập bởi cả PHP và C# và được sử dụng như một hàng đợi thông báo hoặc đường truyền thông. PHP chèn các thông điệp vào một bảng MySQL và ứng dụng C# có thể đọc và xử lý chúng, sau đó đặt các thư trả lời trong một bảng khác. Điều này sẽ yêu cầu một số công việc của bạn để thiết kế các định dạng tin nhắn, giao thức, chỉ mục, và yêu cầu/trả lời cơ chế tương quan. Nhưng nó dựa trên công nghệ đã được chứng minh, hiện tại mà bạn đã biết cách sử dụng.

  5. Cuối cùng, có Phalanger. Điều này cho phép bạn biên dịch PHP trên .NET Framework. Điều này có nghĩa là sự tích hợp giữa C# và PHP sẽ đơn giản. Tôi đã không thử điều này nhưng nó có thể đáp ứng yêu cầu của bạn.

+0

cảm ơn rất nhiều câu trả lời của bạn, tất cả đều có ý tưởng hay nhưng đoán tôi sẽ thử thư viện dotnet đầu tiên kể từ khi tôi đồng ý với .net. Cảm ơn một lần nữa! –

Các vấn đề liên quan