2011-02-06 60 views
9

Từ này không bao giờ có ý nghĩa với tôi. Tôi sẽ không hiểu tại sao chúng ta có thể đặt tên cho quy ước đặt tên này và tôi đã thấy nhiều lần từ này được sử dụng trong các mã khác không phải về các đối tượng Cơ sở dữ liệu.Context có nghĩa là gì?

Ai đó có thể giải thích ý nghĩa của từ này trong lập trình cho người không phải là tiếng Anh và có thể đưa ra một số ví dụ về việc sử dụng chung trong khu vực lập trình?

+28

Tùy thuộc vào ngữ cảnh. –

+3

Tôi nghĩ dictionary.com có ​​định nghĩa tốt - 'tập hợp các trường hợp hoặc sự kiện bao quanh một sự kiện cụ thể, tình huống ' –

Trả lời

5

trong .NET AFAIK, Chúng tôi có Httpcontext trong web và ObjectContext trong khung thực thể. Tôi không biết về bất kỳ việc sử dụng ngữ cảnh nào khác trong .NET framework, nhưng có thể có nhiều cách sử dụng hơn. Vì vậy, đây là một lời giải thích đơn giản về hai tôi biết.

  • HttpContext:
    Đóng gói tất cả các thông tin HTTP cụ thể về một yêu cầu HTTP cá nhân. Các thuộc tính của lớp này bao gồm đối tượng Request, đối tượng Response, đối tượng Session và thuộc tính AllErrors giữ một mảng các đối tượng ngoại lệ xảy ra trong yêu cầu hiện tại. Nó chỉ đơn giản là một lớp bao bọc.

  • ObjectContext: Trích dẫn từ: http://cgeers.wordpress.com/2009/02/21/entity-framework-objectcontext/#objectcontext

    mọi đối tượng trả về bởi một truy vấn (LINQ to Entities, Đối tượng SQL ...) được tự động gắn liền với một bối cảnh đối tượng. Ngữ cảnh này theo dõi các thay đổi được áp dụng cho các đối tượng này để sau này nó có thể tìm ra cách duy trì những thay đổi này đối với kho lưu trữ dữ liệu bên dưới.
    Ngữ cảnh đối tượng này được đại diện bởi một lớp được đặt tên phù hợp với ObjectContext. ObjectContext gói gọn một vài điều, cụ thể là:

    • Kết nối với các cửa hàng dữ liệu cơ bản (cơ sở dữ liệu)
    • Metadata mô tả mô hình dữ liệu Entity (EDM)
    • Một ObjectStateManager cho những thay đổi theo dõi để các đối tượng

Vì vậy, nó có vẻ như nó được sử dụng cơ bản khi chúng ta muốn quản lý một số đối tượng một cách logic tương đối. Các đối tượng mà chúng ta có thể đặt trong một ngữ cảnh logic. (ví dụ: các thực thể trong EF hoặc Yêu cầu/Phản hồi/Phiên/etc trong HttpContext)

+1

Nó cũng thường ngụ ý một số khái niệm về thời gian, với ngày kết thúc xác định. –

+1

Có nhiều bối cảnh phía sau cảnh như ControllerContext, ViewContext ..etc – Freshblood

+0

Một số khác, [SynchronizationContext] (http://msdn.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx) được sử dụng với async/multithreaded lập trình và "bối cảnh" có một ý nghĩa kỹ thuật, ở đây. "[Đó là tất cả về SynchronizationContext] (http://msdn.microsoft.com/en-us/magazine/gg598924.aspx)" nói, "Thực tế 'bối cảnh' của SynchronizationContext không được xác định rõ ràng. host được tự do định nghĩa ngữ cảnh của riêng mình ", và sau đó nhảy vào các triển khai. Tôi chưa tìm thấy một bài viết chỉ đơn giản là nói những gì "bối cảnh" đại diện khái niệm. – Vimes

14

Thứ gì đó thường được gọi là "ngữ cảnh" trong lập trình máy tính khi có thứ gì đó đóng gói một số trạng thái.

Trong ví dụ về Linq 2 sql hoặc EF, bạn có một Ngữ cảnh dữ liệu, hoặc Ngữ cảnh đối tượng .. chúng đóng gói trạng thái của mô hình dữ liệu của bạn, bao gồm các kết nối và phiên bản.

Trong trường hợp của HttpContext, nó đóng gói trạng thái của kết nối Http (thường được coi là không trạng thái, nhưng HttpContext cố gắng cung cấp trạng thái cho nó).

Trong tiếng Anh, nếu chúng tôi đề cập đến ngữ cảnh, chúng tôi tham khảo thông tin xung quanh một cái gì đó cho phép bạn hiểu toàn bộ tình huống trong đó có điều gì đó tồn tại. Ví dụ, chúng tôi có thể nói một tuyên bố là "đưa ra khỏi bối cảnh". Điều đó có nghĩa là một tuyên bố của chính nó không nhất thiết phải tiết lộ tất cả các thông tin.

Out of bối cảnh:

dân là ngon.

Trong bối cảnh:

Chúng tôi không bao giờ nên nói hoặc nghĩ rằng mọi người đang ngon.

Nếu không có "ngữ cảnh", tuyên bố có ý nghĩa khác. Lập trình đã sử dụng thuật ngữ tương tự để chỉ các dữ liệu xung quanh một cái gì đó mang lại cho nó ý nghĩa hơn.

0

Tôi biết điều này là cũ tuy nhiên từ ngữ đã xuất hiện nhiều hơn trong ngôn ngữ như của muộn. According to the MSDN ngữ cảnh là:

Xác định môi trường cho các đối tượng cư trú bên trong và chính sách có thể được thực thi.

Từ đây, tôi giải thích rằng đó là vùng chứa phải tuân thủ một bộ quy tắc toàn cầu trong đó Bối cảnh sẽ tồn tại. DbContext, HttpContext, và ViewContext để đặt tên một vài là rất dễ dàng để đóng gói vào định nghĩa đó.

Điều này cũng ngụ ý rằng bạn có thể xác định, mở rộng, ngữ cảnh của riêng bạn ở đầu ngữ cảnh hiện có. Một ví dụ là lấy HttpContext và lấy ra một RestfulContext để thiết lập HttpContext để xử lý các chính sách Restful trên Http. Tương tự như vậy, bạn có thể lấy được một HateOasContext sẽ tinh chỉnh thêm chính sách nào được áp dụng cho các đối tượng bên trong Ngữ cảnh.