2012-09-09 42 views
21

! Để đơn giản hóa mọi thứ, tôi sẽ tham khảo Ứng dụng Windows Store (còn được gọi là Giao diện người dùng hoặc Giao diện người dùng hiện đại) làm "ứng dụng" và phổ biến ứng dụng dành cho máy tính để bàn là "ứng dụng"!Giao tiếp giữa ứng dụng Windows Store và ứng dụng máy tính để bàn gốc

Tôi tin rằng đây vẫn là một trong những câu hỏi chưa rõ ràng nhất liên quan đến phát triển ứng dụng cho các nhà phát triển đã thiết lập ứng dụng trên thị trường: Làm cách nào để quản lý giao tiếp giữa ứng dụng và ứng dụng trên hệ thống Windows 8? (Xin đừng bắt đầu một cuộc tranh luận về nguyên tắc - có quá nhiều trường hợp sử dụng mà điều này thực sự được yêu cầu!)

Tôi đọc rất nhiều bài viết trong vài ngày gần đây nhưng vẫn chưa rõ cách tiếp tục làm như thế nào kể từ lần đầu tiên. Chủ yếu là vì tôi đã tìm thấy một số thông tin xung đột. Với câu hỏi của tôi ở đây tôi muốn tiếp cận lại vấn đề này từ quan điểm của các khả năng Windows 8 cuối cùng.

tình Given:

  • App và ứng dụng chạy trên cùng một hệ thống
  • 1: 1 thông tin liên lạc
  • ứng dụng được nguồn gốc (viết bằng Delphi)
  • Administrator hoặc nếu có yêu cầu thậm chí đặc quyền hệ thống có sẵn cho ứng dụng
  • Trong 90% trường hợp sử dụng, ứng dụng yêu cầu một ứng dụng sẽ thực hiện một hành động và eives một số kết quả văn bản. Các ứng dụng không nên được trái hoặc đông lạnh cho điều này!
  • Trong 10% ứng dụng thực hiện một hành động (được kích hoạt bởi một số sự kiện) và thông báo cho ứng dụng - kết quả có thể là: hiển thị thông tin nhất định trên ô hoặc trong ứng dụng đang chạy và đang hoạt động hoặc nếu có thể chạy ứng dụng/đưa nó đến nền trước.

Bây giờ, câu hỏi "đơn giản" là cách đạt được điều này?

  • Truy cập máy chủ web cục bộ có thực sự được phép bây giờ không? (Tôi tin rằng nó không phải là một thời gian dài nhưng bây giờ là kể từ khi phát hành cuối cùng)
  • WCF? (-> rõ ràng là MS doesn't recommend that anymore)
  • Yêu cầu HTTP trên máy chủ REST/SOAP cục bộ?
  • WinRT syndication API? (một dạng truy cập dịch vụ web khác có phản hồi RSS/atom)
  • WebSockets (như MessageWebSocket)?
  • Một số hình thức giao tiếp TCP/IP khác?
  • Chia sẻ tệp văn bản cho đầu vào và đầu ra (thực sự chỉ đơn giản là suy nghĩ về điều này, nhưng ít nhất đó là khả năng MS không thể chặn ...)
  • Ống có tên không được phép, phải không?

Có một số cuộc thảo luận về chủ đề này ở đây trên SO, tuy nhiên hầu hết chúng không được cập nhật nữa vì MS đã thay đổi rất nhiều trước khi phát hành phiên bản cuối cùng của Windows 8.Thay vì trộn lẫn thông tin cũ và mới, tôi muốn tìm câu trả lời rõ ràng và hiện tại cho vấn đề này cho tôi và cho tất cả các nhà phát triển ứng dụng và ứng dụng Windows khác. Cảm ơn bạn!

+0

Tôi sẽ không tính vào việc có thể giao tiếp thông qua tệp cục bộ. AFAIK, WinRT và máy tính để bàn hiện đang chia sẻ cùng một mã thông báo bảo mật, nhưng một hệ thống phân tách mã thông báo tương tự như UAC sẽ hợp lý và có thể được giới thiệu trong các phiên bản tương lai của Windows. (NB: Tôi * suy đoán * ở đây, điều này không dựa trên thông tin nhận được.) Bên cạnh đó, nếu MS thực hiện bất kỳ loại kiểm tra ứng dụng Windows Store, bạn sẽ không bị đuổi ra khi họ nhận thấy những gì bạn đang làm không? –

+0

@Harry Vâng tôi đoán không có cách nào xung quanh thử nó ra ... Nó thực sự rất buồn để xem cách MS khôn ngoan xử lý toàn bộ kịch bản này mang lại các ứng dụng và ứng dụng với nhau. Một mặt họ cố gắng kết hôn cả hai thế giới trong một thiết bị - trong khi chỉ ra rằng đây thực sự là lý do tốt nhất để chọn một máy tính bảng Win8. Mặt khác, họ làm mọi thứ để giữ cho những thế giới đó có thể tách rời nhau nhất. Thật ngốc nghếch thế nào? Đánh tôi. – CodeX

Trả lời

11

Nếu bạn đang nói về một ứng dụng đi vào Cửa hàng, việc liên lạc với hệ thống cục bộ thông qua bất kỳ cơ chế nào đều không được phép. Giao tiếp với hệ thống cục bộ được hỗ trợ trong một số trường hợp gỡ lỗi để giúp phát triển ứng dụng dễ dàng hơn.

Bạn có thể khởi chạy ứng dụng dành cho máy tính để bàn từ các ứng dụng Windows Store với các trình xử lý tệp hoặc giao thức, nhưng không có giao tiếp trực tiếp.

Vì vậy, để nhắc lại điểm ... giao tiếp giữa WinRT và máy tính để bàn không được phép cho các ứng dụng Windows Store được phát hành. Giao tiếp giữa hai môi trường chỉ được phép gỡ lỗi.

PG đã đăng ở nhiều vị trí khác nhau vì sao truyền thông không được phép, từ bảo mật đến vòng đời của WinRT (tức là ứng dụng của bạn bị tạm ngưng - cách xử lý lại: tài nguyên, ổ cắm, ứng dụng từ xa, v.v. - rất nhiều điểm thất bại và thực tế là ứng dụng Cửa hàng không thể phụ thuộc vào các chương trình bên ngoài (nghĩa là tôi cần ứng dụng/dịch vụ trên máy tính để bàn của bạn chạy ứng dụng, nhưng làm cách nào để cài đặt ứng dụng/dịch vụ của bạn? không thể tích hợp vào ứng dụng Cửa hàng. Bạn có thể cung cấp một mục nhập ứng dụng dành cho máy tính để bàn khác, nhưng đó là trải nghiệm người dùng xấu.) Tất nhiên, đó là tóm tắt cấp cao.

+2

Nó có thể được thực hiện thông qua một tập tin - đó là không bị chặn. Không nói nó đẹp, nhưng có thể. Tôi cũng thoug một tên ống sẽ làm việc, nhưng Im không chắc chắn về điều đó. –

+1

Jeff, bạn chắc chắn thế nào về điều này? Điều vô lý là người ta không thể thử nó vì hành vi rõ ràng là khác nhau để phát triển và cài đặt ứng dụng từ cửa hàng ... Và vì có rất nhiều trường hợp sử dụng hữu ích cho kịch bản này, nói rằng "Không thể" về cơ bản không phải là giải pháp . Trong các nhà phát triển cuối cùng sẽ thực sự làm việc xung quanh điều này bằng cách đi qua các lệnh và kết quả thông qua các tập tin văn bản trong localStorage. Đó thực sự là giải pháp duy nhất MS sẽ cho phép? – CodeX

+0

@DominicHopton chính xác trên các tệp, mặc dù đó không phải là giao tiếp trực tiếp thực sự :) AFAIK có tên là đường ống không hoạt động. Đó là dựa trên các báo cáo được thực hiện bởi PG trước đó. Có lẽ một cái gì đó đã thay đổi, nhưng tôi không biết về bất kỳ thay đổi nào. –

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